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.


Messages - Simon

Pages: 1 2 [3] 4 5 ... 275
31
Lemmings Main / DOS Game Club on Lemmings 1
« on: March 15, 2024, 02:36:01 PM »
Edit 2024-04-10: It's released; download here:
DOS Game Club's Lemmings 1 podcast episode
Runs for 2 hours and 9 minutes, as MP3, 148 MB.



Hi,

the DOS Game Club is an online community. Each month, they pick a DOS game to play. Afterwards, they record a podcast (~1 hour) about it, and publish it on their website.

The next podcast will be about DOS Lemmings 1, and I'm invited as an expert. Most likely, we'll record the podcast next week. Let's make sure that I don't forget important topics. Thus:

What's important about DOS Lemmings 1?
  • L1 was the big hit for DMA.
  • I should know the Lemmings History essay.
  • DOS L1 was one of the main ports, with SNES L1 and Atari L1. The original L1 was on Amiga 500.
  • Lemmings 1 in particular serves as the inspiration for most other Lemmings-trademarked games and fan-games.
  • Pure singleplayer (no multiplayer) on DOS.
  • Passwords, unlimited retries, no lives. Still, if you got stuck, you were stuck on a single level.
  • Execution and puzzles went hand-in-hand. E.g., it had All or Nothing, which becomes trivial in modern engines, and even in DOS L1 when you know the cursor-flickering trick.
  • Even the L1 editor manual (on Mike Dailly's site, LF forum topic) tells you: You can hide your exits.
  • The quirky soundtrack and the unused Music from TV show themes.
  • Physics oddities. It's possible to solve They just keep on coming with 0 builders by disabling steel with blocker trigger areas.
What levels from DOS L1 were iconic?
  • No Added Colours or Lemmings
  • It's Hero Time
  • Cascade, with 100 % saved
  • Hunt the Nessy, the quintessential builderfest
  • The Great Lemming Caper
  • Postcard from Lemmingland
  • Save me, it's the hardest level
  • The VGASpec levels: Beast, Menacing, Awesome
What's important about contemporary Lemmings culture?
  • Custom level design!
  • It's common to release ~100 levels as a standalone pack, like Lemmings itself did.
  • We send each other our replays to improve the puzzles.
  • Some levels are about one specific idea. Other levels are open-ended but can still be difficult.
  • Engine design, tileset design. You can get involved in other ways than level making or solving.
  • NeoLemmix is most popular.
  • Lix has single- and multiplayer.
  • 100 % focus on puzzles (ideally, 0 % execution) in NL and singleplayer Lix.
  • Lots of tooling: Rewind, replay tweaking, insert mode, ...
  • Still, ideally, your level should never need the powerful tools. Be lenient where you can.
  • We tell newbies: Don't hide traps! Don't hide anything!
  • SuperLemmix, because it points to other elements of singleplayer than pure puzzle solving.
  • Vanilla Lemmix? Lemmini? Cheapo? CustLemm? Patrick, one other participant in this podcast, has built a 10-level pack for CustLemm -- and, for sure, included a level with hidden exits, because that's fair game in 90's-style Lemmings 1.
  • Community work to find min-skill DOS L1 solutions, DOS L1 challenge solutions, ...
  • Martin Zurlinden's pack is an early quality custom pack of 30 levels, inspiring others.
Even if I'm not 100 % knowledgeable about something, it's fine: The club regulars are good researchers and acheologists. E.g., for their Jazz 1 podcast, they dug through the developers' past, had quirks to tell, and even found my table about Jazz 1 versions and the 2021 GOG patch.

-- Simon

32
We've reviewed code via Mumble and git.

WillLem had the factoring practically right even before I looked at it. There were already no bugs with the rewind-or-restart message.

We found and fixed the overshooting. The overshooting came from leftover caching information from end-of-game considerations at the start of each physics update. Such end-of-game tests must either happen at the end of a physics update, or outside the physics update. We still have to reconcile the nuke with this; the nuke shall ignore the unplayable state and continue into nuking zombies, then exit. Because of this, we'd rather not tie these decisions to the physics update -- after all, activating the nuke to continue is UI, not physics, and only then it adds the nuke entry to the replay and nuke in the physics.

NL's 2023 architecture tied the exiting to the start of a new physics update. In light of our feature -- stop updating, but don't exit on losing all lemmings -- it looks necessary to change the exiting architecture in some way; still, we should review it with namida on a high level. For now, we renamed CheckForGameFinished to MaybeExitToPostview, to distinguish it clearly from the new end-of-game behaviors that don't exit, and moved it out of the physics update, into the window's main loop, as a public method call to LemGame.

WillLem has tested the interactive game and found no problems with the moved exit-to-postview decision. We haven't yet tested mass replay verification, we'll still have to do that. Likely, it will work because the verification carries its own exiting logic.

Thus, to do:
  • Reconcile nuke-to-exit with the moved exiting logic.
  • Test mass replay verification. Most likely, it's fine.
  • Test other ways to exit LemGame, e.g., pressing Esc, Hyper Speed into death/win.
  • Fix my observed mismatch between default option and game exiting.
  • Stream more playtesting!
  • Review the high-level achitecture of the feature with namida.
-- Simon

33
Tonight 21:00 UTC (= 22:00 my local time), yes. Otherwise tomorrow, anything between 17:00 and 24:00 UTC as it suits you.

Yes, you have a method CheckForUnplayableState for the unplayable state, good. Now, across the entire LemGame.pas, remove the variable fShowNoLemsMessage and its getter/setter entirely. As a result, in CheckForUnplayableState, you'll have one fewer condition that gets and-ed together. That should remove those state-caching bugs. Does it introduce any new bugs?

-- Simon

34
Okay, I'm cloning the repo. I'll have ~1 hour free now; I'm sitting in Mumble, hop on Mumble if you see this and are free.

I'll make my mind up about Discord or Zoom, both are nonfree with insidious privacy policies.

-- Simon

35
It sounds like you're still setting variables, whose contents then go out of date and you have those bugs as in broken (5) and (6), instead of retesting for dead state whenever necessary.

Move the code for (1) into its own function and call it from several places if necessary. No caching! Re-test every time!

Do you have a public repository? Can you show me git history until here? Reason: That (5) and (6) are even a concern makes me wonder about the architecture. If you don't have history, I'll have to work with those 7,000-line files. Possible, but takes longer to figure out what's going on.

Screensharing: Do you have tooling for it?

-- Simon

36
Quote
within UpdateLemmings, CheckLemmings is called after CheckForGameFinished.

Advancing physics has nothing to do with deciding whether we have reached dead state.

Reason: When we have reached dead state, you don't even begin advancing physics. You can decide about whether a state is dead well after advancing physics. In no way advancing physics depends on being dead; originally, in your pause design, you considered continuing into dead state.

Indeed, move the test for dead state out of advancing physics altogether. Fear not!

Quote
cat

Your code does: Test for dead state once per update and set some variables (e.g., ShowNoLemsMessage). Later, read these variables.

You should do: Remove the variables. Later, in the code that needed to read them, instead re-test for dead state.

-- Simon

37
"I dumped the exp 3's config into the exp 4": This is a difficult bug to replicate, and from what I can see the flag is being loaded from and saved to config correctly. Outputting to debug also indicates that the flag is set correctly when gameplay starts. I might need a second pair of eyes on this one.

I've attached my settings.ini from the exp 3.

Ideas: Assuming you load, save, and use the option properly, there is a fourth thing to it: What happens to this option when we start NL with empty options file/new installation/...?

If you win with the final lemming that goes into the exit, and there are no more lemmings ... NL tells you: No more lemmings, rewind or quit. NL won't quit here even though I've won
tests I performed, levels always exit to postview correctly.
maybe you can see if there's something wrong?

When exactly do you call into the code that you showed?

When does NL update LemmingsIn? Reason: In my vod at 02:00:45 (the same time that I wrote into my previous post), we clearly see 0 flagpole and the message. According to your code, this can only happen when LemmingsIn isn't 10 yet, and the level requires to save 10/10. Do you call into your code too early?

What is DelayEndFrames? Do you expect it to be 0 in my vod around 02:00:45 when I run into the bug?

Quote
Best guess: it takes a tick to register the flags (but this wouldn't explain why it sometimes doesn't happen)

Correct, this doesn't explain why it sometimes freezes correctly (instead of overshooting by 1 frame).

But you make it sound as if you test for end-of-game during the physics updates, not in-between the physics updates. It's okay if you call it after a physics update and cache your results, but still, caching means more mutable state, and mutable state is a source of bugs.

Consider to factor this code into two methods: One to test for end-of-game (regardless of how we react to that), and one to tell you whether we should show the message (that, among other things, asks the end-of-game method). In effect, try to refactor the flag ShowNoLemsMessage into a method, to avoid mutable state, and call this method where you would have read the flag.

-- Simon

38
The stream will stay up for 14 days:
https://www.twitch.tv/videos/2089736199

00:01:00: I dumped the exp 3's config into the exp 4, then played without looking at the exp 4's options dialog. NL freezes both if won (wrong) and if lost (correct). But if we look into the options dialog, the middle option (Exit to Postwiew if Save Requirement Met) is selected. This doesn't match what we just saw in play. To make the game obey the middle option, I clicked the middle option (that was already chosen), then clicked OK. Now, play correctly froze after losing, and play correctly exited after winning.

00:04:40: It still overshoots by one frame.

Sometimes it doesn't overshoot. In particular: If it has already overshot once, then we rewound, and we haven't quit to menu since the overshooting, then it doesn't seem to overshoot.

00:05:00–00:10:00: The nuke works as designed: It always exits to postview, regardless of the 3-way option. Good.

Much later, in kaywhyn's Fun Teleportation Race in Space:

02:00:45: If you win with the final lemming that goes into the exit, and there are no more lemmings, and you don't run into the overshooting bug, NL tells you: No more lemmings, rewind or quit. NL won't quit here even though I've won; NL even shows 0 flagpole left to save. I've played this with the option: Exit to Postwiew if Save Requirement Met.

-- Simon

39
New Objects / Re: [DISC][PLAYER] Visual designs of new objects
« on: March 12, 2024, 11:46:41 PM »


These are the two neutralizers from WillLem's attachment. Thanks for looking into my ideas! I have no clear ideas anymore how to improve these. I'm still not sure which of the two is better in play. What do others think?

We haven't questioned yet whether the gadget should look like a gate in the first place. If the trigger is as small as it is, 4 pixels x 4 pixels, then yes, you indeed need these elaborate decorations around that trigger area. Or would it be more useful for level design if it were an area-covering neutralizing field? A good graphic for such an area would be even harder to design.

I probably will release a CE fork of the final version

Thanks, that prospect encourages me to continue to grind usability with you.

-- Simon

40
New Objects / Re: [DISC][PLAYER] Visual designs of new objects
« on: March 11, 2024, 10:39:36 PM »
I tried shrinking the lem sprite, but tbh because it's low-res it barely looks like a lemming

I didn't mean for you to narrow the lemming.

I meant for you to narrow the animation, which happens to contain a lemming. The animation is rectangular. While the lemming is standing still, the animation has entirely-black columns at its very left and at its very right. I meant for you to cut 1-2 of these columns on the left and 1-2 of these columns on the right.

The point of that is to reduce the time during which we see a walker walking forward at normal speed. The walking walker is the distraction. With the narrower rectangle, the walking walker will reach the center sooner after his appearance, and he will disappear faster in the end.

Quote
OK, new version of the (de)neutralizer with a longer animation as suggested:

The big idea is that the content changes color while it's in the gadget, and yes, the animation shows that clearer now.

I'd even recommend to let the resulting lemming stay even longer before he leaves. Reason: That way, you will, in total, show more grey lemming (than blue lemming) on the make-grey gadget, and more blue lemming on the make-blue gadget.

Quote
Proxima's suggestion of a static icon with an arrow

Yes, also interesting. Does NL tileset design have a rule to animate everything that is not terrain? Hard to say what nondistracting animation to add here, then.

The biggest issue here is the horizontal arrow. With the walkers in the icon, the arrow hints at walk direction. NL has those flipping gates that also contain horizontal arrows, and there, the arrows indeed mean walk direction.

Separate small concern: The arrow also blends into the gadget's bar. Consider raising/lowering it by 1 pixel.

NL has too many gadgets anyway. It's beyond me why, for its final release, it gets even more of them (requiring us to design even more carefully against confusion) instead of fixing the newbie UX. That is for what it wants to be known, for eternity? Well, let's still do the best we can for the neutralizer.

-- Simon

41
Playtesting stream: This Wednesday, March 13, starting 18:00 UTC. https://www.twitch.tv/simonnaar

-- Simon

42
Site Discussion / Re: Global Mod Color is hard to read
« on: March 11, 2024, 06:54:23 PM »
Thanks, kaywhyn, for the examples. Yeah, the green is not ideal. kaywhyn wants the green darker, Forestidia wants it lighter.

Make them both red? Idea: What is the point of the listing in the first place? The difference between admin and moderator is largely irrelevant there. Red seems to be the only readable color against both black and white bg.

Make one red and, make the other an orangey red? Same idea.

Report the problem upstream? That's where it really belongs. The groups should get icons, not colors. Or the mod colors should be configurable per color scheme. We shouldn't have this color-picking problem in the first place.

Support only the dark mode, and make the names light? I don't remember when it became the default. (I override the LF's CSS for myself.) Or support only the light mode?

