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
My vacation from Saturday, February 20th, 2027 through Sunday, February 28th, 2027 has been formally granted. Flopsy has his vacation granted, too.

Looking forward to see you all in February!

-- Simon
#2
Hi,

I want to move Lix to LF line endings consistently across all operating systems.
Explanation: What are line endings (LF/CRLF)?

Situation

Documentation in doc/ is CRLF. The levels in the levels/ have a mish-mash between CRLF and LF endings. At least it's consistent within one file. Windows Lix generates levels/replays/options/... with CRLF endings. Lix on other OSes generates files with LF endings. Lix, in every version and on every OS, accepts and understands both CRLF and LF.

When I edit levels or receive levels, I run dos2unix over everything before checking it into git, so that newer stuff is standardized to LF.

Plan

Convert to LF all documentation, levels, ..., all text files in the repository. Ship only LF on all systems. This will be one big commit in the git repository that touches a lot of files at once: 507 files changed, 171,715 insertions(+), 171,715 deletions(-)

Make Windows Lix generate levels/replays/options/... with LF, not CRLF.

Reasons

LF have been the default everywhere for over 20 years, except on Windows.

Notepad, Windows's default text editor, finally works with LF in Windows 10 and Windows 11. It shows each of LF and CRLF as a linebreak.

Before, in Windows 8 and earlier, Notepad linebroke only at CRLF. Such old Notepad would display a file with LF endings in a long single line. This is the reason why the Lix documentation in doc/ has CRLF, and why I've kept CRLF in Lix's level/replay output. I like it if users can discover the formats and hack Lix at file level. But the Notepad problem doesn't exist anymore because Notepad has been fixed in Windows 10/11.

All Lix versions (forever) have understood both CRLF and LF. If newer Lix outputs LF on every system, it doesn't break backward compatibility.

I like LF more than CRLF.

Nobody should notice any new problem in the first place, unless he uses old Notepad or makes a git diff of newer levels against the mish-mash level tree. (git diff -w will ignore the line endings.) I have a soft spot for the Windows 7 users even though I've never used 7 myself. Those users should install a good text editor: Notepad++, Geany, ...

The UTF-8 Everywhere Manifesto has a paragraph about line endings:

Quote from: https://utf8everywhere.org/#faq.crlfAlways use \n (0x0a) line endings, even on Windows. Files should be read and written in binary mode, which guarantees interoperability—a program will always give the same output on any system.

The UTF-8 Everywhere Manifesto is lovely in general. If you have some technical background, read it in full. :cute:

Advice from that explanation I linked at the start:

Quote from: https://thetexttool.com/compare/crlf-vs-lfStandardize on LF in your repository and data pipelines. Only convert to CRLF at the very end if a Windows tool requires it.

And there is no such requirement because Windows Lix has accepted LF forever.

-- Simon
#3
Lix Levels / Re: NepsterLix
September 15, 2026, 05:42:42 AM
Quoteand my suggestion with "Time Out" would be 3180 since the level would give 210s time limit.
Quote from: kaywhyn on September 15, 2026, 02:06:00 AMicon turns green at 2662 ticks and hence the last Lix required to be saved fully exits by around 2673 ticks
NepsterLems version of the level has a 3 minute time limit.

Lemmings 1 runs at 17 physics updates per second, I believe NL is the same. You get more work done in 1 NL second than in 1 Lix second. Lemmings 1 takes about 3.1 seconds to first spawn. That allows you ~3,007 physics updates in NL after first spawn.

Lix runs at 15 physics updates per second, first spawn is at 60 ticks, and C++ Lix (from year 2016) counts time limits starting from 30 ticks. If we insist on 3 minutes at normal Lix speed, C++ Lix would have allowed 2,670 ticks after first spawn, which is 2,730 ticks from the artificial zero 4 seconds before spawn.

Nepster's reference solution takes 2,739 to win and even has a manual nuke at 2,808. That wouldn't have passed under the strict 2,730 tick 3-minute bar. You were faster at 2,662, you proved it's possible to put 2,730 into the title and still have it doable, but Nepster's reference replay would fail to solve. What to do?

