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 4 ... 13
NL 12.04

On first start, player offers two key mappings, functional and traditional. In functional, RMB (right mouse button) selects walker.

RMB should be hold-to-scroll instead.

Ideally, RMB is also select-walker, but that is far less interesting. With the questionable design where function-to-key bindings must be injective, anything else can be select-walker, I don't care much, I've bound Left Control for select walker but never use it.

-- Simon

Challenges / DOS L1 thread
« on: December 19, 2018, 02:54:13 pm »
TASVideos is a community for tool-assisted speedrunning. They have a thread about DOS Lemmings 1 with some action from 2014, but it slept for 4 years.

Now, in December 2018, there is new action:

Nobody has concrete plans to TAS L1, but a few prolific TASers are discussing first ideas. I'll happily share information there about the L1 physics. I'm not the most knowledgeable of all Lemmings Forumers, but I hope it's still worth it.

-- Simon

Non-Lemmings Gaming / Zendo: Realizations
« on: December 16, 2018, 07:01:37 pm »
Realizations about Zendo
Part 1: Different piece sets

I will write several posts about the tabletop game Zendo.

Background knowledge: Rules of Zendo, a game of inductive logic.

In Zendo, you build structures of pieces. Any source of pieces is eligible, but ideally you have many copies of each piece and can compose pieces in many different ways. The structures should be easy to grasp by looking.

Example piece sets

The 2017 Zendo release ("Zendo 2.0") has 3 shapes in 3 colors each. Everything is the same size, there are no pips on any piece.

Icehouse pieces. Everything is a pyramid. The 2001 Zendo boxed set has 4 colors of pyramids in 3 sizes each. Large pyramids had 3 pips, medium pyramids had 2 pips, small pyramids had 1 pip.

Digis, and structures are then natural numbers.

Letters from the alphabet. We played Zendo on Lemmings Forums where structures were finite-length strings over A-Z.

Good piece sets

Above, I've already sorted the piece sets according to how good the resulting game feels. The Zendo 2.0 pieces are the best. Geometric shapes and colors seem to fit the game much better than letters or numbers. Visual pattern recognition is a deep part of Zendo.

I have an irrational soft spot for the Icehouse pieces over the 2.0 pieces. The Icehouse pyramids come in green, the table looks more colorful with red/yellow/green/blue pieces, and still the number of colors is small enough.

I've always thought our Lemmings Forums A-Z game produced insidious problems with harder rules. That will warrant an extra post these days. Until then!

-- Simon

Lix Main / Design history of Lix
« on: December 04, 2018, 12:49:04 am »

Double resolution

Lemmings 1 and Lemmings 2 were written for 320x200 VGA mode. The playing characters are 8 or 9 pixels high, walk ahead by 1 per frame, and builder bricks are 1 pixel high.

Lix is double-resolution: Characters are about 17 pixels high, walk ahead by 2 hi-res pixels, and builder bricks are 2 pixels high. More precisely, physics work with 2x1-pixel-chunks. All lix' x-coordinate is always divisible by 2. Only the y-coordinate may be any integer. A 2x1-chunk of land counts as solid as long as at least one of its two pixels is solid.

Where does this concocted rule come from?

In early 2003, I scripted levels for the freeware game Gravity Strike, this ran with hardcoded 640x480 fullscreen. In the early 2000s, CRT monitors were widespread and could display any resolution sharply -- up to a point. But every monitor could display 640x480, thus Gravity Strike's author decided to hardcode this size.

I wrote GS Lemmings, a Lua script that ran in Gravity Strike, removed everything that the game normally provides (spaceship, terrain, enemies, status panel) and instead loaded my own graphics and ran my own logic. This is the birth of double resolution: It was easiest to work with what I had.

In Lua, apart from numbers, everything is a reference type, everything is garbage collected. I had no idea what was happening under the hood. Would arguments be passed by value or by reference? What is the difference between calling functions object.func() or object:func()? No idea. Programming was magic. If it failed, I would guess and re-try. I would never search the web for help because I found the technical explanations hard to understand. (Solution: object:func() is equivalent to object.func(object)).

In 2006, I finished my civil service -- back then, it was mandatory for every male German to either serve in the military or work civil service for 9 months. I had some time before university started in fall 2006. What to do?

