Lemmings in html-in-canvas release

Started by VorticonCmdr, July 24, 2026, 08:40:29 PM

Previous topic - Next topic

geoo and 1 Guest are viewing this topic.

VorticonCmdr

I am guessing that everybody in this forum knows https://www.elizium.nu/scripts/lemmings/ and the various web versions there are. Well today I made my take on it public which I was working on for the last two weeks or so.

You are the first to hear about it and I would love to hear your feedback!

Some things I did which hoping to give back to the community I learned so much from:
  • video modes: VGA/EGA/CGA/Tandy video mode
  • music modes: Amige (.mod)/CDI-I (.mp3)/Adlib/Tandy
  • sfx modes: Adlib/Tandy/? (OGG)
  • a graphics pack editor (work in progress)
  • a level editor inspired by the original level editor(work in progess)
  • asset explorer
  • exploded assembly viewer
  • 2-player network mode (not playtested)

I am sure there are still some bugs but I simply couldn't wait any longer I had to tell/show you guys. So without much further ado: Github and Github pages

Simon

#1
Hi! I believe that the first Github link should point to VorticonCmdr/lemmings, not to the github.io.

Networking mode against myself works in Chromium after enabling the HTML-in-Canvas global option, which is disabled by default.

On your readme, you explain how you support efficient rewind in singleplayer by taking savestates and recomputing. This is the most performant solution that we know. Lix was the first to do that in multiplayer, then NeoLemmix implemented it for singleplayer, and then Lix offered it in singleplayer.

Your multiplayer assignments during netplay have significant delay, over half a second. I think that such input delay is a problematic way of combatting lag. Clones (another Lemmings-like) and Starcraft do it like this, too, but it's more acceptable in Starcraft (where commands should happen ASAP) than in Lemmings (where it's a problem when commands happen too early). Have you considered instead to rely on the efficient recomputing from singleplayer? When the local player receives a delayed command from the opponent, the local player inserts it into his own history, then recomputes. I suspect that recomputation makes it harder to catch cheating, but it makes for better flow.

There is a third, novel way of combatting lag: Neon Swarm (Lemmings-like in Lockstep Arcade) makes terrain modifications and blockers immediate for the local player, and has a ~1-second delay before they materialize for the opponent. From the local player's view, his own young builder bricks are semitransparent until they're old enough to affect everybody.

Do you strive for exact 1991 Lemmings 1 two-player physics, bugs and all? Then you can't use such immediate local impact with delayed remote impact, and I'd suggest savestates and recomputation instead. It really depends on what exactly you envision. E.g., the 1991 physics have a possibly unwanted first-player advantage because his lemmings spawn before the second player's lemmings.

-- Simon

VorticonCmdr

Hi Simon, thanks for the great feedback. To be honest 2-player came after the fact I noticed that I now have everything needed to implement it. You gave me a lot to think about.