Let's put 3,000 into the title? Round number, and it's only 3.5 seconds tighter than Lemmings 1's 3 minutes. The reference replay accomplishes it comfortably with 17 seconds to spare. And everybody else's solution passes, too.

Archeology: C++ Lix never shipped NepsterLix and people had to get NepsterLix from this thread instead. In March 2016, I put NepsterLix into D Lix. Already there, we had the mismatch of #SECONDS 210 (= 3:30) in Time Out and 3min in Time Out's title.

I conjecture: Nepster wanted 3 minutes because NepsterLems came first and had 3 minutes. Then he found 3 minutes too tight at 15 ticks/second, and bumped it to the next bigger round-looking value of 3:30. Then he (I think it was him?) put time limits into the titles, and somehow we wrote 3 minutes into the title in Lix even though that's again too tight.

I'll change the 3,180 in the commit to 3,000.

Quote from: kaywhyn on September 15, 2026, 02:06:00 AMThanks for the update to the rewind to previous feature for the 0.10.35 Lix release. Still need to get the approximately 30 minute video footage to you of how I use it

--> other topic: Lix for kaywhyn

-- Simon
#4
Lix Main / Re: Lix for kaywhyn
September 15, 2026, 04:29:25 AM
Quote from: kaywhyn on September 15, 2026, 02:06:00 AMThanks for the update to the rewind to previous feature for the 0.10.35 Lix release. Still need to get the approximately 30 minute video footage to you of how I use it

I have already seen you use the rewind-to-skill with the option at -2. Your usage matches how I thought you'd use it.

In the 30 minutes, I'd like you to use the tweaker. It appears when you press the filmstrip icon, it's above the nuke icon. When you would reach for your rewind, instead try to accomplish your goal with the tweaker.

Consider: You got your feature that I don't like but you claim is better. Now it's your turn to give feedback to what you don't like but I claim is better. You're already predisposed to tell me what sucks about the tweaker. This is the best way for me to get feedback.

-- Simon
#5
Lix Levels / Re: NepsterLix
September 14, 2026, 09:56:43 PM
Thanks, it's a good suggestion to write the tick count directly into the title. That removes the guesswork for how much time passed in older Lix versions before the first spawn when Nepster made the levels. It turns out that levels started at 30 ticks, then 2 seconds passed until the first spawn at 60 ticks, and these 2 seconds counted against your time limit. (Nowadays, singleplayer levels start at 45 ticks and multiplayer at 0 ticks.)

Lix doesn't support time limits any more, but Lix shows the current number of ticks in the tweaker, and that makes ticks the best unit of time for the title. I'll earmark changing seconds/minutes to ticks in the titles for the next release.

-- Simon
#6
QuoteHowever, it would be necessary to know the formula for converting between seconds and ticks.

This is too short a notice to dig into Lix history.

I don't remember when Nepster designed the maps and whether lix would spawn 4, 2, or 1 second into play when Nepster made the maps. I.e., I don't know if the earliest-viewable physics update was 0, 30, or 45, when Nepster designed the maps.

If you want to avoid false positives (solutions that pass but what Nepster would have ruled a fail), you might even rule that lix spawn 4 seconds after 0. But maybe that's impossible. I'd solve the maps as fast as possible and see what you get. IIRC the Nepsterlix thread tells you: 15n + 30 is doable, and we're unsure if 15n is doable.

https://www.lemmingsforums.net/index.php?topic=2792.msg68337#msg68337
https://www.lemmingsforums.net/index.php?topic=2792.msg68341#msg68341

-- Simon
#7
Saturday, October 17th, 17:00 UTC. I'll join!

Saturday will be on October 17th, not on the 16th, that's a Friday. I'll take the liberty to edit the date number in your OP from 16th to 17th.

Flopsy: talking of Blockers, I hope geoo comes to the Lix session
Flopsy: there's 14 separate clips I think and some of them are Arty arguing for Blockers and geoo against them


-- Simon
#8
Lix Levels / Re: NepsterLix
September 12, 2026, 07:42:09 AM
You mowed through all the hard maps. Congratulations.

House of the Mad Trickster: Nepster's replay will still solve the level even if we