I learned C++ and began the work on L++, a Lemmings variant with hardcoded 640x480 fullscreen resolution. Why would I do that? It worked in Gravity Strike, and I still had a CRT monitor that could display any resolution well. I kept my rule that the tiles could be anything and need not stick to 2x2-blocks. I would not upscale. I would load the tiles as they came from disk. That was easiest.

The 2x1 physics instead of 1x1 come from the desired walker speed. It was simpler to move always by 2 horizontal pixels than to write a basic walk action for 1 pixel, then call that twice per frame. The walk cycle would look at two pixels and deduce from them together whether the 2x1 chunk was air or solid. I didn't expect any odd cases from the rule.
Of course, there are odd cases (I should link the example gifs).

L++ became Lix in 2010 and got ported to D in 2015. Like Theseus's ship, all code, graphics, etc., got replaced over the years, but really, 2006 L++ was the first version of Lix.

With my own game project at 640x480 fullscreen hardcoded, I spent considerable time on choosing my first laptop in 2007. I wanted 4:3 aspect ratio for my laptop screen, but that was getting unpopular. Laptop computers were booming, and widescreen displays had gotton common. I loved 4:3, why would anybody want 16:10? Documents, websites, code, etc., everything is vertical, but most importantly, 16:10 TFT displays would blur at 640x480 hardware fullscreen.

Lix/L++ is now 12.5 years old and programming been my longest-standing hobby. Now, Lix supports any screen resolution, windowed or fullscreen. The user interface scales smoothly, a major design goal during the 2015 rewrite.

Even with the user interface resolution decoupled from the physics resolution, Lix still has 2x1-hi-res-physics. I don't like how confusing the 2x1-block rule can be. But it has been so deeply ingrained since the beginning. It allows for more graphical details on tiles. On the other hand, it forces tiles to have more details to look good.

tl;dr: It was easiest because of the hardcoded 640x480 resolution in the early versions. And now too much depends on it to get rid of double resolution.

Passage of time

More rambling, because I'm in the mood.

I feel like time is passing much quicker now. In 2003, GS Lemmings was released with 20 levels after maybe 2 months of work, with some bugs of course, some crashes, some reliance on 60 FPS -- Yes, the game would skip some physics logic, but not all physics logic, when the machine was slow! Horrendous bug! -- but it worked well enough to play. The 2-3 regulars on the Gravity Strike forums loved it.

Where GS Lemmings took 2 months, L++ required 3 years before I felt ready to post it on Lemmings Forums including networking mode. A more complicated feature, sure, and I wrote the game engine from scratch instead of relying on a host game.

It's been nearly 4 years since I started the rewrite to D in early Feburary 2015. I'm very very happy with the rewrite, I've pushed the game further, and I'm supporting different operating systems better than ever before. But are there killer features in D Lix that weren't already there in C++ Lix? Did the fundamental game take 2-3 years to implement in 2006 to 2008, and the 10 years after it has been only polishing?

Sometimes, I miss the days where I would implement buggy crap with trial-and-error, but have something cool to show after minimal development time. The 15-year-old kid inside me wants to feature-bloat on some side project. And the 5-year-old inside me wants to play that and get even more wild ideas.

When time passes linearly, memories increase only logarithmically. You remember so much from when you start a new activity. But then you get proficient, and you don't remember as much when you're performing by routine.

Consider the time after my civil service. I learned a good chunk of C++ and wrote a prototype-ish game, L++ with some singleplayer, in half a year. Then, I had nearly no other hobbies, obligations, or girlfriends, and could focus fulltime on L++. Now, 12 years after, I had comparable time after finishing the PhD, but I haven't started a new hobby in that time. But I already have so many hobbies -- games, Lemmings Forums, speedruns, tech projects -- that I've enjoyed in that time. They merely generated less impactful memories than starting a new hobby typically generates. That's why time seems to fly quicker.

At least I've finished xmas2018 on time. :lix-grin:

-- Simon

Lix Levels / xmas2018: Holiday-themed pack with 24 levels
« on: November 30, 2018, 12:32:21 am »

just in time for the festive season, Forestidia and I present xmas2018! This is a holiday-themed singleplayer pack for Lix with 24 levels, including one by Raymanni.

Get it: Download newest version of Lix, xmas2018 has been included since Lix version 0.9.22. Look in the folder levels/single/misc/.

