whostand reports: we have an invisible chicken m ... #6063

Open
opened 2024-01-24 00:44:59 +00:00 by yourland-report · 23 comments

whostand reports a bug:

we have an invisible chicken making chicken sounds at this exact spot

Player position:

{
	x = 6469.6762695313,
	y = 21.881999969482,
	z = 2630.1770019531
}

Player look:

{
	x = 0.94334375858307,
	y = -0.32721790671349,
	z = -0.055054225027561
}

Player information:

{
	protocol_version = 42,
	ip_version = 6,
	min_rtt = 0.041000001132488,
	formspec_version = 7,
	min_jitter = 0,
	max_jitter = 5.4970002174377,
	avg_jitter = 0.29399999976158,
	connection_uptime = 1485,
	serialization_version = 29,
	patch = 0,
	major = 5,
	version_string = "5.8.0",
	state = "Active",
	avg_rtt = 0.33700001239777,
	lang_code = "ru",
	max_rtt = 5.5510001182556,
	minor = 8
}

Player meta:

{
	fields = {
		punch_count = "572",
		["3d_armor_inventory"] = "return {\"shields:shield_rainbow 1 3992\", \"3d_armor:helmet_rainbow 1 3772\", \"3d_armor:boots_crystal 1 12928\", \"\", \"\", \"\"}",
		inflicted_damage = "7290",
		yl_commons_thankyou = "8",
		["signslib:pos"] = "(3885,87,62)",
		["stamina:poisoned"] = "no",
		yl_commons_player_joined = "1706055642",
		played_time = "626935",
		digged_nodes = "632",
		placed_nodes = "308",
		died = "17",
		crafted = "240",
		partychat = "party",
		["stamina:exhaustion"] = "15",
		yl_church = "return {[\"last_death\"] = {[\"y\"] = 63, [\"z\"] = -2961, [\"x\"] = -671}, [\"last_death_portal\"] = 1704243787}",
		xp = "1610",
		jointime = "1619249450",
		bitten = "0",
		hud_state = "on",
		yl_commons_player_created = "1619249450",
		arenalib_infobox_arenaID = "0",
		["stamina:level"] = "20",
		repellant = "0",
		["unified_inventory:bags"] = "return {\"unified_inventory:bag_large\", \"unified_inventory:bag_medium\", \"unified_inventory:bag_large\", \"unified_inventory:bag_medium\"}"
	}
}

Log identifier


[MOD] yl_report log identifier = z0SAknUx4Yo3nf4gAVNciMd7hjN9dtU1

Profiler save:

profile-20240124T004459.json_prettyEE

Status:

# Server: version: 5.7.0-yl-thx-tmm | game: Minetest Game | uptime: 6d 10h 30min 33s | max lag: 0.827s | clients (20/52): AliasAlreadyTaken, Aliza, Bailiff, Brabenec, Chache, daydream, Deathwing, Ecklair, flux, JeCel, Lili__, Lupercus, poppyasdan, pups, rewired_X, rheo, Service, tagtraum, whosit, whostand

Teleport command:

/teleport xyz 6470 22 2630

Compass command:

/give_compass Construction z0SAknUx4Yo3nf4gAVNciMd7hjN9dtU1 D2691E 6470 22 2630
whostand reports a bug: > we have an invisible chicken making chicken sounds at this exact spot Player position: ``` { x = 6469.6762695313, y = 21.881999969482, z = 2630.1770019531 } ``` Player look: ``` { x = 0.94334375858307, y = -0.32721790671349, z = -0.055054225027561 } ``` Player information: ``` { protocol_version = 42, ip_version = 6, min_rtt = 0.041000001132488, formspec_version = 7, min_jitter = 0, max_jitter = 5.4970002174377, avg_jitter = 0.29399999976158, connection_uptime = 1485, serialization_version = 29, patch = 0, major = 5, version_string = "5.8.0", state = "Active", avg_rtt = 0.33700001239777, lang_code = "ru", max_rtt = 5.5510001182556, minor = 8 } ``` Player meta: ``` { fields = { punch_count = "572", ["3d_armor_inventory"] = "return {\"shields:shield_rainbow 1 3992\", \"3d_armor:helmet_rainbow 1 3772\", \"3d_armor:boots_crystal 1 12928\", \"\", \"\", \"\"}", inflicted_damage = "7290", yl_commons_thankyou = "8", ["signslib:pos"] = "(3885,87,62)", ["stamina:poisoned"] = "no", yl_commons_player_joined = "1706055642", played_time = "626935", digged_nodes = "632", placed_nodes = "308", died = "17", crafted = "240", partychat = "party", ["stamina:exhaustion"] = "15", yl_church = "return {[\"last_death\"] = {[\"y\"] = 63, [\"z\"] = -2961, [\"x\"] = -671}, [\"last_death_portal\"] = 1704243787}", xp = "1610", jointime = "1619249450", bitten = "0", hud_state = "on", yl_commons_player_created = "1619249450", arenalib_infobox_arenaID = "0", ["stamina:level"] = "20", repellant = "0", ["unified_inventory:bags"] = "return {\"unified_inventory:bag_large\", \"unified_inventory:bag_medium\", \"unified_inventory:bag_large\", \"unified_inventory:bag_medium\"}" } } ``` Log identifier ``` [MOD] yl_report log identifier = z0SAknUx4Yo3nf4gAVNciMd7hjN9dtU1 ``` Profiler save: ``` profile-20240124T004459.json_prettyEE ``` Status: ``` # Server: version: 5.7.0-yl-thx-tmm | game: Minetest Game | uptime: 6d 10h 30min 33s | max lag: 0.827s | clients (20/52): AliasAlreadyTaken, Aliza, Bailiff, Brabenec, Chache, daydream, Deathwing, Ecklair, flux, JeCel, Lili__, Lupercus, poppyasdan, pups, rewired_X, rheo, Service, tagtraum, whosit, whostand ``` Teleport command: ``` /teleport xyz 6470 22 2630 ``` Compass command: ``` /give_compass Construction z0SAknUx4Yo3nf4gAVNciMd7hjN9dtU1 D2691E 6470 22 2630 ```
AliasAlreadyTaken was assigned by yourland-report 2024-01-24 00:44:59 +00:00
Member