Change candidate
cover the rectangular hole's entire ceiling with buzzsaws. Climbers will now die in the rectangular hole. Reason to implement this change: The level will feel more honest; deadly nooks are deadly.

I'll implement this change.

-- Simon
#9
Lix Main / Re: Lix 0.10.35 released
September 11, 2026, 08:45:04 PM
Lix 0.10.35 released.

:lix-cool: Download for Windows 64-bit -- recommended
:lix: Download for Windows 32-bit -- fallback for ancient machines
:lix: Download for Linux 64-bit
:lix-evil: Source code
:8(): Changelog
:8:()[: Issue tracker

How to update
Quick and dirty: Extract over your old installation. Level moves will then result in duplicate levels that remain in your level tree.

Clean method: Extract to new directory, then copy these directories from old Lix into new Lix:
user/
replays/
...and any levels that you've built yourself or added manually.



  • New user option: When you rewind the previous assignment, to exactly which nearby tick should Lix rewind? Before, this was hardcoded as −1, i.e., you rewound to the tick before the assignment. Now, you can set it to, e.g., −2. When you rewind like that, then re-assign, you've tweaked the assignment to be 1 frame earlier.

    • The default is −1. This is the behavior from Lix 0.10.34 and earlier.
    • kaywhyn will want to set it to −2. This replicates NL's behavior.
    • To do that: Go to "Options" -> "Game Controls" -> "<< rewinds to nearby tick".

  • Replace library SDLang-D with sdlite. These libraries parse and generate SDLang, the file format of the trophy file and the user option file. Reason: sdlite is faster and smaller. This removes two dependencies (sdlang-d and unit-threaded) and adds one dependency (sdlite).

This release is for kaywhyn's stream.



-- Simon
#10
Lix Main / Re: Lix for kaywhyn
September 11, 2026, 06:54:59 PM
Cool, thanks!

Your end of the deal isn't urgent. As long as you'll come back to it, say, in October/November 2026, it'll be good feedback. Tonight, focus on your stream.

I'll look into releasing 0.10.35 with your feature now.

Edit: 0.10.35 is released.

-- Simon
#11
Lix Main / Re: Lix for kaywhyn
September 11, 2026, 06:37:47 PM
kaywhyn: Want to make a deal?

You'll get your feature (button rewinds to skill-minus-2) in time for the stream tonight (Friday, September 11th).

In exchange, in a few weeks, you'll record some footage of you trying the tweaker. Let's say 30 minutes of gameplay? It doesn't have to be in your regular streams. You can upload that footage as unlisted. :lix-smile:

-- Simon
#12


Besides hotel rooms, it's also possible to look for a holiday apartment (Ferienwohnung).

If exactly 2 guests are going to sleep elsewhere than in my living room (I'll call such guests "outside sleepers"), sharing 1 hotel room is roughly the same cost as sharing an apartment. With 3 or 4 outside sleepers, finding a flat for the group becomes sensible. The closest hotel is 1.7 km (1 mile) away from my place anyway.

       January               February                 March       
Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su   Mo Tu We Th Fr Sa Su
             1  2  3    1  2  3  4  5  6  7    1  2  3  4  5  6  7
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    8  9 10 11 12 13 14
11 12 13 14 15 16 17   15 16 17 18 19 20 21   15 16 17 18 19 20 21
18 19 20 21 22 23 24   22 23 24 25 26 27 28   22 23 24 25 26 27 28
25 26 27 28 29 30 31                          29 30 31


I'm loosely considering the last week of February 2027: Saturday, February 20 through Sunday, February 28. It's also possible to drag that a few days earlier or later. E.g., if it's better for your travelling, include the earlier Friday, Feb 19 or the later Monday, March 1.

The second choice would be mid-March. Icho doesn't have time in early March.

Everybody can come here for any time you like: You can come for the full week, you can come for a single day, or for anything in between. If neither date suits you, please complain. In the upcoming days, I'm going to file at work the February vacation.

-- Simon
#13
The main concern is that a moving focus stands to be irritating.

What are the use cases? Manually anchor camera in advance to the lemming that will receive the next 5 assignments? You need to know in advance what's going to happen. Yes, if you know that in advance, then you can use this to avoid manual scrolling and zooming. And zooming into the lemming (instead of into the cursor) is good then (it's the only way).

But why would such an interactive feature (manual anchoring to lemming) useful in televsion mode (that I never use)? It should be noninteractive, right? Or do you think darkshoxx would use it for the showcase? You may want a big fat arrow over the anchor, for the audience.

Ways to soothen the worry of the moving focus: Camera could jump according to some hysteresis, e.g., when anchor closer to camera's edge than 20 % of screen length, camera will jump into that direction by 50 % of screen length, putting the lemming back near the middle with view ahead. Unsure if the concentrated nastiness of huge jumps is any better than the smeared-out nastiness of a permanently moving screen. You can smoothen jumps by making the camera focus chase the anchor, not jump to the anchor, but still. And zooming into the lemming would be bad then, and we should continue to zoom into the cursor.

Ways to anticipate which lemming is important. Then you don't have to anchor manually. This ties into that other thread (I'll edit this) where I mull about painting markers over lemmings that are going to receive skills soon. Or anchor could switch to lemming that is going to receive the next skill half-time between any two assignments.

