[DISCUSSION][PLAYER] Climber mechanics

Started by namida, February 13, 2016, 06:08:23 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

ccexplore

#15
Quote from: namida on February 14, 2016, 12:46:34 PMIn vanilla Lemmix, HasPixelAt_ClipY was used to limit the region that would be checked - I'm not sure exactly what it was relative to (the top of the level, I think). However, in NeoLemmix, HasPixelAt_ClipY is much simpler

As I recall, the clipY part is necessary in vanilla Lemmix to emulate some behaviors around the top boundary.  Specifically Eric identified an existing solution related to bashing at the top of the level that isn't wasn't working in Lemmix but works in DOS Lemmings, and it turns out with further disassembly that the game effectively look at the pixel at y = 0 instead when the specified location has y < 0 (details may be slightly inaccurate as stated, but you get the general idea).

I don't remember anything about SwimTest though, is that part really present in vanilla Lemmix? ???

namida

QuoteI don't remember anything about SwimTest though, is that part really present in vanilla Lemmix?

Nope; it just gets passed as-is to HasPixelAt (well, everything does now, but at one point HasPixelAt_ClipY did stuff). In there, it's used for a check that detects water as well as terrain, for Swimmer purposes.
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

I put up a second test map with the situations that Nepster mentioned, and indeed, all of these predictions were correct. Now I can start working on how to deal with these...
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

#18
I've made fixes to these three exceptional cases discovered by Nepster, as well as to the general inconsistency of faller transition timing (this was achieved by simply always doing the terrain checks on frames 0~3, rather than only if a hoist will occur if no terrain is in the way).

A new experimental version has been uploaded that includes the new climber behaviour. This will probably break a lot of replays, sorry (it broke 8 replays in PSYCHO (Lemmings Plus I) alone, despite LPI's replays having been completely unbroken pretty much the entire time LPI has been a NeoLemmix pack), but it does make the climber extremely consistent now. I doubt it will break many levels, though I have a feeling it may break Genius 19. I'll await further discussion regarding this, so for now, don't assume it's going to be the finalized behaviour - I might bring back the inconsistency (but leave the other fixes, of course) if the general feeling is that it's doing more damage than it's worth.

The current (and previous) behaviours on the test levels are:

Test Map 1
All lemmings should fail to climb. All lemmings on the same structure should become fallers on the same frame; their timing relative to lemmings on other structures is not important apart from that a higher overhang should never cause fallers earlier than a lower overhang does (causing them at the same time is acceptable).
Previously: The bottom lemming on the 7 pixel overhang structure would continue to climb. Timings between lemmings on the same structure may not be equal.

Test Map 2
The four lemmings on the left should all fail to climb. The six lemmings on the right should all succeed.
Previously: The four lemmings on the left all succeed in climbing. Of the right lemmings, 10+1 and 14+1 fail, while the other four succeed.

Overhang at 6 pixels from ground
Lemmings should climb through this, regardless of how tall the wall is. I haven't made a proper test map for this one yet.
Previously: This was already fixed as of V1.40n-C; but prior to this, they would fail if the wall was 7 pixels tall, but succeed if it was any taller than that.
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)