L2 assignment debunked

Started by Simon, May 08, 2016, 08:52:07 PM

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.

Simon

Hi,

DMA released Lemmings 2 in 1992. For 24 years now, the assignment priority has tormented L2 players: You have a cluster of lemmings in a digger pit. You would like to assign to the digger among the walkers. But instead, the game assigns to a walker.

Challenge: Save 40/60 lemmings in Two's Company, Egyptian 1, using at most 3 skills.

Solution: Merge the two hatches at the top with a basher (skill 1). With a right-facing lemming, dig down the right-hand side of the column (skill 2). One pixel before breakthrough to the bottom, assign the to the digger a fencer. He will fence through both remaining pillars in a single go.



Trick: Assign precisely to the digger in a crowded digger pit! Here's how to do it.



Incoming...



Naive attempt: Hover the mouse cursor right on the digger in the pit. A sensible game would recognize this obvious desire to assign to the digger, right?



Nope, L2 thinks you'd love to assign to walker here. The digger keeps digging happily. The solution attempt is flunked.



The correct method is to move the cursor as far away to the left from the digger as possible. If we move the cursor farther than this, it would close. This alludes to the blinking cursor trick in L1, to select right-facing walkers. If the digger were alone in the pit, I don't believe the mouse would even open here!



This is guaranteed to select the digger. Try it!

I can't reproduce this with the cursor at the right instead of at the left. Maybe it depends on the direction of the digger. Maybe you have to offset towards the left independently of the digger's direction.

Don't let the assignment priority play tricks on you. Instead, you should perform tricks with assignment priority!

Not applicable to Sports 1: If your worker enjoys the company of stunners instead of walkers, you can't profit form this research. The stunners eat the click and don't delegate the click to the worker. You can't save more than 58 in Ceci n'est pas une pipe, Sports 1, with assignment research only.

-- Simon

ccexplore

It's maddening that DMA managed to take a giant step backwards with assignment priority going from L1 to L2. >:(

My memory is quite bad with Lemmings 2 nowadays, but somehow I want to say even without glitches it was possible to get 59/60 in DOS L2 Sports 1?  Sigh, looks like I'll have to pull out the old computer with L2 one of these days, or download another copy onto the more current computer to try.

People justifiably derides SNES version of L2, but one nice thing it did add is a "lock cursor to a lemming" mode.  IIRC, there's a button you can press so that instead of assigning skill to the lemming under the cursor, it instead locks the cursor to that lemming so the cursor moves with the lemming rather than being controlled by you.  This stops I think when you press the same button again (to unlock without anything else happening) or after you use the normal button to cause the normal skill assignment to happen to the lemming cursor was locked onto.

It's still nowhere as good as directional select and better priority system like in Lix, but way better than the backwards step taken in the DOS/Amiga versions.

Simon

Five years ago, conventional wisdom was that DOS L2 loses 4 lems: 2 in Ceci n'est pas une pipe, 1 in Snowed In, and 1 in Magnificent Severn. If you have a solution for 59/60 without pause-flickering, I'd love to see it.

Agree how there are many different ways to implement precise assignments, including the highlight.

-- Simon

Leo