Ecklair had chickens there, they all disappeared but still make sounds if you stand in the right place.

That exact position is haunted with a chicken ghost XD

I checked walls with noclip - didn't see any mobs inside.

Ecklair had chickens there, they all disappeared but still make sounds if you stand in the right place. That exact position is haunted with a chicken ghost XD I checked walls with noclip - didn't see any mobs inside.
Member

At the moment the ghost chicken is gone from that exact position...

At the moment the ghost chicken is gone from that exact position...

It might be still present (and debuggable) on the testserver

It might be still present (and debuggable) on the testserver
Member

It might be still present (and debuggable) on the testserver

on the test server, there are no loaded mobs within 1000 meters of the reported position, but i do hear chicken sounds. and a lot of footsteps?

> It might be still present (and debuggable) on the testserver on the test server, there are no loaded mobs within 1000 meters of the reported position, but i *do* hear chicken sounds. and a lot of footsteps?
flux added the
1. kind/bug
3. source/unknown
labels 2024-01-24 04:45:28 +00:00
Member

i can't even get the code to recognize that rheo is there though, so something is deeply broken. i'm too tired, poke me to look at this again tomorrow or later.

i can't even get the code to recognize that rheo is there though, so something is deeply broken. i'm too tired, poke me to look at this again tomorrow or later.
Member

Found them inside a dirt block, but stuck under a microblock, directly above this spot.

at 6467 28 2629

Screenshot 2024-01-24 104719.png

Wonder why they glitch through?
I've been looking into collision boxes for petz. Some of them have center/origin (what get_pos() returns) outside of the collision box. To me it seems wrong, but I'm not sure if the engine actually cares about it...

Found them inside a dirt block, but stuck under a microblock, directly above this spot. at 6467 28 2629 ![Screenshot 2024-01-24 104719.png](/attachments/1c29b9cb-a390-417f-9410-60ad0557387b) Wonder why they glitch through? I've been looking into collision boxes for petz. Some of them have center/origin (what `get_pos()` returns) outside of the collision box. To me it seems wrong, but I'm not sure if the engine actually cares about it...

Possibly related to bug #5788

Possibly related to bug #5788
Member

I have put 10 hamsters, 10 bunnies and 10 lambs in the room where chickens were kept.
After lots teleporting away and back:

  • 10/10 hamsters were still here
  • 9/10 lambs
  • 2/10 bunnies

I wonder why? Just the velocity they bunnies can get? Maybe they can serialize/deserialize and keep moving while mapblock in not loaded yet / already unloaded or something?

I have put 10 hamsters, 10 bunnies and 10 lambs in the room where chickens were kept. After lots teleporting away and back: - 10/10 hamsters were still here - 9/10 lambs - 2/10 bunnies I wonder why? Just the velocity they bunnies can get? Maybe they can serialize/deserialize and keep moving while mapblock in not loaded yet / already unloaded or something?
Member

petz like to teleport through the ceiling if they get too close to it - perhaps the bunnies just jump more?

petz like to teleport through the ceiling if they get too close to it - perhaps the bunnies just jump more?

I've been looking into collision boxes for petz. Some of them have center/origin (what get_pos() returns) outside of the collision box. To me it seems wrong, but I'm not sure if the engine actually cares about it...