-- Simon

43
Site Discussion / Re: Global Mod Color is hard to read
« on: March 11, 2024, 04:39:37 AM »
Admin is 0xFF0000 regardless of page color scheme (light, dark, ...). Admins can configure the value, and it will then again apply to all page color schemes. Looks like the red is fine.

Global Moderator is 0x0000FF, again regardless of color scheme, and this is now hard to read against dark background. Again, admins can configure this value. What shall we try? I'll try a green, e.g. 0x308000 and hope that it's still distinct from the regular users in all page color schemes, and that nobody is red-green color blind.

I don't see how to configure the color of normal users. Likely, the page color scheme defines normal-user color. Maybe normal-user color is constant across all page color schemes.

import rants.showingThingsOnlyWithColor;
import rants.exponentialCustomizability;

Really, the base problem is that the forum designers introduce two axes of customizability: Mod color, and page color scheme, and the two axes have to know about each other, but do not. Where even to put the necessary config to reconcile these? Most sensible is that the admin's color settings know about all installed page color schemes, but that's not how it's implemented here. Do I have to drill into the page color scheme and find mod settings there? Should I file this upstream?

-- Simon

44
Lix Levels / Re: Eye of the Needle
« on: March 09, 2024, 01:39:56 AM »
Cool! Thanks to all of you for the feedback.

-- Simon

45
Lix Main / Re: Lix 0.10.21 released
« on: March 09, 2024, 12:13:49 AM »
Lix 0.10.21 released.
  • Added geoo's new singleplayer pack with 106 levels. They're sorted by theme:
    • Wrappy puzzles on cylindrical/toroidal maps,
    • flowy puzzles about crowd control,
    • classy large-scale strategic puzzles,
    • loony puzzles about physics curiosities,
    • and sketchy outtakes.
  • Added two new miniatures by geoo: Bridges, and Mini Cellar.
  • During insert mode, change the tooltip "Replaying. Click to play from here." to "Insert Mode: Click to insert." (You're in insert mode while the tweaker is open, unless you reconfigure this in the options menu.)


Welcome to Space!

-- Simon

Pages: 1 2 [3] 4 5 ... 275