daydream reports: Would anyone consider daytime ... #4103

Open
opened 2023-04-02 00:35:44 +00:00 by yourland-report · 8 comments

daydream reports a bug:

Would anyone consider daytime 30 minutes and night 15 instead of having them be evenly spaced?

Player position:

{
	x = 2121.2561035156,
	z = 1393.0080566406,
	y = 29130.625
}

Player look:

{
	x = -0.9317193031311,
	z = 0.32865956425667,
	y = -0.15453796088696
}

Player information:

{
	lang_code = "",
	formspec_version = 6,
	protocol_version = 41,
	min_rtt = 0.16599999368191,
	avg_rtt = 0.17399999499321,
	min_jitter = 0,
	max_jitter = 4.1600003242493,
	avg_jitter = 0.0010000020265579,
	minor = 7,
	serialization_version = 29,
	patch = 0,
	max_rtt = 4.3319997787476,
	version_string = "5.7.0-56d2567b5-56d2567b5",
	state = "Active",
	connection_uptime = 8972,
	ip_version = 6,
	major = 5
}

Player meta:

{
	fields = {
		inflicted_damage = "2192674",
		xp = "1438480",
		jointime = "1650064821",
		bitten = "0",
		["stamina:poisoned"] = "no",
		["stamina:level"] = "11",
		["petz:werewolf"] = "0",
		["ocean_build.last_warning"] = "1.65235e+09",
		["3d_armor_inventory"] = "return {\"3d_armor:helmet_nether 1 80\", \"shields:shield_rainbow 1 32\", \"3d_armor:chestplate_nether 1 160\", \"3d_armor:leggings_nether 1 160\", \"3d_armor:boots_crystal 1 60\", \"\"}",
		["ocean_build.ocean_built"] = "8",
		["petz:old_override_table"] = "return {[\"speed\"] = 2, [\"sneak\"] = true, [\"jump\"] = 1.5, [\"gravity\"] = 1, [\"new_move\"] = true, [\"sneak_glitch\"] = false}",
		yl_commons_thankyou = "319",
		placed_nodes = "255265",
		["petz:werewolf_vignette_id"] = "19",
		played_time = "18048884",
		hud_state = "on",
		["stamina:exhaustion"] = "96",
		partychat = "party",
		["petz:werewolf_clan_idx"] = "1",
		arenalib_infobox_arenaID = "0",
		["unified_inventory:bags"] = "return {\"water_life:croc_bag\", \"water_life:croc_bag\", \"water_life:croc_bag\", \"water_life:croc_bag\"}",
		digged_nodes = "1703686",
		xp_redo_hud_color = "0xFFC001",
		died = "260",
		yl_commons_player_joined = "1680386804",
		crafted = "2707",
		["petz:lycanthropy"] = "0",
		yl_church = "return {[\"last_death_portal\"] = 1680203646, [\"last_death\"] = {[\"z\"] = 410, [\"x\"] = 2748, [\"y\"] = 48}, [\"last_heal\"] = 1673944229}",
		["signslib:pos"] = "(3438,47,981)",
		repellant = "0",
		punch_count = "106967",
		yl_commons_player_created = "1650064821"
	}
}

Log identifier


[MOD] yl_report log identifier = Cm5Bg1j3RpiEXLsWpqRQ5rC5qN0yLfHE

Profiler save:

profile-20230402T003544.json_prettyEE

Status:

# Server: version: 5.6.1-yl | game: Minetest Game | uptime: 1d 17h 21min 8s | max lag: 0.798s | clients (18/52): AliasAlreadyTaken, Aliza, AmazingAnubis, Bailiff, Barlog4, DanteLives, daydream, Ernesto, flux, jackofthebean000, labrat, Lupercus, mahou, MineWorlds, mob, niceride, noface, Service

Teleport command:

/teleport xyz 2121 29131 1393

Compass command:

/give_compass Construction Cm5Bg1j3RpiEXLsWpqRQ5rC5qN0yLfHE D2691E 2121 29131 1393
daydream reports a bug: > Would anyone consider daytime 30 minutes and night 15 instead of having them be evenly spaced? Player position: ``` { x = 2121.2561035156, z = 1393.0080566406, y = 29130.625 } ``` Player look: ``` { x = -0.9317193031311, z = 0.32865956425667, y = -0.15453796088696 } ``` Player information: ``` { lang_code = "", formspec_version = 6, protocol_version = 41, min_rtt = 0.16599999368191, avg_rtt = 0.17399999499321, min_jitter = 0, max_jitter = 4.1600003242493, avg_jitter = 0.0010000020265579, minor = 7, serialization_version = 29, patch = 0, max_rtt = 4.3319997787476, version_string = "5.7.0-56d2567b5-56d2567b5", state = "Active", connection_uptime = 8972, ip_version = 6, major = 5 } ``` Player meta: ``` { fields = { inflicted_damage = "2192674", xp = "1438480", jointime = "1650064821", bitten = "0", ["stamina:poisoned"] = "no", ["stamina:level"] = "11", ["petz:werewolf"] = "0", ["ocean_build.last_warning"] = "1.65235e+09", ["3d_armor_inventory"] = "return {\"3d_armor:helmet_nether 1 80\", \"shields:shield_rainbow 1 32\", \"3d_armor:chestplate_nether 1 160\", \"3d_armor:leggings_nether 1 160\", \"3d_armor:boots_crystal 1 60\", \"\"}", ["ocean_build.ocean_built"] = "8", ["petz:old_override_table"] = "return {[\"speed\"] = 2, [\"sneak\"] = true, [\"jump\"] = 1.5, [\"gravity\"] = 1, [\"new_move\"] = true, [\"sneak_glitch\"] = false}", yl_commons_thankyou = "319", placed_nodes = "255265", ["petz:werewolf_vignette_id"] = "19", played_time = "18048884", hud_state = "on", ["stamina:exhaustion"] = "96", partychat = "party", ["petz:werewolf_clan_idx"] = "1", arenalib_infobox_arenaID = "0", ["unified_inventory:bags"] = "return {\"water_life:croc_bag\", \"water_life:croc_bag\", \"water_life:croc_bag\", \"water_life:croc_bag\"}", digged_nodes = "1703686", xp_redo_hud_color = "0xFFC001", died = "260", yl_commons_player_joined = "1680386804", crafted = "2707", ["petz:lycanthropy"] = "0", yl_church = "return {[\"last_death_portal\"] = 1680203646, [\"last_death\"] = {[\"z\"] = 410, [\"x\"] = 2748, [\"y\"] = 48}, [\"last_heal\"] = 1673944229}", ["signslib:pos"] = "(3438,47,981)", repellant = "0", punch_count = "106967", yl_commons_player_created = "1650064821" } } ``` Log identifier ``` [MOD] yl_report log identifier = Cm5Bg1j3RpiEXLsWpqRQ5rC5qN0yLfHE ``` Profiler save: ``` profile-20230402T003544.json_prettyEE ``` Status: ``` # Server: version: 5.6.1-yl | game: Minetest Game | uptime: 1d 17h 21min 8s | max lag: 0.798s | clients (18/52): AliasAlreadyTaken, Aliza, AmazingAnubis, Bailiff, Barlog4, DanteLives, daydream, Ernesto, flux, jackofthebean000, labrat, Lupercus, mahou, MineWorlds, mob, niceride, noface, Service ``` Teleport command: ``` /teleport xyz 2121 29131 1393 ``` Compass command: ``` /give_compass Construction Cm5Bg1j3RpiEXLsWpqRQ5rC5qN0yLfHE D2691E 2121 29131 1393 ```
AliasAlreadyTaken was assigned by yourland-report 2023-04-02 00:35:44 +00:00
AliasAlreadyTaken added the
1. kind/enhancement
label 2023-04-02 02:03:10 +00:00

Since the night in YL serves a purpose, I'm not too happy to change that. Especially since MT doesn't allow changing day/nighttime without actually changing ingame time. This would then affect NPCs and their schedules

Since the night in YL serves a purpose, I'm not too happy to change that. Especially since MT doesn't allow changing day/nighttime without actually changing ingame time. This would then affect NPCs and their schedules
AliasAlreadyTaken added the
2. prio/controversial
label 2023-04-02 02:04:39 +00:00
Member

it's easy to control the length of "a day", but i don't think there's any simple way to control the day/night ratio.

it's easy to control the length of "a day", but i don't think there's any simple way to control the day/night ratio.
Member

This would then affect NPCs and their schedules

NPC shedules are overly optimistic I'm afraid. I wanted mine (in mg_villages) to go to bed at night and work at day, but...even in a singleplayer game the paths may get too long for them, and it's also expensive and complex.

In a multiplayer game, having NPC behaving considerably diffrent at night is a problem. It...makes the game more annoying than anything else I'm afraid.

> This would then affect NPCs and their schedules NPC shedules are overly optimistic I'm afraid. I wanted mine (in mg_villages) to go to bed at night and work at day, but...even in a singleplayer game the paths may get too long for them, and it's also expensive and complex. In a multiplayer game, having NPC behaving considerably diffrent at night is a problem. It...makes the game more annoying than anything else I'm afraid.

I do like to learn from past experiences, but "has never been achieved in a non-annoying way" is not good enough to have me not at least try.

The plan is to use the async environment to calculate schedule, then only send "commands" to the NPCs what they should be doing right now.

I do like to learn from past experiences, but "has never been achieved in a non-annoying way" is not good enough to have me not at least try. The plan is to use the async environment to calculate schedule, then only send "commands" to the NPCs what they should be doing right now.
Member

I do like to learn from past experiences, but "has never been achieved in a non-annoying way" is not good enough to have me not at least try.

The plan is to use the async environment to calculate schedule, then only send "commands" to the NPCs what they should be doing right now.

too bad minetest.find_path isn't in the async environment... i wonder if there's a reason for that, or if it was just forgotten.

EDIT: dur. it needs access to the map, which you can't get in the async environment. though you can pass in voxelmanip regions. i wonder how fast a pathing algorithm written in lua over such a region might be.

