Amiga Lumo Devlog #12

10 September 2025

Ice to see you back, and that's snow joke. Yes, I haven't flaked, so another cool Lumo Amiga devlog slides at glacial speeds into your browser for you to chill out with. A teleport sleets us out of The Church and drops us in the strangely - some might say arbitrarily - frozen rooms of Ice Zone 4. All hail, the icezone cometh; let us go, let us go, can't hold us back any more...

ONE DIRECTION

[IMG: Ice Zone]

Zone 4 is designed with two main wings off a central Ice Hall leading to collectable objects that unlock the final few rooms and the exit. All through development of this zone I was calling these the east and west wings until, right at the end, I realised they were really the north and south wings according to the compass I'm using for the game. I didn't go back and rename all the commits and variables that refer to east and west though so this can just stay our little secret.

SLIDING FLOORS

[IMG: Ice and Electricity]

The early rooms introduce the player to moving around on the new low-grip surfaces with their slidey ice physics, as well as avoiding moving around on the new high-voltage surfaces with their explodey electrical physics. I took a couple of swings at the electrical floors, finally settling on a version where a single electrified area covers the entire room and the (variable number of) "spark" decals that travel around the floor just hide themselves if they are not on the right kind of tile. This was a lot simpler than trying to split up each room into rectangular areas to precisely cover the electrified parts. The sparks look as if they are travelling along the grid on the floor, but that's just a handy illusion.

We are also introduced to blocks of ice that can be pushed around. These started as crates with different graphics, but it was better to separate them in the end as they have a lot of behaviours that crates don't. Just like real life, crates don't smash when you hit them off a wall or magically reform when a switch is pressed. Not usually anyway.

[IMG: Stacks of Ice]

There are a few push-ice puzzles in this zone, culminating in one where different height stacks of blocks are manoeuvred to create a stairway to access a high door. As mentioned in previous devlogs, the engine doesn't really support entities larger than the unit cube, so these stacks are made from one iceblock object that the player can push and a number of attached objects that are forced to follow its movements, ignoring the normal physics system. You wouldn't catch a crate getting on like that.

I knew the ice stack puzzle was coming up and was a little concerned about how it could be implemented. Making the stacks work as they do actually went quite well with just a few niggles to work around. However, the room overall took quite a long time as I had to redesign the puzzle around the slightly longer jump the player has in the Amiga version. In the original layout, the player could position one of the three blocks then make a jump that was impossible on the PC game and bypass the rest of the puzzling! It took a few days before I got to a version I liked, but it was easier than adjusting the jump for just this room never mind adjusting and recalibrating all the existing rooms.

FLOATING 'TWEEN

[IMG: Unidentified Tweened Objects]

One of the new hazards in the ice zone are Unidentified Floating Objects that bounce the player around, say perhaps into one of the electrified floor areas. They move in different ways, but some introduced what is known nowadays as "tweened" or "eased" movement where velocity is non-linear and derived from a time-based easing function.

I hadn't used tweens before on Amiga and a naive implementation would need some heavy multiplication for every step.

However, with Python I generated tables representing a 0..1 in 1/256 steps passed through various tween functions and expressed as 16-bit fixed point numbers with 14 bits of precision. At runtime, tweened entities like the UFOs step a counter ('t') from 0..255 and multiply the corresponding table entry by the range of the tween. Adding this to the starting value gives the value of the tweened variable at time 't'. Due to how the data is arranged, this boils down to a short sequence of muls/asl/add in 68000, which is about as efficient as I can make it without generating large lookup tables for every individual tween. Tweens are used extensively in modern systems (with their efficient floating point multiplications) and add an extra dimension to movement and feel.

PLATFORMS 2.0

[IMG: Icy Platforms]

Later on, moving platforms also gained a tweened movement mode. Common code was then factored out allowing some other platform types to move in exactly the same ways. The path-following platform type was reworked to use tweening too. It was worth it as the new code is much cleaner and is mathematically guaranteed to hit the path waypoints now. Which is nice.

Platforms in general got a lot of attention to improve gameplay when the player is on or near them. For example, extra deceleration is applied when the player lands on an ice platform (oh, we have ice platforms now) so they don't go skidding off so easily, and stepping a pixel off a solid platform won't drag the player along if a moving platform passes by.

Feels better, man.

LASER BALLS

[IMG: Swinging Balls of Fire]

Naturally, any icy zone is full of laser traps, right? In the original game these take the form of tall pillars that spin and move around in various ways with several solid lines of laser light emitted at different heights. Given the movement, I couldn't reuse the fixed block-based laser system from Zone 2, and drawing the dynamic laser lines was a non-starter on the Amiga. Well, they could be drawn, but making them exist in the 3D-ish cubed world the engine runs on would have been much too slow so reinvention was necessary.

Enter, Laser Balls.

Working from the FireBox from way back in Zone 1, a number of new hazards were created to simulate the solid laser lines as deadly balls of ... light? These are still very heavy at runtime and so the traps are much reduced from the original, with only a single beam each and smaller numbers per room. They are still as deadly and retain most of the challenge of the original.

[IMG: Evil Corridor]

One particularly fun laser hazard is a corridor with beams that move down it like in Resident Evil. I used that a couple of times.

Also, solid quantised light? CERN are on the phone.

TENDERBOX

[IMG: Stompy Box]

Lasers are great, but what could be better than a sentient tenderising hammer that stomps after you around the room? Fun for all the family! There are a couple of these SpikeBoxen in Zone 4, and their logic wasn't obvious so I had to dig into the original Unity code and convert it to C for the Amiga. It was honestly quite straightforward and I'm only calling it out here because it's just such a fun entity in the game.

LUMO GOES SKIING

[IMG: Ski Sunday was never like this]

At the end of the zone the player is teleported to a special bonus zone - much like the minecart sequence at the end of Zone 2 - where they hurtle down a ski-slope and try to pass through flag gates and collect coins. It took a little more work than the minecart to get right but it's another fun interlude to break up the platforming. No ambulances though.

COLD NEVER BOTHERED ME ANYWAY

The remainder of Zone 4's story is the usual one of smaller improvements (scripting gets OR expressions), bug fixes (including one gnarly memory leak when changing zones) and making tweaks to room designs so they run well enough on a 7Mhz A500. I think I'm really settling on requiring "mild acceleration" for the best Lumo experience on Amiga, and this time I consciously left a couple of rooms at the "runs well enough" stage so I didn't have to cut them back too far.

Leaving the Ski Zone drops the player into the Castle, which is technically Zone 5 but only consists of a few rooms. So I guess this devlog covers three zones altogether, bringing us to 271 rooms in total.

[IMG: The End of the Beginning.]

The final room in the Castle is the Cauldron Hub, off which the last four zones and final room in the whole game can be accessed.

It seems strange to be talking in terms of "last zones". At a good pace, there might still be six more months of construction to get these in place so there is still a lot of work to be done, and more after that. And yet ... completing Zone 4 definitely feels like a watershed moment. The end of the beginning at least.

The final areas don't really have large numbers of rooms but they are not to be taken lightly. The room design and layout is complex, and I believe there are interactions between them too. I know already some rooms and puzzles will need "reimagined" to squeeze into an Amiga at all. They really are isometric platforming turned up to 11.

It's time to see what I can do, to test the limits and break through...

Amiga Lumo Devlog #11

Amiga Lumo Devlog #13

Zone 4 gameplay highlights [YouTube]

Easing Functions

Tags

amiga

devlog

gamedev

isometric

lumo

retro