"Lock cursor" mode is also available in Mega drive version. It's even better implemented because it's working also at the click of the right mouse button. As I can see on the SNES version right mouse button has no function at all (same as on the Atari ST, PC and FM Towns). On the Amiga and Archimedes right mouse button can be used to jump-scroll in the direction of the pointer (doesn't look very useful to me).

Leo

After some quick "research" about this walkers getting-in-the-way assigning problem, I can say that problem is not "global" Lemmings 2 problem. It's just PC and 8-bit (GB, GG, SMS) problem. As I remember, Matt said that he had the source code of the PC Lemmings 2 to help him porting the game to the 8-bit consoles. So, I suppose he used PC version as a model of the game behaving (or it is just a coincidence?). However, there is no problem at all to select digger in the bunch of walkers in any of other 6 versions of the game.

ccexplore

Quote from: Leo on May 09, 2016, 10:14:21 AMAfter some quick "research" about this walkers getting-in-the-way assigning problem

Interesting.  Are you saying you tried out a whole bunch of ports (I think you listed or mentioned 10 in total?) when you said "research"?  Which levels?

When I have time I'll see if I can at least try it out on Amiga over emulator.  To be fair, it's not entirely surprising if there is in fact a difference, as it's far from the first time we found some subtle difference between the two versions that nevertheless can have dramatic effects solution-wise on specific levels.

Leo

I tried all Lemmings 2 ports. There is 10 of them: Amiga, PC/DOS, Atari ST, Mega Drive/Genesis, SNES, Archimedes, FM Towns, Game Boy, Game Gear, Sega Master System (I also have demo versions for the Amiga, PC/DOS and Archimedes).
Level is (as Simon described problem) Egyptian tribe Level 1. I tried exactly what Simon explained at least 3 times with each of 10 ports and problem exists only in PC/DOS and 8-bit ports (GB, GG, SMS). In all other ports digger has selecting priority within bunch of walkers.
I have permanently installed all that on the Win XP (with emulators of course), all with 'gold' completed save file (or passwords). So, all levels are accessible immediately. I also have many other Lemmings games and ports already installed (I've even lost count how many of them).
If you want to try any of that for yourself (installed, configured and packed with the emulator) send me a personal message.
Of course, you can't get that for the pleasure of playing the games you didn't paid for, it's just for the "research" purposes as a duty expected from an Administrator of the Lemmings Forum :)

LemSteven

Quote from: Simon on May 08, 2016, 08:52:07 PM
The correct method is to move the cursor as far away to the left from the digger as possible. If we move the cursor farther than this, it would close. This alludes to the blinking cursor trick in L1, to select right-facing walkers. If the digger were alone in the pit, I don't believe the mouse would even open here!

During my work on Classic 5, I determined that selection priority is based on the time the lemming entered the level.  In the event that multiple lemmings are under the cursor, the first lemming to enter the level has the highest priority.  This means another surefire solution is to make sure the digger is assigned to the first lemming to enter the level.

As for the cursor positioning, a digger's selection area is significantly larger than a walker's.  In Simon's solution, the digger is technically the only lemming under the cursor, since his selection area extends farther left than even the leftmost walkers.

Simon

Awesome science by Leo and LemSteven, thanks!

I've tried more skills besides digger. Every worker has a huge selection box that extends far to the left. This appears to be independent of the worker's direction. Even slim workers, such as a bazooker in its beginning frames, have the wide selection box. Stunners too have the wide selection box.

I can't interpret the inability to select lemming #0 in Sports 1, who is a walker, when there are younger stunners covering lemming #0. L2 doesn't prefer the oldest lemming under all circumstances.

Bad assignment is only in Dos and related ports? More fuel to treat the Amiga version as the one true L2. ;-)

-- Simon

LemSteven

Quote from: Simon on May 12, 2016, 02:23:58 AM
I can't interpret the inability to select lemming #0 in Sports 1, who is a walker, when there are younger stunners covering lemming #0. L2 doesn't prefer the oldest lemming under all circumstances.

I've confirmed that the stunner has no effect on the selection priority.  What is happening in Sports 1 is that the first lemming is delayed by his use of the flamethrower, resulting in a very small distance between him and the lemming behind him.  Since only one lemming can use the next trampoline at a time, the second lemming hits the trampoline a bit lower than the others, causing him to not become a stunner when he lands next to the blower.  The result is that the second lemming overtakes the first, making it difficult to assign the bomber immediately.

Simon

#10
You can assign flamethrower to lem #1 instead of to lem #0. This reorders lemmings as follows:
#0 stuns before steam, arrives first at the bombing pit nonetheless.
#1 stuns before steam, but has delayed the trampoline for #2, thus arrives in the pit after #2.
#2 doesn't stun at the steam and is fast enough to overtake #1, but not #0.

This gives #0 a small headstart to the bombing pit, yet I can't assign bomber to lem #0 in time. and I can assign right after #0 standing up. o_O Now I'm confused what I have tried before. I have often given flamethrower to #1 instead of to #0.

When flamethrowing with #0, I have never paid attention to your reordering of #1 and #0, thanks for this. I believe this is a satisfying explanation: Flamethrow with #0, then #1 overtakes, but #1 can't be assigned in time because #0 follows as a stunner. Flamethrow with #1 instead, then you can assign to #0 immediately, but too many lems have clustered in the bombing pit to save more than 58.

And lol: I knew L2 always assigns to first lem 5 years ago, I must have forgotten so many details.




There is a 100-% route for Sports 1 by framestepping. Pausing at certain times disables the tennis ball for a frame. You have to write a robot that pauses every frame for you.

I'm onto an easier 100-% route: It's possible to bypass the tennis ball by fast-forwarding at a certain time, and keeping fast-forward running. This too can render the ball harmless until we switch to normal speed again. That's doable for humans, not only for robot programs.

Here's a repro for the harmless ball:

  • Start Sports 1, don't fast-forward or pause. Pausing throws off the tennis ball's rhythm.
  • While the first lemming is walking along the starting platform, press pause exactly once.
  • Compare your screen with my first screenshot below. Do they look exactly the same? The lemming is on the raised part of the white pipe, exactly 1 frame before the checkered square.
  • If yes, hit fast-forward to cancel the pause, and keep fast-forward running. Watch how the lemmings will all bypass the tennis ball.
  • If your screen looks different from mine, hit ESC to restart. Go back to step 1.
  • Until you bomb, you may pause as you wish, but must always unpause by activating fast-forward. Do not go to normal speed.
  • When you're in position to bomb, pause. Click bomb, pause immediately. Assign bomb, pause immediately. The tennis ball kills lemmings while we're assigning, but we reanimate all splatters with the bomb knockback. Splatters would only be deducted from the alive count after their animation.
  • Press fast-forward, and hope to catch harmless ball frames again. You must rely on luck here. If you are unlucky, press ESC to restart, and go back to step 1.


And there is the 60/60 route. This is a min-skill route at 3 skills, we have 1 flamethrower left.



-- Simon

Leo

#11
I didn't know about that entering level priority. Checked again, paying attention to not select the first lemming for digging. I wasn't correct the first time, FM Towns is affected (not very surprising because this machine is a kind of PC).
Finally (I hope) there is assignment priority problem on this 5:
PC/DOS
FM Towns
Game Boy
Game Gear
Master System

and these 5 don't "suffer" from that at all:
Amiga
Archimedes
Atari ST
Mega Drive/Genesis
SNES

5 out of 10, so it's just half a problem. Isn't it?

Dullstar

Quote from: Simon on May 12, 2016, 03:49:36 AM
You can assign flamethrower to lem #1 instead of to lem #0. This reorders lemmings as follows:
#0 stuns before steam, arrives first at the bombing pit nonetheless.
#1 stuns before steam, but has delayed the trampoline for #2, thus arrives in the pit after #2.
#2 doesn't stun at the steam and is fast enough to overtake #1, but not #0.

This gives #0 a small headstart to the bombing pit, yet I can't assign bomber to lem #0 in time. and I can assign right after #0 standing up. o_O Now I'm confused what I have tried before. I have often given flamethrower to #1 instead of to #0.

When flamethrowing with #0, I have never paid attention to your reordering of #1 and #0, thanks for this. I believe this is a satisfying explanation: Flamethrow with #0, then #1 overtakes, but #1 can't be assigned in time because #0 follows as a stunner. Flamethrow with #1 instead, then you can assign to #0 immediately, but too many lems have clustered in the bombing pit to save more than 58.

It's worth noting that in the DOS version, at least, this reordering is vital to being able to clear the level with a gold ranking; using the first lemming instead of the second lemming for the flamethrower consistently, for me at least, seems to result in one too many lemmings dying.  Either way this level seems to rely on somewhat frame specific execution, because, using the 2nd lemming flamethrower method, the difference between losing 2 lemmings and losing 4 seemed quite small (it took me a few tries to get it to work, so I suspect it's a very small timing window involved).