Gloaming
Dusk in a small square. Light every lamp before the dark catches you. The first complete game you finish in assembly — and at the end, your build matches the shipped game byte for byte.
What you’ll build
Dusk is falling on a small walled town square, and the lamps are out. You’re the lamplighter: cross the square, light all eight before the night objects — and the night will object, in the form of a cold draught that hunts you through the streets and ghosts through stone. Light every lamp and the night is held. Let it catch you three times and night falls.
A single screen, one hero, drawn in the Spectrum’s attribute colour — in the lineage of the 1983 single-screen classics (Jetpac, Pssst, Cookie): small, finished, complete. It’s the first game you finish in assembly, built directly on the foundations from Meet the Machine.
How it’s taught
Twenty units in five phases: the stage (a textured square and a heartbeat), movement done honestly (keys, pacing, a sprite that leaves the world intact), the game (lamps, light, a score, a mood, a win), jeopardy (the draught, and losing), and the finish (sound, a title, and a game that loops).
Two things make the module unusual. First, you frequently build the wrong version on purpose — the sprite that smears, the erase that vandalises the floor, the light that won’t stay, the respawn the enemy camps — because each honest failure teaches what the fix alone never could. Second, every unit’s final build is checked against the real game: the code you write converges, checkpoint by checkpoint, on the shipped Gloaming — and the last unit’s build matches it byte for byte. You aren’t building a teaching copy. You’re building the game.
Why it’s small on purpose
Gloaming earns its place by being complete, not ambitious. Cell-by-cell movement, a one-bit beeper, coloured-cell scores — each is the honest “before” of a technique a later game upgrades (smooth pixel movement, masking, a sound driver, a font). Nothing heavier is allowed in, so that at the end you can stand back and say the sentence this module exists for: I finished a game, in assembly, and I know why every byte of it is there.
Where it sits
After Meet the Machine, and your game doesn’t end when the module does. The file it converges on was cut from a larger prototype, and The Long Night — pools of dark, a reaching tendril, a five-watch night with a dawn at the end — continues this exact game from this exact code. Beyond that, the engine and the world both carry on: Shadowkeep explores a darkened keep on the engine you built here, and the lamps come back. Twenty units, all live — from the first attribute write to the closed loop of a title that remembers your best night. Your first release, not your last.
Unit roadmap
A square at dusk
The stage — attributes, the textured canvas, a glyph, the heartbeat
Movement done honestly
Keys, cell-step movement, the repeat gate, save/restore, walls, edges
A game
Lamps, lighting, the tally, the warming square, the win
Jeopardy
The draught that hunts you; lives, and the fall of night
Make it feel finished
A small sound, the title, and a game that loops