Project

General

Profile

Bug #696

[jHeretic] Clip through a wall if an object is near.

Added by xxmiltenxx about 13 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
Start date:
2009-05-31
% Done:

100%


Description

If an object is standing near a wall and a part is outside of a wall (mostly torches, for example those in Winnowing Hall, in that room with the glasses) you are able to glitch a bit into that wall or even to go through it (depends on "how deep" the object is in the wall).
It only happens with objects which have or HAD collision, for example in MAP01 of Deathkings of Citadel is shootable tree, which is near a wall, if you shoot it, you'll be able to glitch a bit into the wall.

Screenshots (Winnowing Hall):
http://img20.imageshack.us/img20/8833/doomsday200905311225235.png
http://img30.imageshack.us/img30/2857/doomsday200905311225336.png

Settings:
- No Addons

Labels: jHexen

History

#1 Updated by xxmiltenxx about 13 years ago

That bug is also present in Heretic, tested it in E1M1 at those "yellow-key-pillars" in the starting room.

#2 Updated by danij almost 13 years ago

I have confirmed this problem to be present in jHexen but I am yet to replicate it in jHeretic.

In jHexen this issue stems from the handling of mobjs stood on another.

The situation:
When a tree is felled or a monster killed, their height is reduced significantly. When this occurs the mobj height drops below the fixed height at which mobjs are allowed to "step up" onto another mobj and then continue to manoeuvre if it were stood on the floor.

The problem:
When a mobj stood on another tries to move, the P_CheckPosition algorithm is used to determine whether something prevents the movement within the immediate vicinity. In the process the mobj being stood on is checked bu jHexen's variant of this algorithm fails to exclude the mobj which is currently being stood on resulting in a false positive. This then means P_TryMove2 thinks the move is blocked by a mobj but subsequent logic then fails resulting in the mobj being able to pass through the solid walls (because a mobj vs mobj collision circumvents the need for checking mobj vs wall).

This issue has been fixed for 1.9.0-beta6.6

There is a lot of work remaining to completely unify the playsim mechanics of mobj movement and collision handling however.

Also available in: Atom PDF