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.

Topics - Simon

Pages: [1] 2 3 ... 10
If you wish to ax options, redesign the blinking time limit.

Reasoning: Warning at 30 seconds is far too late. What good does it do? If there is any goodness, why wait until 30 seconds left instead of doing the goodness in the beginning? Why hit at 30 seconds instead of at 5 seconds, or even at the very end, because only then physics are affected?

Blinking text is problematic: We want to emphasize information. The worst we can do is hide that information temporarily, but blink is exactly that. At least blink in different color than transparent.

Some platforming games make your character blink transparently during invincibility frames. Massive problem. Much better to flash in a different color.

List of NL options
Option survey results

General rambling about options. The ideal reason to ax an option is a redesign that combines the goodness of old-yes and old-no. Let's assume the option exists for a reason, it covers a need. Unless we can explain why the need is covered otherwise, we shouldn't axe options.

People like what is familiar, and sometimes perceive that as simpler.

The Lemmings community shares familiarity of L1. As irrational as this may sound, it might be correct to design purely for this familiarity devoid of any other reason. E.g., make overproportionally many options for this. The SI/SR option is of this very nature already.

Compared to physics, options just for fun incur less permanent damage; if you grow really sick of something, could axe it later.

-- Simon

Lix / Multiplayer: Sun Sep 10th, and Tue Sep 19th
« on: September 07, 2017, 11:08:24 pm »

geoo and I plan a Lix multiplayer Session on Sunday, September 10th at 18:00 UTC (= 11:00 a.m. Pacific daylight savings, 12:00 noon in Utah, 19:00 in the UK, 20:00 in Germany or Austria, and 21:00 in Finland). Lix 0.8.5 is released; if you had the game crash on you, you might get more informative errors with 0.8.5. But any 0.8.x can join.

Since that's on short notice, and Flopsy works weekend shifts, I propose another multiplayer session for Tuesday, September 19th at 18:00 UTC. Flopsy, would that suit you? I didn't choose Monday 18th because it's Icho's night before exam.

Depending on your replies, I'll be fine with re-scheduling the Tuesday, September 19th session. Don't be shy to propose something else!

Voicechat (click to show/hide)

-- Simon

Bugs & Suggestions / NLEditor on Linux/Mono, widgets misshapen
« on: September 07, 2017, 08:46:26 pm »
Mono on Linux is popular to run C# apps. I've managed to build NLEditor. See attachments for screenshots. Observations:
  • The light dropdown menus have light text. I have a desktop theme with dark widgets and light text. That's probably a bug in the Mono widgets: They specify light bg, but keep user's text color.
  • Some widgets are wider than they should be, they reach underneath the level map. (Or the level map is too fat and goes over the widgets on the left.)
  • Tile pickers (empty boxes under the map): The form-designed tile boxes on the left are too big. The programatically-generated boxes on the right have the correct shape.
  • Number pickers: Numbers center within the entire widget. Nepster expected them to center merely within the arrow-free portion of the widget.
I reported this in #neolemmix earlier today. This post is for reference. None of this is urgent.

NLEditor doesn't have a readme or build instructions yet. Here's how I built it on Archlinux:
  • Install mono.
  • git clone
  • cd nleditor
  • xbuild, run without arguments, it will find the build info by itself. It warns that it's deprecated, but the mono distribution doesn't seem to ship with any other build tool. And xbuild seems to build the project without problems.
  • mono NLEditor.exe
-- Simon