Maybe the engine doesn't... But from what I can see petz logic actually cares about it... They can jump/walk to some place (mt is fine, bc there is no problem with the collisionbox). Then they realise "whops, the entity pos is inside a node" and teleport the entity up...
(I would also assume the chickens did not teleport out bc. petz though they would be in air?)

> I've been looking into collision boxes for petz. Some of them have center/origin (what get_pos() returns) outside of the collision box. To me it seems wrong, but I'm not sure if the engine actually cares about it... Maybe the engine doesn't... But from what I can see petz logic actually cares about it... They can jump/walk to some place (mt is fine, bc there is no problem with the collisionbox). Then they realise "whops, the entity pos is inside a node" and teleport the entity up... (I would also assume the chickens did not teleport out bc. petz though they would be in air?)
Member
local p1 = {x= -0.25, y = -0.5, z = -0.125}
local p2 = {x= 0.25, y = -0.0625, z = 0.1875}

The bubble is where the get_pos() is:

Screenshot 2024-01-25 053304.png

They always teleport up when they jump in this box with quarter slab floor:

And with this box (raised by 0.25):

local p1 = {x= -0.25, y = -0.25, z = -0.125}
local p2 = {x= 0.25, y = 0.1875, z = 0.1875}

they don't escape anymore and can sit/jump in a tight space:

(had to move the model up in blender so they don't look like they sink)

``` local p1 = {x= -0.25, y = -0.5, z = -0.125} local p2 = {x= 0.25, y = -0.0625, z = 0.1875} ``` The bubble is where the `get_pos()` is: ![Screenshot 2024-01-25 053304.png](/attachments/2d79e640-455d-4e18-8cb8-2c44126beea2) They always teleport up when they jump in this box with quarter slab floor: ![](/attachments/e917d37b-97db-41fa-83bf-2e22b2e123e0) And with this box (raised by 0.25): ``` local p1 = {x= -0.25, y = -0.25, z = -0.125} local p2 = {x= 0.25, y = 0.1875, z = 0.1875} ``` they don't escape anymore and can sit/jump in a tight space: ![](/attachments/e6e20221-83eb-4a6c-ad83-ecd7b03b37c0) (had to move the model up in blender so they don't look like they sink)
whosit added
3. source/mod upstream
ugh/petz
and removed
3. source/unknown
labels 2024-01-25 02:53:17 +00:00
Member

Basically, I would consider any entity that has a collision box {x1, y,1 z1, x2, y2, z2} where y2 <= 0 to be sus/broken.

Basically, I would consider any entity that has a collision box `{x1, y,1 z1, x2, y2, z2}` where `y2 <= 0` to be sus/broken.
Member
Old upstream issue: https://github.com/runsy/petz/issues/133 added this info there: https://github.com/runsy/petz/issues/133#issuecomment-1909273101
Member

sus collision box

oh, this is something i'm actually well aware of - spawnit has to make sure to deal with such weird collision boxes (which is necessary but not difficult). i was very careful to make sure that mobs didn't spawn inside solid nodes or several nodes above solid ground.

possibly petz itself doesn't deal with such boxes well on its own, though, that seems very plausible.

> sus collision box oh, this is something i'm actually well aware of - spawnit has to make sure to deal with such weird collision boxes (which is necessary but not difficult). i was very careful to make sure that mobs didn't spawn inside solid nodes or several nodes above solid ground. possibly petz itself doesn't deal with such boxes well on its own, though, that seems very plausible.
Member

Function petz.check_ground_suffocation(self, pos):
4f1967edf0/petz/brains/helper_functions.lua (L111)

Just gets result of get_pos() passed to it:
4f1967edf0/petz/brains/br_herbivore.lua (L10)
4f1967edf0/petz/brains/br_herbivore.lua (L39)

Hope Runsy fixes it by moving collision boxes and models... (models lose animations when I just import/export b3d in blender, not sure why).

Function `petz.check_ground_suffocation(self, pos)`: https://github.com/runsy/petz/blob/4f1967edf00af73f9d477bc9d9d95e0b3a5d45a0/petz/brains/helper_functions.lua#L111 Just gets result of `get_pos()` passed to it: https://github.com/runsy/petz/blob/4f1967edf00af73f9d477bc9d9d95e0b3a5d45a0/petz/brains/br_herbivore.lua#L10 https://github.com/runsy/petz/blob/4f1967edf00af73f9d477bc9d9d95e0b3a5d45a0/petz/brains/br_herbivore.lua#L39 Hope Runsy fixes it by moving collision boxes and models... (models lose animations when I just import/export b3d in blender, not sure why).
Member

Original petz blender models are here: https://github.com/runsy/petz_raw

so we can fix this ourselves

Original petz blender models are here: https://github.com/runsy/petz_raw so we can fix this ourselves
Member

Basically, I would consider any entity that has a collision box {x1, y,1 z1, x2, y2, z2} where y2 <= 0 to be sus/broken.

such things are not sus/broken - code that assumes that object:get_pos() is the important value, and doesn't account for the collision box, is what's broken.

> Basically, I would consider any entity that has a collision box {x1, y,1 z1, x2, y2, z2} where y2 <= 0 to be sus/broken. such things are not sus/broken - code that assumes that `object:get_pos()` is the important value, and doesn't account for the collision box, is what's broken.

Hm. Should we redefine object:get_pos() to the center of the collision box?

Hm. Should we redefine object:get_pos() to the center of the collision box?
Member

Hm. Should we redefine object:get_pos() to the center of the collision box?

mmm. i don't think so - futil already has code to get the center of the collision extent of an entity, and the underlying code is not complicated.

i've got more to say on this subject, poke me again tomorrow. i'm asleep.

> Hm. Should we redefine object:get_pos() to the center of the collision box? mmm. i don't think so - futil already has code to get the center of the collision extent of an entity, and the underlying code is not complicated. i've got more to say on this subject, poke me again tomorrow. i'm asleep.
flux closed this issue 2024-01-31 04:51:43 +00:00
flux reopened this issue 2024-01-31 04:51:45 +00:00
Member

Basically, I would consider any entity that has a collision box {x1, y,1 z1, x2, y2, z2} where y2 <= 0 to be sus/broken.

such things are not sus/broken - code that assumes that object:get_pos() is the important value, and doesn't account for the collision box, is what's broken.

Exactly, it breaks certain assumptions (and this bug is a good example): where the object is? Oh wait, it's not at object:get_pos(), maybe it's even in a different mapblock.
And maybe mapblock, where the object's "position" is has loaded, but the mapblock with object's collision box has not loaded yet. Could this be why they phase through stuff constatntly?

Having "origin" outside of the object bounds makes little sense... Maybe only if you're using it as a pivot for animating some weird rotation.

Ideally it should be consistent for all objects - corner of the box or it's center, etc. Then you can make some assumptions about them and get some use out of it for doing stuff like collision or physics... or just loading mapblocks.

Hm. Should we redefine object:get_pos() to the center of the collision box?

Won't work magically, because there's no consistency in how collision boxes are defined and how pos is used.

I'm just saying we should keep this in mind, since this is probably not the only problem caused by "position" being outside of the object itself.

> > Basically, I would consider any entity that has a collision box {x1, y,1 z1, x2, y2, z2} where y2 <= 0 to be sus/broken. > > such things are not sus/broken - code that assumes that `object:get_pos()` is the important value, and doesn't account for the collision box, is what's broken. Exactly, it breaks certain assumptions (and this bug is a good example): where the object is? Oh wait, it's not at `object:get_pos()`, maybe it's even in a different mapblock. And maybe mapblock, where the object's "position" is has loaded, but the mapblock with object's collision box has not loaded yet. Could this be why they phase through stuff constatntly? Having "origin" outside of the object bounds makes little sense... Maybe only if you're using it as a pivot for animating some weird rotation. Ideally it should be consistent for all objects - corner of the box or it's center, etc. Then you can make some assumptions about them and get some use out of it for doing stuff like collision or physics... or just loading mapblocks. > Hm. Should we redefine object:get_pos() to the center of the collision box? Won't work magically, because there's no consistency in how collision boxes are defined and how pos is used. I'm just saying we should keep this in mind, since this is probably not the only problem caused by "position" being outside of the object itself.

Real game engines have a similar problem. They need to define a pivot point, they need a point that is considered "where the entity touches the ground" and so on.

Real game engines have a similar problem. They need to define a pivot point, they need a point that is considered "where the entity touches the ground" and so on.
Member

Also, nodes like "embedded" glass panes are probably breaking mob pathfinding. You could stop whole army by exploiting stuff that breaks assumptions in similar ways.

Also, nodes like "embedded" glass panes are probably breaking mob pathfinding. You could stop whole army by exploiting stuff that breaks assumptions in similar ways.
Member

pathfinding

minetest pathfinding is pitifully oversimplified and weird mob collision boxes isn't even in my top 5 issues - if you could pass the collisionbox to the pathfinder, ideally it should be able to handle things properly. but it can't even deal with grass or water or nodeboxes currently, nor with mobs that are more than one node wide.

> pathfinding minetest pathfinding is pitifully oversimplified and weird mob collision boxes isn't even in my top 5 issues - if you could pass the collisionbox to the pathfinder, ideally it should be able to handle things properly. but it can't even deal with grass or water or nodeboxes currently, nor with mobs that are more than one node wide.
Sign in to join this conversation.
No Milestone
No project
No Assignees
6 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#6063
No description provided.