[BUG][PLAYER] Blocker near wall can make a glider get stuck

Started by namida, January 09, 2020, 02:40:26 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

namida

See at around 15:00 in this video from IchoTolot: https://youtu.be/kq4CGHEvSG4?t=900

Haven't looked into it beyond making this topic, so far. No change will occur in V12.8.0 in regards to this; expect a fix in V12.9.0.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)

ccexplore

Interesting.  Is it behaving differently from the glider falling down an extremely narrow (ie. 1-pixel wide) vertical column of air (with walls on both sides)?  I guess in this case, maybe the blocker actually turns the falling column into effectively 0-width?

I think we can at least agree that the glider probably should at least still be falling down vertically some nonzero amount in any one frame update, in situations where it is not landing but also restricted by nearby walls from moving any of the full amount it could've moved in one frame on open air.  Handling of facing direction is interesting--especially in this blocker case, I guess it makes sense the lemming is forced facing right while it falls through the blocker field.

Kinda makes me wonder now what happens in Lix with tumblers (or other similar movements like jumping or getting batted) and blockers, that kind of situation there would be similar to the glider-blocker situation here.  I seem to recall (maybe) seeing examples that show game will ensure vertical movement so that the lix won't get stuck indefinitely in the same location, but haven't really tested extensively there.

IchoTolot

Seems like another bug found. 8-)

QuoteI think we can at least agree that the glider probably should at least still be falling down vertically some nonzero amount in any one frame update,

That would be a good solution, but we should account here what happens to the common case of when a glider hits a wall and turns.

Because it could be that for the turning itself the glider does not go down for a frame and that would lead to a physics change for a very common case - I would avoid that.

If that is the case how about addressing this exact situation: If a glider would turn in 2 following frames and would not lose any height -- begin to loose height.


If he still loses height on a regular wall turn and only for this exact situation he doesn't go down than of course the "always lose height" rule ccexplore proposed is the best fix.


namida

Normally, a glider doesn't move downwards when turning, it seems. But there is a special case when stuck in a 1-pixel wide area.

Commit 8f7669a fixes this bug by expanding that special case's terrain checks to also check for blocker / one-way fields when determining if it should apply.
My projects
2D Lemmings: NeoLemmix (engine) | Lemmings Plus Series (level packs) | Doomsday Lemmings (level pack)
3D Lemmings: Loap (engine) | L3DEdit (level / graphics editor) | L3DUtils (replay / etc utility) | Lemmings Plus 3D (level pack)
Non-Lemmings: Commander Keen: Galaxy Reimagined (a Commander Keen fangame)