Lemmings Help / Programming language to learn first (re: Flopsy's chat)
« on: August 31, 2017, 06:15:57 am »
<Flopsy> SimonN: honest question for you, for someone who would like to learn coding where would be a good place to start. Python, C/C++ or something else....?

This gives reasonable recommendations:

Python is popular as a first language, very straightforward to get programs to do what you want. For large programs, I prefer static typechecking which Python doesn't have by default, but that's not a strong case against Python as a first language.

At least one university teaches D as a first language, with this book:

I think D and C# are similarly nice to learn first. Main downsides: D isn't widespread even though I love it, and C# is tied to Microsoft's .NET virtual machine, even though there are ways to run it on Linux.

Java 9 or 8 or Scala are viable first languages, but these depend on the Java virtual machine. Some would like to avoid the JVM.

C, C++ maybe not as first languages, but it's certainly healthy in the long run to look at least at C.

<Flopsy> what type of coding would help me understand NeoLemmix better

To understand the NL source, learn any language of the above, along with the basics of object-oriented programming. Even though NL's Delphi source will not be in your language, you can guess what happens because you recognize the principles.

To modify the NL source, catch Nepster in chat for what Delphi to install, then build NL from source and experiment with it. Nepster's editor will be in C#.

-- Simon

Level Design / Clear & precise level titles
« on: August 30, 2017, 07:26:32 pm »
Hi folks,

I've planned to write an essay about level repeats. One of my arguments hinges on good level titles. Titles easily fill a topic of their own -- here it is!

We care about levels. Levels are the unit of our culture. We create levels, we play levels, and we discuss levels. Good level titles help us with that: Titles are our mental handles when we share levels and ideas.
  • A title should be clear: When I see a level, its solution, and its name, I should recognize a connection. This is good because I can then remember the name without effort. When I'll discuss your level later, I'll have its landscape or solution in mind, and the title will come to me easily.
  • A title should be precise: It should be hard to associate the title with other levels. When I read a precise title in a discussion, the chance will be high that I think of the correct level. That is good because it encourages joining an interesting discussion.
If we accept these benefits, we'll arrive at good recommendations.

Say the title, not (only) rank & position! When you discuss levels, always give the title. Rank & position cannot be precise, any level could be at that position. If you'd like to abbreviate long titles using rank & position, fine -- but please state the title at least once. Sometimes, levels change position, rendering rank & position even worse a substitute for expressive titles.

Puns or pop culture, if any, need a connection to the level's landscape or solution. Song titles or movie titles can be good level titles, but it's very hard because they are so flowery. Titles don't become any clearer merely because you like a song; others don't necessarily know your taste in music. Once you've designed several levels, taste in music or movies cannot give precise names anymore on its own: Any Tame level could be called Gone With the Lemming.

Sometimes, repeats copy the terrain of a good puzzle and give 20-20-20-20-... skills. You've stripped the puzzle but haven't inserted any fresh idea. How will you name the easy level? Most titles cannot be precise because all ideas would also apply to the hard version. Lemming Drops and Bitter Lemming are titles of such easy versions, they're void of any connection whatsoever. Maybe find a pair of titles where either title suggests that there is a complementary level?

If you're really fond of a title even though it's not clear or precise at all, decorate the level accordingly. That won't create the strongest connection because the puzzle's solution will be unrelated, but it's far better than nothing.

A title shouldn't merely fit the tileset, it should fit the level. Which levels exactly were Ice Spy, Snow Joke, and On the Antarctic Coast? Fitting to the tileset, however, is a good start. Can you think of a unique detail in the level's terrain or solution, and tailor your title towards that? That can turn a passable title into a great title.

Keep titles reasonably short. Avoid titles that are annoying to type, like AAAAAARRRRRRGGGGGGHHHHHH!!!!!!. Our culture is about sharing ideas in written form, we will type level titles many times.

-- Simon

Lix / Multiplayer 2017-09-03
« on: August 25, 2017, 02:48:51 pm »
Hi all,

Rubix and I are planning Lix multiplayer for Sunday, September 3rd, at 18:00 UTC (= 11:00 Pacific daylight savings, 20:00 in Germany or Austria).

Who's up? :lix-grin: It's perfectly fine to play for the first time.

You need Lix 0.8. At the given time, click Network Game and connect to (large button in the networking menu).

Voicechat: I recommend Mumble. Connect to this server:

Servername: Lix
Address: (this is now the same as
Port: 64738 (this is the default)
Username: (type whatever you like)

-- Simon

Lix / Lix 0.8.8 released
« on: August 21, 2017, 11:53:34 pm »
Download the newest Lix 0.8.x:

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

Replace 0.6 entirely: Lix 0.8 changes many tilesets and levels. Don't copy into your 0.6 installation. Instead, extract 0.8 into a new directory. If you'd like to preserve settings and level progress, copy data/user/ from your 0.6 or 0.7 installation into 0.8. You can delete 0.6 and 0.7.

Lix 0.8.0 released.

  • Stable 0.7.22 physics. I would like to keep these physics at least for several months: 5/9 digger with antiRazor, tumbler splats based on pixels fallen and initializes pixels fallen according to fling speed, and all other physics changes from the 0.7.0 first post.
  • New tilesets over 0.6: Raymanni's Gore, Lab, Toys, and my renovation of Matt's Oriental set. I removed my 11-year-old programmer art tilesets.
  • A ton of bugs closed from 0.6, see the changelog for all the fixes during the 0.7.x experimental releases.
  • Tooltips during game explain directional select, priority invert, and double-click on nuke. Can disable tooltips in the options menu.
  • Removed the unused editor button to add decoration. To fill the void, the button to add terrain is twice as large. Not perfect, but good for now.
Thanks to geoo, Nepster, Proxima for revising levels, proving solvability, and dissecting physics. Thanks to Raymanni for the awesome tilesets -- I should have included them last year already. Thanks to möbius for some neat levels in these sets:

It Takes Time to Build by möbius in Raymanni's Gore tileset

Theresa Falls up the Stairs by möbius and Nepster in Raymanni's Toys tileset

-- Simon

Lix / Physics: Digger-digger cancelling, steel sensitivity
« on: July 31, 2017, 10:57:27 am »

C++ Lix through 0.7.12: A digger has 16 looping frames. She removes earth 12 frames after assignment during this loop. Earth is removed every (12 + (16*n))-th frame.

Proposed: Remove earth during the final frame of the loop instead. Then, a digger removes earth every (16*n)-th frame. For the animation, I'd design 4 frames of startup that run into the old 16-frame looping animation.

Reason: In 0.7.12, you can cancel an already-working digger by (assigning digger to a walker in the digger pit). The new digger removes earth sooner than the old digger, causing the old digger to fall. That leads to backroutes.

There are two interesting alternatives to 0.7.12: Give the digger 3 or 4 extra frames before entering the usual cycle. If we give 3 frames, then you can't cancel diggers by assigning new diggers, but you'll have a frame-perfect possibility to have the diggers moving in unison very close to each other. If we give 4 frames instead, we remove this overlapping assignment; the old digger will remove earth sooner than the new digger.

geoo is in favor of this change. This makes the digger even weaker in comparison to the miner, but not by much. It removes a backroutish digger-digger single-cancelling. Double cancelling (both diggers stop working) never happens, either with or without this proposal.

Damage to replays: Lemforum coverage down 236/240 -> 184/240, that's 52 levels to be covered anew. NepsterLix coverage down 107/107 -> 71/107, that's 36 levels.

geoo assumes that most levels' ideas remain intact, a select few need spawn interval 60 -> 64 or a small shift of terrain.

-- Simon

Lix / Musings on our level culture, Summer 2017
« on: July 31, 2017, 01:37:35 am »
Many design a loose level or two, but don't have the patience to design entire packs. Have an outlet for loose levels. A grab-bag pack that's not sorted or designed? A cloud like the level-sharing feature as in Super Mario Maker or Chuck's Challenge?

Improve the links between levels and replays. From a level, let the engine list all installed replays for that level. From a replay, get a quick way to go to that level in the singleplayer browser. Or extract the included level to somewhere, then immediately open the singleplayer browser on the extracted level. Replays and levels are so strongly associated, Lix's support is feeble. Consider design problems like different level versions when one replay solves all versions. Is level filename a good key?

Should levels always ship with proofs (= replays that solve the level, to guarantee solvability)? Should the proof be inside the level, or, as it is now, in an external file? Should the engine allow many intended solutions, and many slight variations of them, with logical formulas à la "solutions A and B must work, and at least one of C and D must work, and neither E or F may work because they're backroutes"?

Anything here would be long-term goals. :lix-cool: We've got bigger more straightforward fish to fry.

-- Simon

Lix / Walker skill cancels, then always turns?
« on: June 25, 2017, 05:21:17 am »

I propose another physics change before 0.7 becomes stable. Edit 2017-07-17: I've rejected the proposal and will keep 0.6 walker physics.

0.6 walker: If target lix is working*, revert to walker. Otherwise, turn.
0.7 proposal: If target lix is working, revert to walker. Turn in every case.

*) Working activities are builder, platformer, basher, miner, digger, blocker, batter. Non-working activities are everything else that you can nonetheless assign walker: walker, runner, lander, ascender, shrugger, ...

  • Skill becomes state-free! No matter what lix you assign, as long as the assignment is legal, she will always turn and be a walker. Straightforward for the mind. This feels good.
  • Skill becomes simpler to explain and discover. I want to improve the skill icon: The walker shall face left and get a U-turn arrow pointing leftwards.
  • In singleplayer puzzles, turn-by-walker happens twice as often as cancel-by-walker. Source: I ran the replay database in a custom Lix build that counted the usages. Let's make the skill do what we often want.
  • In multiplayer, turn-by-walker is the main use by far. Let's make the skill always do what it often does.
  • The always-turning walker keeps all obvious multiplayer use cases of the 0.6 walker. For example, even with the 0.6 walker, you couldn't spam walker to cancel a bunch of builders -- you risked clicking on an already-cancelled lix, turning her. Instead, you would cancel a dense bunch of builders spamming basher or miner.
  • Can introduce backroutes in puzzles with precisely-trimmed skills. Under walker-always-turns, you get for 1 walker what cost 1 or 2 walkers before. You can't find these backroutes with the replay checker! Even though I deem such backroutes rare, you never know.
  • Breaks tradition with Lemmings 3. That's OK.
  • Introduces a difference to NeoLemmix. Acceptable but not so OK.
Replay breakage: We would have to re-prove about 15 lemforum levels, 6 NepsterLix levels, and 15 Rubix levels. These figures are measured against Lix 0.6 where we have perfect coverage, not against 0.7.6 that isn't fully covered yet.

List of levels that might break. Proxima has already looked over the lemforum levels. His opinion: Most of the unproven levels give plenty of walkers anyway.

I love the state-free walker. It simplifies an awkward if-else. I'd like every skill to do the same thing all the time! We need the walker for multiplayer, it feels good to have the walker there. But (only cancelling, never turning) feels weak, Clones had such a walker and it was boring. (Always turning, never cancelling) seems too strong in singleplayer: You could make a miner zig-zag by walker assignments. Even though (always cancel, always turn) is two things, it seems the least-hurting way out of this design thicket.

-- Simon

NeoLemmix_11-14-19_1cf3523 extracted into fresh dir, run in Wine.

I get Msgboxes with "An error occurred while trying to save data." frequently during seemingly standard operation on this new NL set-up. Dismissing the msgboxes continues the expected program flow. No crashes. These msgboxes spawn e.g.:
  • wine NeoLemmix.exe. Bass.dll not found, fine. You are running this in Wine, do you want windowed? Yes. An error occured while trying to save data.
  • Welcome to NL, use which configuration? Select default with Lix, Next. We're in the main menu. Click, hoping that something meaningful happens. An error occurred trying to save data.
  • Preview of Covox level 1 displays. Click, hoping that we can play the level. An error occurred trying to save data.
The second issue is that this error is not informative. What failed? Dir not exist? Maybe only hits on Linux? This uninformative error wording is the bigger issue -- with clear error, I might work around the original issue and continue testing. Now instead, I abort testing after 5 minutes because too painful. <_<

The log file has a datetime of the session, but no errors.

-- Simon

Lix / Lix 0.7.22 experimental
« on: May 15, 2017, 02:02:03 am »

Update 2017-08-22: Lix 0.7.x is obsolete -- instead, get the most recent Lix version.

Lix 0.7.x experimental build.

Download for Windows
Branch exp in lix-unstable

Keep separate from your stable Lix 0.6.x installation! Levels, tileses, physics all differ. Let's look for physics bugs in this experimental build, make levels solvable, and re-cover levels with solving replays.

Proxima, Nepster, Rubix: See my next post for level pack maintainers -- I'll list which levels were affected by tileset changes, which levels need new proofs due to subtle physics changes, ...

  • Nepster's miner mask
  • Fix #129: Floater doesn't land inside terrain and turns (Bug found by Ramond in summer 2016)
  • Floater doesn't go flatter than tumbler. If you assign floater to a fast tumbler, after opening the umbrella, the lix can't gain horizontal flight over the tumbler anymore. Change suggested by Proxima in summer 2016, might affect solution to Steve's Endeavor.
  • Fix #147: Digger checks inner 14 pixels for steel. Any steel there aborts. On either side of that checked area, there is one lo-res pixel where we ignore steel. (Before, the digger stopped when there was lots of steel on the left, or lots of steel on the right, or a tiny bit amount of steel on either side. That was too complicated.)
  • Builder creates brick further ahead, like in NL. No builder backstep. Can't seal off climber ledges behind yourself anymore by building immediately after ascending.
  • Builders and platformes double their most recent brick when they run into a blocker. Reason: This prevents holes in bridges and allows the crowd to follow.
  • Blocker field narrower by 1 lo-res pixel on both the left and right. Blocker field is exact same as in 0.6, this is simplest. Even though it's possible to prevent crowd from following a builder, with most blocker placements, the crowd follows.
  • Fix #199: Don't spawn lix outside of torus bounds. Immediately wrap coordinate before the first death check.
  • Added Raymanni's 3 tilesets. Thanks, Raymanni, for these excellent tilesets, released in the public domain along with Lix. I should have included them in Lix over a year ago.
  • Remade the oriental set entirely: Removed matt/oriental, remade every tile with new looks and possibly different physics, added some extra tiles. Thanks to geoo for submitting awesome bamboo poles and pebbles! This new set is simon/oriental. All included levels point to the correct new tiles, but, due to changed tile shapes, some levels aren't solvable.
  • Removed simon/earth, simon/brick, simon/steel. Modified Hrududu slightly, the only level that used simon/steel.
  • Removed geoo/construction/trampoline.T.
  • Renamed amanda/occult/occult_* => amanda/occult/*. All levels point to the renamed tiles.
  • The steam in geoo/construction has alpha channel to look good overlapping itself, and its grey is lighter.
-- Simon

Lix / Multiplayer on April 29 or 30 -- geoo visits Simon
« on: April 21, 2017, 05:51:20 am »

geoo is going to visit me next week. We'll play multiplayer Lix, come join everybody! :lix-grin:

I'm proposing Saturday, April 29, at 18-20 UTC 16-18 UTC. Other times are fine, step forwards with your own suggestion.

IRC is #lix, preferrably Mumble for voicechat (get details in IRC), Discord for voicechat works too.

-- Simon

Lemmings Help / .lvl and .dat: How to play and edit
« on: April 03, 2017, 11:18:51 am »
This topic deals with the ancient level format for DOS Lemmings. Level files in this format end with .lvl, 10-level-packs end with .dat.

Consider NeoLemmix or Lix: DOS Lemmings's .lvl/.dat format was popular around 2000 to 2010 for custom levels. Since 2014, the most popular engines are NeoLemmix and Lix. We encourage you to create new levels for these games.

Play old Lemmings games: This topic is about custom levels. If you want to play DMA's old Lemmings, Oh no! More Lemmings, Holiday Lemmings, ..., get a Lemmix player, or run the old games in DOSBox. You don't have to set up Lemmix editor.

See also the 2013 list of game engines and editors.

Lemmix + Eric's Lemmix editor

Lemmix is a lemmings clone that comes with a level editor and is probably your best choice for playing custom levels in .lvl and .dat format, like most of those on the level database, as these levels were designed for Lemmix/CustLemm physics and might not work in other clones. Due to the physics it's also a good choice for the challenges from the Challenges Board. Lemmix features saving and loading replays, savestates and a few more convenient features. Setting it up is a bit complicated, and it has no music.



Get CustLemm which essentially merges the graphics files from Lemmings and ONML. Extract Lemmix and open the file LemmixStyles.ini. Navigate to [style_9], and two lines below you should find "CommonPath=". Enter the path where CustLemm is located there. (Optional: If you have the original game and/or ONML, find [style_0] and [style_1] and put the paths to Lemmings and ONML there respectively. This will allow you to play the original and ONML levels.)

Now run Lemmix, and go to Tools -> Compiler. Select 'Custom Lemmings' and click 'compile all graphics sets for this style'. (Optional: you can do the same for Original Lemmings and ONML.)


When opening a .lvl file, you'll be prompted to select a viewer style. Select 'Custom Lemmings' there. When opening a .dat file, you'll be presented with a level list. Right-click on that dialog, select 'change viewer style' and select 'Custom Lemmings'.

To play a level, open it and press [F2]. Press [u] to save a replay of your solution. Press [Shift]+[R] to load a replay during play; make sure you are already playing the correct level.


CustLemmix plays custom level packs from the level database with the Lemmix Player. Switching between packs is less convenient than with Lemmix: Rename the level pack to LEVELPAK.DAT (or whatever name you specify in the .ini) and put the pack in the CustLemmix folder.

CustLemm, LemEdit

Obsolete since 2007, but historically important. Both of these run in DosBox. CustLemm is a hack of ONML that loads any given LEVELPAK.DAT instead of the ONML-included levels. See the included readme for instructions.



Creating and playing custom levels in Amiga Lemmings.


-- Simon

Lemmings Discussion / How to play and create custom levels
« on: April 03, 2017, 08:12:34 am »
Play custom levels

Download a level pack, e.g.:
  • Lemmings Reunion by IchoTolot has the classic 8 skills, starts easy, then becomes challenging. Runs in NeoLemmix, a custom Lemmings engine.
  • Lemmings Omega by namida has new tilesets, extra skills, teleporters, unlockable exits, zombies, ... Runs in NeoLemmix.
  • Lix community pack is bundled with Lix, a free Lemmings-like single- and multiplayer game.
Our level pack board offers even more exciting levels.

NeoLemmix has the most packs. Lix is the second-most popular engine. SuperLemmini and Lemmini haven't seen many packs recently. Some old user levels in the .lvl/.dat format need vanilla Lemmix or CustLemm.

Create levels

For NeoLemmix:
  • Download the NeoLemmix level editor.
  • Run the editor, select "File" -> "New level".
  • Right-click into the empty space, select "Insert Terrain" or "Insert Object".
  • Choose skills and other settings in the dialogs under "View".
  • Select "Tools" -> "Play this level".
For Lix:
  • Download Lix, it contains a level editor.
  • Run Lix, go to Single Player, and select "New Level" near the bottom right.
  • Click the tree button to insert terrain in the empty level.
  • Add hatches and exits, and visit the "Skills" and "Constants" dialogs.
  • Save, exit the editor, then play the level from the singleplayer browser.
Share your cool levels on the forum!

-- Simon

Pages: [1] 2 3 ... 10