-- Simon
#14
Lix Main / Re: Lix for kaywhyn
September 02, 2026, 09:00:16 PM
You're welcome. Thanks for prodding me to write down the findings!

Right, I hope that nearly all levels are solvable without the power tools of rewinding and tweaking. You should be able to choose how you play. The best puzzles are challenging but simple. If you need the power tools, they're available. If you don't need/want them, they shouldn't get in your way.

Related to the topic of powerful features:
Should RetroLemmini get a rewind feature or would that change how it feels?

-- Simon
#15
Lix Main / Re: Lix for kaywhyn
September 01, 2026, 07:44:03 PM
Hi! It was a half-failed successful UI experiment. We don't keep this -1 button exactly as-is, but I learned a lot.

The old button (as in the current stable Lix 0.10.34) was rewind-to-previous-skill. When you pushed it, the view rewound to the most recent skill assignment, i.e., to the latest assignment that is still earlier than the currently viewed physics update. This didn't change the replay, it merely rewound the view.

The experimental button (-1 in the screenshot) doesn't rewind, but instead changes the assignment to happen earlier by 1 physics update. Then it recomputes physics (based on that changed history) to the currently viewed time.

Inspiration came from watching kaywhyn play Lix. kaywhyn used the rewind-to-previous-skill in the following maneuver:

  • Misassign skill, but don't know yet that it's wrong.
  • Let physics play on to see the outcome.
  • Press rewind-to-previous-skill.
  • Rewind 1 extra physics update.
  • Reassign the skill. This cuts the skill from the replay and inserts a skill that is 1 physics update earlier than the deleted skill.
  • Let physics play on to see the outcome.
  • If not happy, repeat from #3.

kaywhyn complains that this is too elaborate.

Idea: Merge everything that happens from #3 through #6 into a single invocation of the -1 button:

  • Misassign skill, but don't know yet that it's wrong.
  • Let physics play on to see the outcome.
  • Press the new -1 button. This pulls the misassigned skill earlier by one physics update and recomputes history. You don't have to rewind.
  • If not happy, repeat #3.

The outcome is exactly the same in both workflows.

Downsides:
  • I threw the -1 button onto the forums here without explanation. It was deliberate not to explain it. kayhwyn didn't understand it immediately. This is a problem on my side, not on his side. User interfaces should be clearer than this.
  • Repeated invocation of the -1 button pulls the skill so early that it fails to apply. E.g., a single lix falls, then walks. You can assign builder at any point to the walker. You can then pull the builder assignment earlier, but if you pull it so early that the builder assignment would now be to the faller, it's invalid (fallers can't build). Where is the skill?
  • You have no way to see in advance whether the -1 button will help you or if it will merely eat your skill. You only see its outcome at the later game time, not the time of assignment.
  • Some invocations will look like it pulls back by some random amount because you always see how it has played out in the future. It's hard to build the correct mental model from observation.

-- Simon