Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - Simon

#1
Quote from: Guigui on November 10, 2025, 11:37:32 PMhow to "create a simlink to the other game's folder"

I assume: In CE's directory, you've already removed/moved away the subdirectories levels/, music/, replays/, and styles/.

I assume: Next to CE's directory, you have an extracted namida's NeoLemmix directory, and it's named nl. If it's named something else (not nl): In my commands below, replace all ../nl/ with the proper path to namida's NeoLemmix.

Open a terminal. Navigate into CE's directory (cd path/to/your/ce). Run:

ln -s ../nl/levels
ln -s ../nl/music
ln -s ../nl/replays
ln -s ../nl/styles

To verify: List the CE directory with ls. You should now see symlinks levels, music, replays, and styles next to your NeoLemmixCE.exe. Symlinks are special files, not regular files nor directories. You can ask about the nature of a file with the file command: file levels should tell you: levels: symbolic link to ../nl/levels.

If you ever remove NL because you prefer CE, you'll lose the pointed-to content. Before you remove NL, first, in CE, remove the symlinks (rm levels, rm styles, ...) and move the four NL subdirectories into CE.

-- Simon
#2
My money is on missing images/resources that CE expects and that aren't in namida's NeoLemmix download. I too run the binaries in Wine, on Arch Linux. I can't build from source.

I've looked through my trees for some candidates, and the following files exist in CE that are not in a fresh extraction of namida's NeoLemmix:

  • sketches/diagonal_line.png
  • sketches/glider.png
  • sketches/vertical_line.png
  • Many files in sound/
  • ... and maybe more, I didn't scan exhaustively.

WillLem: Is missing file likely here? You tried dropping CE's executable into a fresh extraction of namida's download and it worked; have you tested only the main menu, or also the level selection and the play? I don't know if CE crashes with nice error on missing file; if it does, then the null pointer crashes must come from something else. Do you see CE as a drop-in replacement for namida's NeoLemmix or as a fork? Is your vision of CE so that dropping the executable into namida's tree is enough, or do you recommend more directories to come from CE?

I deem null pointer crashes always a bug. Even if we consider this a user error by Guigui, CE should produce a better error message.

CE has different settings than namida's NeoLemmix. I don't know if settings can produce crashes.

Guigui: You can work around this: Extract both games, delete levels/ in one, and create a symlink to the other game's levels/. Then do the same for music, and again for tilesets.

-- Simon
#3
Quote(a) move to another frame to make the desired assignment

On a same-lemming assignment? If you add your new assignment after/before the existing assignment, you waste a skill, or you produce garbage that's going to waste a skill on the next frame and cancel your worker lemming. (a) doesn't work around a same-lemming clash; this is different than for a different-lemming clash.

Quote(b) manually delete the existing action (and future, if desired) via the replay editor.

Obviously we disagree here.

I'll write more in late November 2025 because I'll be short on time these days. Until then, focus on other bugs.

In the meantime: I encourage other players to join.

-- Simon
#4
Quote from: WillLem on November 03, 2025, 07:59:50 PMA separate column negates the benefit of seeing all replay actions in frame order

I didn't mean a second list. All entries will still be in the same list as before, sorted as before. I meant: Add "Inserted"/... to the line, and tabulate the lines so that all those "Inserted" will be in a separate column.

The ideal UI widget for the single list will then be a table, not merely spaces/tab characters, because presentation with those characters depends on the font (Windows vs. Wine). Consider: You already have plenty of content to satisfy a table layout because you show a lemming ID, a skill, and a physics update number.

Quote from: WillLem on November 03, 2025, 07:59:50 PMWe could even add a "?" button next to this text which would open a dialog explaining Replay Insert mode in more detail.

Yeah, it's warranted because the replay editor is an expert feature and has already broken game immersion. If you must explain it, you may as well explain it instead of redesign it.

-- Simon
#5
Quote from: WillLem on October 25, 2025, 10:01:13 PMit wouldn't be a simple case of just changing the #FF00FF value as I'd hoped
Quote from: GigaLem on November 04, 2025, 12:29:36 AMyou're gonna need more than my choice to decide.

During clear physics mode, lemmings are dark blue, which is too dark. Whatever you do for trigger areas should match/allow future fixes for lemmings.

