~/code/solarus-playground · five quests
Small 2D action-RPGs on Solarus, at 320×240, built out of its free resource pack — one folder each, one git repo each. Two of them are games. Three are openings for games that do not exist, which turns out to be the fastest way to find out whether a world is worth the rest of the work. Sibling shelf: godot-playground.
In order of making. Newest last. Click a frame under any plate to swap it in.
01 a tutorial that never names a button
Half an hour of light left, and four lanterns to see to.
Chapter one of a lamplighter’s story, and a ten-minute argument that a tutorial can be a place instead of a list. Every lantern is blocked by something you can see — brambles, a stone too heavy to walk past, a man who won’t move — so the thing in the way is the lesson, and no villager ever says the word “press”. A nudge director watches what you have already tried and only speaks when you are genuinely stuck. Underneath it, levels are authored as ASCII terrain and compiled to Solarus map data with autotiling, and a small PNG codec renders the compiled maps to images, so a level can be reviewed without launching the game at all.
320 × 240 · Solarus 2.1.3
maps compiled from ASCII terrain
▶ play
▶▶ skip intro
cd emberwatch && npm run play
npm run smoke
02 an epic intro, and nothing else
A world written into being by two sisters — one who named things, and one who unnamed them to make room.
Six minutes of myth, credits and cutscene, ending on a chapter card for a game that does not exist. Unnaming is not killing: a thing that is unnamed was never there, and nobody grieves it. Three deliberate moves. You are staff — the most consequential conversation in nine thousand years happens over your head while you carry a tray to a table, and the middle third hands control back and lets the argument continue as captions. The credits are part of the story — they are printed on a map that loses three places while you read them, letter by letter. And nothing auto-advances: a key press moves the current beat, never the whole sequence.
320 × 240 · Solarus 2.1.3
plates described in ~25 lines each, not pixelled
▶ play
▶▶ skip intro
cd the-unnaming && npm run play
npm run smoke -- --intro
03 an intro, and a voice
Nine hundred people standing on two miles of ice, on the morning the ice starts to go.
The winter is a hundred and four years old. Gran is a hundred and thirteen, she says she ate an apricot once, she kept the stone, and nobody believes her. This morning there is a line on the horizon that isn’t white. Two things in here are worth stealing outright. docs/VOICE.md is a style guide written against the register intro writing drifts into — the one where every line is an abstract noun, a reversal and a full stop — and its most useful rule is if a line would look good on a poster, cut it. And art/tileset-ice.mjs generates an entire tileset, twenty-eight patterns, sheet and .dat together, because the free pack has no snow in it.
320 × 240 · Solarus 2.1.3
its own generated tileset, twenty-eight patterns
▶ play
▶▶ skip intro
cd the-thaw && npm run play
npm run smoke -- --intro
04 Max Payne with a sword
Five men in a rain-soaked yard, one stairwell at the back, and none of them know you are in it yet.
Hold item 1 and the world drops to a fifth speed while you stay at three quarters. That is the Slow, and it shipped first, on its own, and it was boring — a good verb is not a game. The stealth is what gives it something to be the answer to: every man has a facing and a vision cone, suspicion fills three times faster in lamplight than in rain, and a full bar is a shout that carries a screen width. The pools you can see are drawn at exactly the radius the code measures, because a stealth game where the light you see isn’t the light they see you in is a stealth game that lies. Come up behind a man and attack is a takedown instead of a swing — same button, so there is never a moment of deciding which one you are pressing.
320 × 240 · Solarus 2.1.3
comic panels built from real tiles, then graded
▶ play
▶▶ skip intro
cd the-dead-hour && npm run play
npm run smoke
05 an intro in the shape of a 1994 RPG
It has been rung eight times, and it has always held. Tam Orrick is fifteen.
Every nineteen years, four months and a day, somebody in Callow rings the bell on the ridge and the thing under the hills goes back down. Nobody knows why it works. It works this time too — and eight seconds later, from under the hill, something rings back. Built deliberately to the grammar of a 16-bit console RPG: a legend in painted plates, the credits over a parallax march at dawn, a world-map flyover, a title card, a fair full of people, and the ritual. The flyover is Mode 7 — a generated continent sampled per scanline and rendered offline into sheets of frames, with the clouds projected onto a plane above the camera by the same maths, which is the difference between flying and scrolling. The way up to the ridge is not locked; it has a person standing in it.
320 × 240 · Solarus 2.1.3
Mode 7, and a bell the resource pack does not have
▶ play
▶▶ skip intro
cd the-ninth-bell && npm run play
npm run smoke -- --intro