rheo reports: spawnit seems to think it's ok ... #6242
Labels
No Label
1. kind/balancing
1. kind/breaking
1. kind/bug
1. kind/construction
1. kind/documentation
1. kind/enhancement
1. kind/griefing
1. kind/invalid
1. kind/meme
1. kind/node limit
1. kind/other
1. kind/protocol
2. prio/controversial
2. prio/critical
2. prio/elevated
2. prio/good first issue
2. prio/interesting
2. prio/low
3. source/art
3. source/client
3. source/engine
3. source/ingame
3. source/integration
3. source/lag
3. source/license
3. source/mod upstream
3. source/unknown
3. source/website
4. step/approved
4. step/at work
4. step/blocked
4. step/discussion
4. step/help wanted
4. step/needs confirmation
4. step/partially fixed
4. step/question
4. step/ready to deploy
4. step/ready to QA test
4. step/want approval
5. result/cannot reproduce
5. result/duplicate
5. result/fixed
5. result/maybe
5. result/wontfix
ugh/petz
ugh/QA main
ugh/QA NOK
ugh/QA OK
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: your-land/bugtracker#6242
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
rheo reports a bug:
Player position:
Player look:
Player information:
Player meta:
Log identifier
Profiler save:
Status:
Teleport command:
Compass command:
i'm not 100% i identified the issue properly, but nether mobs in particular seem to think it's okay to spawn in the air along the very bottom layer of a mapblock, something to do w/ ignore nodes seems the most reasonable explanation.
or wait. perhaps this was near a newly generated portal. possibly those nodes were actually netherrack when spawnit ran, before mapgen had time to hollow out the caves...
We were just outside the portal that leads to NetherLands, so it's definitely not new.
and again, i can't replicate this locally. hm...
Maybe we have different settings in minetest.conf?
nothing i can imagine. the more i think about it, the less sense it makes - all of the affected mobs have restrictions on which nodes they can spawn on. even if the code was somehow seeing "ignore" nodes instead of "air", it shouldn't be marking those places as spots anything can spawn.
Then we need to add logging and let them say why they spawn where they do and what node they want to spawn on?
Can we alter spawn rules from a running server, to make experiments?
My bet is that these guys also load in air near the slope, fall down and unload:
Maybe this has something to do with how spawnit is passing data to async env and back? (just a wild guess)
they spawn where they do because some code in an async thread has previously identified that location as a place where they are able to spawn. part of the efficiency of spawnit is that the main thread doesn't have to do any of these checks. (if a node is built or destroyed, the spawn positions in that mapblock are cleared in a
minetest.register_on_mapblocks_changed
callback, and recalculated later).no. in order to pass the spawn rules to the async environment, the rules have to be made immutable in an
on_mods_loaded
callback, saved to a file, and then loaded by the async environment.the behavior is also not happening currently on the main server. you can see where things are spawning using the
/spawnit_toggle_spawn_waypoints
command, and check whether a mob can spawn in a given mapblock with the/spawnit_show_all_in_block <entity_name>
command. ogres in particular seem to really like to walk off the edges of things, perhaps theirfear_height
value should be reduced. EDIT: hm, maybe not the fear height - several nether mobs have larger values and don't walk off cliffs. perhaps it's because their model is so "fat"...if i hadn't seen ogres spawning in the air right in front of me, and if
spawnit_show_all_in_block
hadn't shown me that those were marked as legit spawn positions, i wouldn't believe this.the fat-ness is part of it - mobs_redo only checks whether there's solid ground over one corner of the mobs collision box
d4a25064ea/api.lua (L1001-L1009)
proof - the bubbles are places spawnit thinks ogres can spawn, in the air. this is not a newly generated mapblock, but i teleported near it and then flew in this direction.
it's particularly weird that this only seems to affect nether mobs
Is this a setting we can enable on the testserver?
Would be really cool if those bubbles had some mouseover text which mob spawnspot that is.
If I remember correctly nether mobs are the only mobs that use a function (mob_core ?) to check if there is enough room to spawn, that might mess with your spawn positions.
try
/spawnit_toggle_spawn_waypoints
We used mob_core and various other spawning methods, which were eventually all replaced by flux' spawning mod: https://github.com/fluxionary/minetest-spawnit
our limited version of mob_core is totally disabled currently (though it hasn't been removed?). spawnit has much more sophisticated checks which should prevent mobs from spawning partially in walls.
the bubbles come from this command:
you first have to mark a position with worldedit (
//1
) or areas (/area_pos1
). if the mob can spawn in that mapblock, bubbles will appear for every such location. if the mob can't spawn there, you'll get a chat message. if the mob doesn't exist, you'll also be informed.in the above photos, i ran it against "yl_nether_mobs:ogre". the bubbles are ephemeral HUD waypoints, there's no meaningful way to "point" at them, but you already know which mob it is because it's part of the command.
note that every "valid" location may not be included! spawnit limits the number of spawn positions it notes per mapblock to 8 by default (16 for nether mobs). also, locations are removed if a mob successfully spawns there. these behaviors are intended to keep too many of the same kind of mob from spawning in the same area (unless it the area is unloaded and reloaded). the main reason for this is to nerf mob farms.
Squawk had a similar issue in a nether farm - the mobs weren't spawning high up in the air, but they were also spawning in places where they shouldn't, on the lowest y coordinate of a mapblock, as if spawnit assumes the stuff below it is solid.
some ideas for resolving this: