A town that knows its place.
An isometric pixel-art mystery about hierarchy. You play Arno, a cartographer sent to map Stepwell, a town built on three terraces: the Sump (copper), Ledger Row (silver) and the Crown (gold). The Sump's cistern has been dry for seven years, and everyone says it's just the way things are.
Play online: https://kunskapshunger.github.io/stepwell/
Or run it locally: open index.html in a browser. Or serve the folder and open http://localhost:8765:
python -m http.server 8765| Key | Action |
|---|---|
| Arrows / WASD | Walk |
| E / Space / Enter | Talk, examine, advance |
| Q (or 1, 2, 3) | Change pin |
| J / Tab | Journal ("the Ladder") |
| B | Bow |
| M | Mute |
- Pins are costumes. NPCs speak differently depending on the pin you wear. Some confide only in those above them, and some speak freely only to those beneath them, so you have to step down the ladder to hear some truths.
- The gates only look at your pin, never your face.
- Barks and bows. People bow, sneer or flatter as you pass, depending on your rank relative to theirs. If you swap pins in front of someone, they notice.
- The bell. Every so often the whole town bows to the tower. You can bow too (B), or stay standing and be remembered for it.
- The Ladder. Six testimonies trace one order up the chain of command, to whoever gave it.
- Four endings: sit in the chair, forge one line in the Ledger, burn it, or put it back. None of them is simply right.
There are no image files. Everything is generated in code at startup:
- a small isometric software rasterizer with a depth buffer (
js/raster.js) - lit, shadow-cast and outlined terrain, buildings and roofs (
js/builder.js,js/materials.js) - procedural trees, props, characters, portraits and the statue (
js/sprites.js,js/characters.js) - a hand-drawn bitmap font (
js/font.js) - synthesized music and sound (
js/audio.js, WebAudio)
Characters are hidden behind scenery by comparing each pixel against the depth buffer, and the player is shown as an x-ray silhouette when something is in front of them.
?skip (skip the title), &pos=x,y, &pins=copper,silver,gold, &wear=gold, &rungs=1,
&flags=a,b, &talk=<npcId>, &journal, &study, &ending=sit|forge|burn|leave,
&bell, &ff=<seconds> (fast-forward time).