See, e.g., the ideas for defaults from Abolish color cycling, pick good non-clashing colors. If you (WillLem) are about to paint yourself into a corner with the trigger areas, keep those other issues in mind.

How urgent are different trigger area color in the game anyway? All the time, I thought Giga's bug report here was about the editor only. And now WillLem wants to change the game even in light of these new design hurdles.

-- Simon
#6
CE 1.0.1
NL 12.14

During Insert Mode between physics updates N and N+1, when you insert a skill assignment to lemming A that will affect physics update N+1: First erase the future of A in the replay (erase all assignments to A at N+1, N+2, N+3, ...), then assign to A.

This will fix two problems at once:

  • The garbage will be automatically deleted. In existing NL, the player must now either go to the replay editor to delete the garbage by hand, or, worse, let it clutter the replay and hope.
  • You naturally allow same-frame-same-lemming overwriting. CE 1.0.1 blocks same-frame-same-lemming, which is the most annoying type of failed assignment because the intention is clear.

If you're concerned about losing data, we can talk. The hunch is that you shouldn't worry, but I'm happy to be convinced otherwise.

Armani and I have already argued for this in Improve same-frame assignment behaviour in Replay Insert mode, which is now closed. That thread, anyway, became more about the sound for failed assignments and whether to advance physics on failed assignment.

-- Simon
#7
NL-CE 1.0.1

The replay editor (what I call tweaker in Lix) sometimes prints some lines in blue (rather than black). I didn't find explanation anywhere in the program about what that blue means.

Ideas:

  • Introduce a new column for this the information. You can still keep the blue if you want.
  • Write static explanatory text in the tweaker.
  • Ditch the information altogether?

It feels unsettling without at least one of these.



Speculation: It means that the assignment entered the replay during insert mode.

The support for this is the weak connection by color to the blue R in the panel. The meaning of the blue R is similarly mysterious, the program conveys information only by color without explanation. At least, the blue R had the connection to the hotkey that you mapped yourself by functionality name and then pressed.

If I'm right and a blue line really means that this assignment was added during insert mode: I draw moderate benefit from of it. Over half the replay ends up blue in complicated levels. After entering insert mode, I stay in insert mode all the time until I have to click air to cut. At least it gives some random structure to the list for finding assignments by eye.

If you stay in insert mode and fast-forward physics past the end of the replay, then assign more skills, these new assignments are still blue, even though you couldn't see the blue R in the panel.

-- Simon
#8
It's natural to ask the gamestate a second time whether it wants to exit to postview. IIRC we have refactored that into its own side-effect-free question. All the hard work is already done, and it's clear what happens if you ask twice.

It can also be natural to move the decision later. Stuff will start to depend on ordering. If the logic is flat (not nested, even if it's long) or if it is short, you can depend on such ordering without maintenance hassle. Only in a long and nested series of decisions, ordering effects attract bugs. It's your call.

I wouldn't cue the effect one physics frame later, unless that's what you always want; i.e., even if we continued play, you'd want the effect exactly one frame later.

-- Simon
#9
Lemmings 1 levels are tile-based on DOS and Amiga in the following particular sense: You have a limited number of tiles in per tileset, but the map author has free realm where to put them in the level. Any integer pixel coordinate is fine for every tile. Tiles will overlap. For play, everything becomes one large level map of pixels, not tiles. I believe that you don't want this.

Lemmings 1 levels on the Sega Master System were tile-based during play in the classical sense of tile-based maps: The map is a square lattice, and at each lattice cell, you have exactly one tile. Bashers will generate new tiles at runtime with the deformed terrain, and will even cancel when video memory runs out.

I don't know how the Sega Master System defines levels in the files. Maybe it's like DOS's overlapping tiles, maybe it's already small square tiles for the square lattice. I merely know about the above tile lattice during play, after the level has been loaded from the files. I haven't even played the Sega Master version and don't know if it has what you want.

-- Simon
#10
Ah, I had seen those transparent staircases, but didn't guess the reason.

Instant effect on your on lemmings, and a delayed effect on other players: This is a new solution, I haven't seen that before. It sounds natural to try that with Lemmings.

Your solution allows purely personal assignments to be lag-free and have instant physical effect, as if you were playing singleplayer. Here, I'll call a skill assignment purely personal if, regardless of lag or not, it affects at most the assigner's own lemmings within the next ~5 seconds. During these ~5 seconds, other players' lemmings will behave the same whether or not you had assigned.

That's good; more than half of the assignments are purely personal and need reasonably specific timing (can't be too early nor too late). This was the main problem with Clones's solution.

