Amiga Lumo Devlog #9
18 March 2025
Previously we had wrapped up Zone 1, more or less, and now it's high time for a Zone 2 progress report.
PARALLEL PROCESSING
The first part of Zone 2 consists of just shy of 40 rooms, and progress was greatly helped by someone else boxing out the basic layouts of each while I worked in parallel adding the new entity types they required. The platforming ramps up after the gentle introduction from Zone 1 and the player will encounter a number of new ways of getting around, as well as a number of new and exciting ways to die.
TEETHING TROUBLES
One does not simply walk into a new zone. Doors had to be taught how to be zone portals, and the engine had to be taught how to load and transition to a new zone.
I also made engine updates to support non-power-of-two sized rooms, largely driven by the boxed-out rooms I received all being like this! Forcing rooms to be POT-sized started as an optimisation for accessing the map data, but over time the code that does this evolved to mostly use offsets rather than direct calculation of addresses so the POT-sizing didn't help anyway. This change allows more flexible room sizing which may come in useful later.
The first Zone 2 room was a challenge right off the bat too. The player must activate light-up floor switches in the correct sequence before a deadline in order to open the exit gate. I had created small, lighted switch entities for this but they looked ... inadequate? After a trip back to the drawing board I implemented a means for entity scripts to change the image a room block used at runtime. The system was quite limited. It could only change the image and only if it kept exactly the same silhouette, but it was enough to make some much more impressive switches. It still took a while, as well as some new scripting keywords, to get the puzzle logic working properly too.
FRICKIN' LASER BEAMS
A few rooms later the player encounters the first new danger - LASERS! Like the switches in the first room, I originally implemented these differently from how they ended up. They started out as jets of fireballs similar to those that shoot out of the rotating FireBoxes, but this was much too slow when there were more than a few in a room.
Instead, I extended the block-change system to support fully changing blocks at runtime. Any image, any shape. Lasers are actually new deadly blocks appearing and disappearing under programmatic control.
Changing blocks like this was tricky as it goes against the engine's reliance on heavy build-time baking to save memory and help performance. Changeable blocks must be tagged in the editor, require special handling through the build, and require an entire separate runtime render pass just for themselves. They must also, on room entry, capture the pristine background behind them which costs 640 bytes of chip memory each so numbers are strictly limited per room (I opted for 24 - 15Kb - maximum).
They aren't quick to draw, but they win because they only need drawn once, unlike normal entities which need redrawn every frame. This made them a perfect fit for the laser traps.
[IMG: Progress was Blocked for a while]
I will need the ability to add blocks for other reasons in later rooms so all this effort will be reused!
BIG FAN OF NEW ENTITIES
Fans that blow the player (and other objects) around feature heavily in this section and a variety of types and sizes were added. Other notable and fun additions are crates that bob around in deadly water and start to sink when the player steps on them, balls the player can balance on and use to safely traverse otherwise lethal areas, and bubbles that can be used as bouncy platforms provided you keep on bouncing and don't stop. Don't ever stop bouncing, folks.
Probably the most fun room to implement was the room and cinematic that enables the bubbles. Now, what can you think of that might make bubbles...
MOVING ON
I've roughly mapped out the remainder of what I think of as Zone 2 and it breaks down into three more areas comprised of around sixty more rooms, with plenty of fresh new things to add. There are definitely some challenges ahead and there is one particular hazard that I've already decided to skip. Others teeter on the edge of will-he-or-won't-he, but I do tend to give these a try at least.
Zone 2B, here we come. Energise!
Related Links
Zone 2 Part 1 gameplay 2025/03 [YouTube]