Glitches in Lemmings

Started by Clam, June 26, 2011, 12:04:39 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

namida

Here's a glitch I just noticed in Lemmix (level editor, not sure about player or DOS). When a digger was digging, the whole level was being nuked, and the digger stopped digging (because he ran out of terrain), fell for a bit, and then became an ohnoer because the countdown stopped, instead of instantly blowing up. I've tried to recreate it, but nuke timing is a bit hard.

This is because the digger removes terrain from an area 9 pixels wide; if ANY of those pixels are solid, the digger will not fall as long as he remains a digger (in many other platforms, and NeoLemmix, not all of the 9 pixels will allow him to continue digging, but only the middle 7 (usually) will). However, if he transitions to another skill, he goes back to the normal behavior of only checking the exact pixel he's on. Because he isn't falling or floating at the time the countdown runs out, he becomes an ohnoer rather than instantly exploding - but unless the pixel directly below him is solid, he will then start to fall (as an ohnoer) because he has nothing to stand on. The critical thing is that he is not yet floating or falling at the time of *becoming* an ohnoer - it doesn't matter what happens *after* this. Indeed, this can also occur with the standard bomber, and is even possible (and without any timing required) with the LPDOS/LPII/NeoLemmix instant bombers.

I've heard of the odd custom level actually *relying* on this behavior, although it's rare.
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)

exit

I don't think you read my post correctly, but let me clarify. The digger was digging while being bombed, then he ran out of terrain, and became an ohnoer. The "ran out of terrain part" means that he transitioned to a faller, which would make it strange that the lemming didn't instantly explode. It could be that the computer had a small lag spike or something that caused it to possibly skip an update/the lines of code that made that happen, making the faller to do this (I don't know how many graphical updates lemmings performs per second, but it's definitely under 24, which is the max your brain renders. So I definitely saw that digger transition to a faller, or possibly walker).

ccexplore

In case people don't know:  you can save and load replays in the Lemmix editor as well, even though the keys used are slightly different from LemmixPlayer:  while playing a level in the editor, type lowercase u and a replay will be saved in the "replay" subdirectory with filename based on level title, extension lrb (there is also a text version with extension txt but it's for informational purposes only).  Type uppercase r (eg. Shift+R) to load a replay--a window will pop up for you to browse and select the replay file to load.

Nuking just basically starts assigning bombers (without consuming the actual count of the skill of course) one by one to the lemmings still alive, so most likely you can achieve the same setup by simply assigning the lemming bomber at the right time (though nuking is probably easier as you can get a whole bunch of lemmings to try the same thing but get slightly different timing of bomber assignments for each).

The thing that's a little hard to know precisely from your description alone is the timing of the countdown reaching 0 vs the actual time of digger => faller transition.  It is worth noting that the digger does not immediately fall upon removing the last row of pixels, but instead actually transitions to faller at the next time it tries to dig down (this is well known and allows you to do things like assigning it builder on thin air after digger digs through but before it actually falls).  A replay would help determine whether the digger actually did transition to faller first, vs whether the countdown already reached 0 sometime in the 8 or so frames between removal of last row of terrain and the actual transition to faller.

namida

If I'm not mistaken, doesn't it transition to a walker for one frame before becoming a faller?
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

No, only the blocker does that.  IIRC the digger's transition in the analogous case is directly to faller, but unlike blocker it stays as digger on thin air for 8 or so frames before falling as explained in previous post.

exit

I know how lemmings works and how to save/load replays on lemmix, because I'm not that new to lemmings, I'm just new to the lemmings forums. I know that diggers do fall only when they try to dig a row of air, which is why I said that the computer had a (very small, and barely noticeable) lag spike. I was running a few programs in the background, including the internet . . ..

I guess in that case it isn't really a glitch by certain definitions, but the game probably just lagged a bit.

namida

I'm not 100% sure about DOS, but the way Lemmix works would not allow for that to happen (and since Lemmix's mechanics were built from reverse-engineered DOS mechanics, I would think they'd be the same). Whether the lemming becomes an ohnoer or immediately explodes is directly determined by what action the lemming is performing at the time. There is nothing in the code that allows a faller to become an ohnoer. However, as ccexplore has said, a digger does not immediately become a faller when he has nothing below him; he remains a digger (in midair) until the start of the next "stroke"; and if the bomber time runs out during this, he becomes an ohnoer. (if it runs out on the *exact* frame that he'd become a faller, I'm not sure offhand whether he becomes an ohnoer, or becomes a faller then immediately explodes)
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