Ideas behind the pack: This season is about love and caring. You don't have to implode, cube, or kill lix: In these levels, all lix must be saved. The 24 levels stand for the 24 days until Christmas. You can play one level per day, or try to solve them all in a single sitting. It's your choice.

Have some hot chocoloate and enjoy the pack!

-- Simon

Advent Calendar
The first level of the pack. 24 little doors with 24 little surprises.

Decorate the Tree
Join us in the homely living room. The holiday porcupine can't wait to see your newest tree stylings.

Home Time for Santa
Santa has delivered all the presents. The cookies were tasty. Let's help him leave the house through the chimney.

Docked at the North Pole
Join the expedition to Santa's home in the icy north.

Three Wise Visitors
Earlier, you've guided the Three Wise (Wo)Men through the desert. Now they must agree where to meet in the shed.

Lix Multiplayer Dates / Lix Multiplayer Saturday 2018-12-01
« on: November 21, 2018, 09:56:39 pm »

Let's play Lix Multiplayer on Sunday, December 2 Saturday, December 1 at 19:00 UTC. Who's in?

New and exciting! At latest 3 hours before the session on December 1, I will release Lix 0.9.22 with:
  • Bugfix against the crashes on huge maps: I'll provide a 64-bit executable that shouldn't crash anymore, and will encourage you to play the multiplayer session with that. Let's test some huge maps that night!
  • Xmas2018: a Holiday-themed Lix singleplayer pack with 24 levels by Forestidia and me. Dedicated topic and preview images will appear next week!
-- Simon


