[BUG][PLAYER] Pre-placed gliders differ slightly in replay mode

Started by Gronkling, December 23, 2020, 01:10:08 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Gronkling

Using player V12.10.1

Pre-placed gliders seem to start 1 pixel lower in replays than when playing. I created a situation where this is shown, the result in a replay is completely different to what happens in regular play for me. The same doesn't happen for floaters.

namida

I can confirm that:
- I can reproduce this bug.
- The bug is triggered when the "start-of-level" save state is loaded. So, hitting instant-restart or loading a replay in-game will trigger it, as will backwards framestepping in the first 10 seconds (game-time) of gameplay; but exiting to the postview then starting the level again won't even if a replay remains in memory, and it won't happen if you load a replay on the preview screen.
- It indeed does not happen for floaters. I have checked very closely for subtle differences, and there is no issue whatsoever with floaters.
- This issue is not reproduced by putting a pre-assigned Glider entrance in the same spot.
- The issue will occur if (this reuqires either ninja reflexes or a slight modification to NL's code to pause-on-start) a glider is assigned on the first frame.
- The shadows will show the "wrong" path (the one that turns around) even in situations where the lemmings will take the "right" path, until the glider is actually pulled out.

Not yet tested:
- Does anything similar happen in the case of a faller who has not yet pulled out their glider, when save states are made? (EDIT: Seems not, but not 100% confirmed yet.)
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)

namida

Upon finding the relevant code, this will probably happen in any case where a lemming exists who:
- is a Glider, or becomes one before reaching 7px of distance fallen, AND
- has not yet touched the ground at any point, AND
- either a save state (manual or automatic) has been loaded, or the lemming was created (from another lemming who fulfills all the other conditions) via a Cloner

Expect a 12.10.2 update to resolve this bug later today. (This is suitable for a 12.10.2 update rather than having to wait for 12.11.X, on the grounds that it's not a change to physics, but rather a bug in the "create copy of lemming" code.)
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)