Well, as long as you get a replay captured the next time it happens, we should be able to tell for sure what is happening, it's one of the nice things with replays.  As far as I'm aware the programming of Lemmix is quite simplistic and doesn't do anything at all to compensate for speed--if it takes longer than normal to process one frame then you'll simply see it slow down on that frame, but otherwise I believe all processing that would occur does.  [It also helps that the editor doesn't even do the confetti thing that the real game (and LemmixPlayer as well) does with explosions.]

namida

http://www.lemmingsforums.com/index.php?topic=525.msg21135#msg21135">Quote from: ccexplore on 2014-07-03 00:11:20
As far as I'm aware the programming of Lemmix is quite simplistic and doesn't do anything at all to compensate for speed--if it takes longer than normal to process one frame then you'll simply see it slow down on that frame, but otherwise I believe all processing that would occur does.

This is correct.
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)

exit

There is a possibility that the digger ran out of time on the exact frame that he became a faller (as namida stated), and the game rendered him graphically as a faller, while still thinking of him as digger, when the next update came in, he became an ohnoer, because as namida said, the digger somewhat "stands" on any of the nine pixels in the destruction mask, but when he becomes an ohnoer he falls, because he can't stand on the pixel that the digger was standing on. This would result in the fake faller becoming an ohnoer, making it seem that the digger actually became a faller, but was actually a digger. That makes this a graphical glitch.

Speaking about graphical glitches, in lemmixplayer, the explosion confetti sometimes stays frozen in the air. But, if another explosion occurs, the confetti disappears.

namida

There is a possibility that the digger ran out of time on the exact frame that he became a faller (as namida stated), and the game rendered him graphically as a faller, while still thinking of him as digger, when the next update came in, he became an ohnoer, because as namida said, the digger somewhat "stands" on any of the nine pixels in the destruction mask, but when he becomes an ohnoer he falls, because he can't stand on the pixel that the digger was standing on. This would result in the fake faller becoming an ohnoer, making it seem that the digger actually became a faller, but was actually a digger. That makes this a graphical glitch.

If I remember correctly, this isn't possible either because it doesn't update the graphics until it's finished internally updating all the lemmings. However, it IS possible that Lemmix Editor (which runs on an older version of the engine than the players; and even those you don't seem to use the most recent version of) doesn't implement this properly - have you been able to reproduce it in the players, ideally the versions in this topic? (These are not NeoLemmix  versions; they're just the most up-to-date traditional Lemmix versions. The cLemmings EXE I made for you was made from exactly the same source code as these (specifically the Orig one here) were.)

Quote
Speaking about graphical glitches, in lemmixplayer, the explosion confetti sometimes stays frozen in the air. But, if another explosion occurs, the confetti disappears.

This one you are correct about. It's very well-known - actually, there's no "sometimes" to it (it always happens), but it also disappears if you scroll the screen. This affects all Lemmix players that support confetti (including LPDOS and LPII), though it was fixed in NeoLemmix as of v1.05n (the fix introduced a new graphical glitch of its own, which was then fixed in the following version v1.06n).
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)

exit

I have not tried to reproduce it in those players (I don't even use those), but I won't, because there is no need to (you already confirmed that this is impossible in those versions). And I don't think  this will work in the lemmixplayers, because (as you said) the lemmixplayers update internally before they update graphically. But, you did say that this might be possible in the test editor, and, since the Main dat file is from custlemm, I think this is even more possible. I won't test it in the editor though, because that sort of timing is literally "pixel-perfect", and I do not want to try it.

namida

I have not tried to reproduce it in those players (I don't even use those), but I won't, because there is no need to (you already confirmed that this is impossible in those versions). And I don't think  this will work in the lemmixplayers, because (as you said) the lemmixplayers update internally before they update graphically. But, you did say that this might be possible in the test editor, and, since the Main dat file is from custlemm, I think this is even more possible. I won't test it in the editor though, because that sort of timing is literally "pixel-perfect", and I do not want to try it.

I doubt it's possible; all I was implying there is that I haven't seen the editor's source code and thus I can't say for sure. I'd be surprised if it worked differently to how the players do. And, the MAIN.DAT has no bearing on this whatsoever; it simply contains graphics, it does not contain any information on when to use which ones, and there is definitely nothing out of the ordinary in CustLemm's MAIN.DAT as far as lemming graphics go.
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)

exit

I didn't tear apart the Main file like ccexplore, so I really don't know. Now that I know that, I'll go back to the conclusion that the game had a slight lag spike internally and skipped a function, then finally "remembering" (accessing that forgotten piece of memory) that that was a digger, making him into an ohnoer. So it was probably the computer that had a small lag spike and not the game (just so you know what I mean).

exit

Here's another glitch; while I was playing my levels in the LemmixPlayer (I'm not sure about the editor), I found out (I actually already knew this, it just occurred again) that you can raise the release rate with your mouse, pause using function11, and the release rate will continue being raised. This is more of a bug, though, because it's really easy to recreate it. Just thought I'd get this out here for people to see.