I expect all solutions to have drawbacks at high lag. Lix will teleport around. Clones become impossible to assign. I expect your solution to impose additional design requirements on your skills. E.g., when you plan for lag spikes of 400 ms, you can't have Lix's batter skill with a fixed 250 ms of wind-up followed by instant physical effect on everybody's lemmings. But maybe this gets solved by your second ingredient, showing other people's lemmings in old places? It's hard to imagine how it would feel. Looking forward to what you will implement.

-- Simon
#11
Testers: crispweed (author), geoo, Simon, cobayeshimaru (presumably from crispweed's Discord group).

crispweed's game 0.0.4, received via PM.

Collection of loose ideas, to be split into topics when an idea gets traction.

Distribution:

  • Please choose a name for your project! It's hard to call it "crispweed's game". geoo has begun to call it "client", you probably don't want that to stick. I put it into a directory "crisp", which is better but you should still consider if you want that to stick. If you choose a long name, people will abbreviate it. If you stay around and choose no name, I'll be tempted to call the game "Crisp", which isn't searchable, but it's clear at least to me.
  • Sleep over whether you want to open-source it. There is no need to rush the decision.
  • Store releases in a public place, then you don't have to upload it several times (e.g, as a PM attachment).
  • My preferred way to get it would be either to fetch the source from a public git repository and build it myself, or to download binary releases from your public place.
  • You told me in chat that you're fine with livestreaming (of such playtesting sessions) or with redistributing your binaries (e.g., for troubleshooting). That's helpful to know already.

Networking:

  • It's smooth, there is no noticeable lag. I wasn't sure whether it's from a good lag-combatting algorithm or whether it's because we're all from Europe (France and Germany).
  • Game freezes occasionally by design until all everybody's lag-spikes have clearerd. Felt fine, it hasn't been worrisome so far.
  • There are two classic ways around the lag: Input delay (Starcraft, Clones) and recomputation of history (Lix). Clones's input delay became problematic when geoo and I in Germany played with the Clones devs in Canada. See me on Clones and geoo on Clones: "in the current implementation, the lag affects the assigning player with every single assignment. With the alternative, it only affects the other player when he happens to be watching the morph assignment in this precise moment, poised to react, which is a less frequent occurrence." And L++ was the precursor of Lix.
  • The Online Players tab miscounts players, you already know about that.
  • Confusing screen after play: You have two lists, one for players who haven't returned from game to lobby, and another for players who have. It looks like half the players have dropped from the networking altogether. As long as player X is in the room, X should appear on the visible list.

Physics:

  • The rectangles (lemmings) get stuck in seemingly-traversible terrain. We estimate that your walker ascension height is too strict. Consider: Lemmings-1 lemmings ascend 6 pixels, Lemmings-2-the-Tribes lemmings ascend 4 pixels. Lix ascend 12 pixels but in hi-res, it's equivalent to Lemmings-1 ascension. Clones was overly strict, see geoo's Lend a Helping Hand remix.
  • Long tunnelling is expensive because bashers/diggers run out of power after X pixels, and need reassignment to continue. That can be desired or a design bug, you decide. As it is, we, as players, plan the route to tunnel where the terrain is thin.
  • Reassignment is hard. Reassign too early, and you shorten your reach. Reassign too late, then the lemming will have turned, and you waste an entire skill and opportunity (you can't re-turn him forward). If you're sure about running out of power (like builders do in L1 after 12 bricks), consider shrugging.
  • Builders don't hit their heads, only their feet. That's refreshingly lenient. Makes it easier to get out of nasty holes or nooks. I have a soft spot for your choice. The builder's head bonk in Lemmings 1 is the design oddity here, not your feet-only collision.
  • Absolute time timit is a simple and clear way to end stalemates. I like it. I expect that there will be problems with it eventually, but everything else is more complicated.
  • Allow resignation in matches between exactly 2 players/teams.
  • Free-for-all games have no straightforward resignation without unbalancing play. That's a design problem for later.
  • Avoid physics options. It makes level design hard when the level author can't control how his level will behave.
  • Avoid pushing too many design choices to players. If you must, then also pick really good standards, so the players can still avoid design work. Usually for a given multiplayer level, there is one good set of options (how many diggers, what spawn interval, ...) and players will play that setting over and over.

UI:

  • Please add hotkeys for skills, and make them remappable. geoo and I play Lix with one hand on the keyboard (accessing ~20 hotkeys) and one hand on the mouse.
  • I forgot that directional select was still on, and missed some assignments.
  • geoo and I remember that we weren't able to assign because the selection rectangle didn't appear even though the mouse was near a lemming. But I didn't catch this on video: geoo didn't record, and my instance was earlier this week.
  • Middle mouse button is hard to press. It's hard for me to scroll. Instead, I zoom out and hope.
  • Map the scrolling also to the right mouse button by default. Better, make it also remappable.
  • I don't see bridge holes when I zoom out. But you can consider this a physics bug, not a visibility bug, and make your bridges thicker.
  • On the contrary, I see bridge holes where there are none, because the zoom will hide the tiny white bricks.
  • I forgot on which team I am, and, once, what color I play.

-- Simon
#12
The 0.0.2 from your PM fixes it, thanks! It connects, the lobby works, and the level plays and displays smoothly. Scrolling works both with the middle mouse button and with the keyboard keys. Looks like all SDL 3 features work in Wine.

More feedback on the weekend.

-- Simon
#13
Quote from: crispweedoriginal lemmings in 2 player mode
I woke up in the night recently with the idea of making a 3 player version
I am now really enjoying working on the project, and feeling really productive. Not sure about final goals

Ah, then you're still in the middle of it. Good luck, and enjoy the development!

I'll plow through the old topics and find some good high-level discussions. (Many topics are individual issues with too much detail and too little of a high-level picture.) And there are some high-level ideas that I take for granted, but that I've never written down. It's a good opportunity for me to write more. No worries.

Nonetheless: You, because you're still unbiased, are going to solve some design problems in a much better way than what exists. Looking forward to what you'll do!

Quotewhat distribution and distribution version you are using

I run Arch Linux. (No particular version, it's rolling-release). I'll file technical issues in separate topics (server rejects client 0.0.1), then you can continue to have the topic here for onboarding new testers.

-- Simon
#14
crispweed's game 0.0.1, I received binaries via PM.

Running client.exe in Wine 10.12 on Arch Linux. Arch is a rolling-release distribution and has no particular versions. Steps:

  • Extract archive into new directory. I have client.exe, entry.png, ..., all in same directory.
  • I copied the credential file 'credentials.bin' (received via PM) into the same directory.
  • $ wine client.exe
  • Client starts without problems. It presents a graphical window titled "SDL3 application" and asks me to enter my name.
  • I type "Simon" without quotes, with this exact capitalization, into the blue text entry box.
  • I press Enter.

After 0.2 seconds, the same window tells me: "Fatal Error: Client version not accepted by Server, please update your client."

Expected instead: Probably access to the lobby? Something else than version mismatch. I've used client 0.0.1 to which you've linked me via PM earlier today. My internet connection is up.

But at least, yes, it looks like SDL 3 Windows binaries will run well in Wine.

-- Simon
#15
I'm up for playtesting.

I run Linux. I'm happy to build from source myself. Or I run your binaries (Linux binaries directly, or Windows binaries through Wine).

I don't use Discord. geoo often hangs in IRC and can forward your live match dates to me. Or you reach me via forum here; I read the forum several times per day. Or send email, or join IRC yourself.

What Lemmings-like multiplayer games have you played: The original 2-player Lemmings? Lix? Clones?

You haven't shared the background of your project yet, thus: What's your vision? Simply make this kind of game more convenient to play (rather than via networking emulator)? Or do you have new design goals for gameplay/physics/rules/...?

geoo and I are experienced Lix players. I'm the author of Lix, and both of us have given extensive feedback for the Clones developers. I'm happy to write some longer posts here for you about the design background of Lix and Clones. Let me know what interests you!

-- Simon