A cozy Piranesi city builder. You raise the arches; the citizens make them home.
Play it: capriccio-city.netlify.app
Capriccio inverts the usual city-builder deal. You never place a house or a shop. Instead you construct an immense architectural armature — piers, spans, stairs, vaults, carved passages — and the citizens gradually occupy it: stalls under the arches, houses on the stair landings, gardens where the aqueduct brings water, lanterns wherever the dark collects. The player builds for centuries; the citizens build for daily life.
The whole world renders as a living engraving: world-anchored crosshatching that stays fine at walking scale, ink outlines, one raking sun, paper haze, and the occasional flash of gold.
| Tool | What it does |
|---|---|
| Establish | Found a pier, giant pier, or column — anchors for everything else |
| Span | Bridge, aqueduct, or roofed gallery between two points (pier tops snap) |
| Rise | Stairs between elevations — direct, ceremonial, or switchback |
| Vault | A basilica hall citizens will move into |
| Carve | Cut an arched passage through the great wall, or tunnel a giant pier |
| Adorn | Statues, fountains, lanterns, cypresses |
| Invite | Paint a designation — dwelling, trade, garden, gathering — and watch it fill |
Modes: Build (orbit), Section (a true cutaway through whatever you're looking at), Wander (first-person, WASD — walk under the bridge you built), Plate (compose and export framed engravings; press P anywhere for an instant plate).
There is no failure state. Resident requests carry a gentle story — bring a way, and water, to the high terrace — and play without resources (on the title page) removes even the stone economy. Works on desktop and, minus Wander, on recent phones and tablets.
npm install
npm run dev # http://localhost:8737
npm run build # static build in dist/Vite + TypeScript + Three.js, no framework, no backend, no art assets — every
stone, citizen, and sound is procedural. Saves live in localStorage
(?fresh starts a clean city).
For the curious: the engraved look bands ink by recovered sun exposure (subtracting an analytic hemisphere term from the lit result isolates true shadow), and hatch density adapts to viewing distance in crossfaded powers of two so strokes stay engraving-fine up close and visible far away — while remaining anchored to the stone so nothing shimmers.
MIT — build freely.
🤖 Built with Claude Code