> I do like to learn from past experiences, but "has never been achieved in a non-annoying way" is not good enough to have me not at least try. > > The plan is to use the async environment to calculate schedule, then only send "commands" to the NPCs what they should be doing right now. too bad `minetest.find_path` isn't in the async environment... i wonder if there's a reason for that, or if it was just forgotten. EDIT: dur. it needs access to the map, which you can't get in the async environment. though you can pass in voxelmanip regions. i wonder how fast a pathing algorithm written in lua over such a region might be.

Let's move mobs discussion into your-land/administration#144

Let's move mobs discussion into https://gitea.your-land.de/your-land/administration/issues/144
Member

The trouble isn't the implementation and its efficiency alone. Imagine our airship NPC following a sleep cycle. The player wants to travel somewhere? Bad luck. NPC is asleep. Wait until day. While there certainly could be exceptions for some important NPC, it'll be even odder if those never go to sleep while others do. And even a less important NPC may have a job where the player needs it outside sleep mode. Having to wait for them to wake up is just annoying I'm afraid.

too bad minetest.find_path isn't in the async environment... i wonder if there's a reason for that, or if it was just forgotten.

Sadly it's pretty useless for NPC anyway. minetest.find_path is good for most mobs but failes for those 2 nodes high ones. The path at feet level may be free - but at eye level obstacles block the path. There's at least one more suitable pathfinder implemented in lua. That is also useful for finding paths through doors. NPC have other needs.

EDIT: dur. it needs access to the map, which you can't get in the async environment. though you can pass in voxelmanip regions. i wonder how fast a pathing algorithm written in lua over such a region might be.

Feel free to play around with my mob_world_interaction mod. mob_world_interaction.find_path(pos, endpos, entity, data) is an implementation of a pathfinder by burli. data has the structure similar to voxelmanip:

local t = data.scm_data_cache[y][x][z]
local node = { name = data.nodenames[ t[1] ], param2 = t[2] }

My plan was to use the pathfinder for anything inside the house (i.e. walking to bed or workplace) on the already stored data of the schematic of a spawned house in mg_villages.

While things change due to player interaction, they usually don't change every second. If a player doesn't deliberately or by accident blocks the path of an NPC, not that much will change in the NPC's world.

Very impressive pathfinding: https://www.youtube.com/watch?v=agVkNMBBvaI

Now imagine Voices' Scouts beeing that intelligent. Hm. Disturbing thought. Perhaps better not :-) But the standard grid-based pathfinders may not be the solution for NPC either.

The trouble isn't the implementation and its efficiency alone. Imagine our airship NPC following a sleep cycle. The player wants to travel somewhere? Bad luck. NPC is asleep. Wait until day. While there certainly could be exceptions for some important NPC, it'll be even odder if those never go to sleep while others do. And even a less important NPC may have a job where the player needs it outside sleep mode. Having to wait for them to wake up is just annoying I'm afraid. > too bad minetest.find_path isn't in the async environment... i wonder if there's a reason for that, or if it was just forgotten. Sadly it's pretty useless for NPC anyway. minetest.find_path is good for most mobs but failes for those 2 nodes high ones. The path at feet level may be free - but at eye level obstacles block the path. There's at least one more suitable pathfinder implemented in lua. That is also useful for finding paths through doors. NPC have other needs. > EDIT: dur. it needs access to the map, which you can't get in the async environment. though you can pass in voxelmanip regions. i wonder how fast a pathing algorithm written in lua over such a region might be. Feel free to play around with my mob_world_interaction mod. mob_world_interaction.find_path(pos, endpos, entity, data) is an implementation of a pathfinder by burli. data has the structure similar to voxelmanip: ``` local t = data.scm_data_cache[y][x][z] local node = { name = data.nodenames[ t[1] ], param2 = t[2] } ``` My plan was to use the pathfinder for anything inside the house (i.e. walking to bed or workplace) on the already stored data of the schematic of a spawned house in mg_villages. While things change due to player interaction, they usually don't change every second. If a player doesn't deliberately or by accident blocks the path of an NPC, not that much will change in the NPC's world. Very impressive pathfinding: https://www.youtube.com/watch?v=agVkNMBBvaI Now imagine Voices' Scouts beeing that intelligent. Hm. Disturbing thought. Perhaps better not :-) But the standard grid-based pathfinders may not be the solution for NPC either.
Member

Bad luck. NPC is asleep. Wait until day.

pretty much all ships/submarines, and even IRL airships like the hindenburg, operate on shifts - you work 8 or 12 hours, then a fresh crew takes over.

mob_world_interaction

i'm gonna have to play w/ this, particularly when i get back to working on a mob API and not what i got distracted by (balanced diet/more involved stamina)

> Bad luck. NPC is asleep. Wait until day. pretty much all ships/submarines, and even IRL airships like the hindenburg, operate on shifts - you work 8 or 12 hours, then a fresh crew takes over. > [mob_world_interaction](https://github.com/Sokomine/mob_world_interaction/) i'm gonna have to play w/ this, particularly when i get back to working on a mob API and not what i got distracted by (balanced diet/more involved stamina)
Sign in to join this conversation.
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: your-land/bugtracker#4103
No description provided.