airwalk happens in Lemmings 1 and in Lix. I consider it a physics bug. Here are pictures taken in successive frames:

  • Many clustered walkers are immediately in front of the wall.
  • Assign imploder to one of the walkers. (It doesn't matter if you implode the first, last, or one in the middle.)
  • Physics update begins.
  • The imploder removes therrain. (Physics update terrain removers first, then skills that don't affect the terrain. This is why choice of walker to implode didn't matter.)
  • All walkers see the hole before they update.
  • (No check whether they have ground.)
  • All walkers notice open space ahead, thus walk one step ahead in the air.
  • All walkers notice the lack of ground, thus begin falling.
  • Physics update is finished, and the result is drawn to screen.
  • The fallers will eventually land on the ledge created by the imploder.
Problem: These walkers land on a ledge, but shouldn't be in the space over the ledge in the first place. It's weird that walkers react to the lack of wall immediately (thus can walk forward), but fall due to lack of ground only after airwaking once. It's also inconsistent with the general philosophy that terrain removers should immediately affect everybody in the same frame, in every way.

Proposal: Walkers should check for ground both before and after possibly walking forward. If they hover before the move, they immediately fall and don't move forward anymore.

Downsides of change: Walking is the most ubiquitous activity. If you have walkers in a digger hole, this change affects them as the digger breaks through. I haven't implemented any fix yet, thus haven't run the replay checker on this. Also, other activities might have similar bugs -- fixing only the walker in isolation might be inconsistent.

-- Simon

Lix Levels / Slipping Again: alternative solution?
« on: October 01, 2018, 05:52:20 pm »
Flopsy found:

Has some similarities to the intended route. Looks hard to prevent, merely finnicky.

-- Simon

Lix Multiplayer Dates / Lix multiplayer 2018-09-15
« on: September 06, 2018, 12:27:25 pm »

let's play multiplayer Lix again, and schedule a time nicely in advance. I propose Sunday, September 16th We changed it to Saturday, 15th at 18:00 UTC .

Any game version 0.9.x can join, which is everything released since summer 2017. Current is 0.9.19. Select Multiplayer from the main menu and connect to the central server.

-- Simon

Lix Main / Ceiling, how to check terrain beyond?
« on: August 28, 2018, 07:40:36 pm »

Lix die when they leave the map. I'd certainly like to keep this. But how should the terrain check beyond the ceiling behave?

0.9 ceiling rule: When a lix checks terrain beyond the ceiling, the game answers with the highest pixel still inside the playing area.

Problem (see gif above): Walkers see the final builder brick as an infinitely tall wall and turn at this brick.

One may consider this a logical corollary from a reasonable rule. But many consider this unintuitive. In particular, the builder herself dies because she doesn't check again for terrain after building the infinitely-tall brick.

Here's an alternative to the 0.9 ceiling rule:

Open ceiling rule: When a lix checks terrain beyond the ceiling, the game answers with air.

Problem (see gif above): This thin bar is only 8 hi-res pixels thick. The lix have to climb 12 hi-res pixels to get out of bounds, and they happily do that because they can ascend up to 12 pixels into air.

One may consider this a problem of the level and thicken the steel bar here.

Compared with the 0.9 rule (left gif), the open ceiling rule (right gif) has another downside: Before climbers die, they see a ledge on top of the climbable wall. Instead of peacefully climbing into their death as in 0.9, the open-ceiling-rule climber will now ascend/hoist into death.

One may consider this a cosmetic problem and not care.

Or one could special-case the beyond-ceiling terrain check per skill: Climbers check with the 0.9 ceiling rule, and walkers check with the open-ceiling rule.

What are your opinions?

-- Simon

Closed / Autoreplay: Solve-then-replay shouldn't save identical replays
« on: August 12, 2018, 06:12:14 pm »
NL 12.3.0

1. Activate the option to save auto replays of solutions (on by default).
2. Play and solve a level.
3. In the postview screen, click left for the next map.
4. In the preview screen, press arrow-left to return to the map from step 2.
5. Click to enter the map.
6. This replays the solution from 2.
7. In the postview screen, click left for the next map.
8. In the preview screen, hit ESC several times to exit NL.

Look in the replay-autosave dir. The newest 2 replays are identical text files.

Expected: Game doesn't save a replay if this has already been saved.

Bonus report of what works: This bug does not hit when (step 2: playing the map manually) is replaced with (step 2': load an already-saved solving replay and let it run to the end). The game doesn't save any files at all during 1-2'-3-4-5-6-7-8. This is good.

-- Simon

Closed / [Fixed][Player] Smooth resampling, default should be off
« on: August 12, 2018, 04:38:57 pm »
NL 12.3.0

Install freshly. Start game, start a level with small width and small height. Have a huge screen. The map is blurred. To fix, disable smooth resampling, both for menu and for game.

Expected instead: Smooth resampling for game is alrelady off by default.

-- Simon

Lix Levels / Behind Bars (lemforum Hopeless)
« on: August 04, 2018, 06:41:42 pm »
Forestidia and I solved Behind Bars (8/12).

-- Simon

General Discussion / Double date in Berlin, July 2018
« on: July 11, 2018, 09:49:42 pm »

Over the weekend, I visited Forestidia. We have a relationship; some forumers have already guessed that.

Flopsy and Lucia, his girlfriend, spent a week in Berlin for vacation. We decided to meet them!

At their hotel, Forestidia showed the Prince of Persia 1 and Commander Keen 6 speedruns. I gave the couch commentary. Afterwards, we went into town for lunch and smalltalk.

Here is a picture of Flopsy (left) and Simon (me, right).

This picture is confusing in light of the topic title "Double Date"; Flopsy and I are not in a relationship with each other. But the girls preferred not to have their pictures posted on Lemmings Forums.

Forestidia and I went to Tierpark, a large zoo in Berlin.

The Tierpark has porcupines -- both new-world porcupines (these sit in North American trees) and old-world porcupines. The particular old-world porcupine species in Tierpark is the Indian Crested Porcupine, a relative of the African Crested Porcupine that you see in my avatar.

Here's a happy Simon next to 3 porcupines cuddling in the corner. Those 3 porcupines are lying next to each other, touching. The middle porcupine faces leftwards, the othes face rightwards. Such social animals, they don't sting each other with their quills.

Here's a close-up. This porcupine sleeps in the shade, avoiding the afternoon sun. The hair fits along the body, the quills are down in peace. Who wouldn't want to cuddle?

I'm sure Flopsy remembers how much I raved about seeing these porcupines.

-- Simon

Lix Levels / Re: Skulls, Sludge, and Steel (spoiler)
« on: June 12, 2018, 08:16:46 pm »
Top-backroute: Skulls has a backroute by stretching 2 builders over the top, without help from any other skills. This backroute has become possible since 0.7 physics.

But even in 0.6 physics, similar things (that don't solve the map) were possible here:

0.6 Skulls backroute (click to show/hide)

Skulls should be designed much clearer such that these things clearly fail (instead of barely fail or even barely work).

-- Simon

Pages: 1 [2] 3 4 ... 13