doc 10 of 10

Stage 08 — Ship It

You will build: a Windows executable a stranger can double-click, plus the checklist that proves it works where the editor isn't. You'll learn: the export pipeline · why res:// vs user:// stops being theory the moment a build exists. Warm-up — from memory: two places this game writes files at runtime. Where must each live in an exported build, and what happens if you got it backwards?

Why this exists#

The editor forgives sins the export punishes: paths that only exist on your machine, writes into the (now read-only) project bundle, settings that never persisted. Exporting early is how those surface while they're cheap. And psychologically: a .exe you can hand to a friend is a different object than a project folder — this game becomes finished in a way no editor session makes it.

Build it#

A — Export preset#

Project → Export → add Windows Desktop. Godot will ask for export templates the first time — download matching your exact editor version. Set the product name and icon (the default Godot icon is the universal mark of "not actually finished"). Official guide: Exporting projects.

B — The exported-world test#

Export, then run the .exe from its folder — not from the editor — and work the full checklist:

  • Full loop: menu → song → pause/resume → results → again
  • Calibration: set it, quit, relaunch — did it persist? (user:// proves itself here)
  • Record a chart in the build, restart the build, play it back
  • Watch for the tell-tale: anything that worked in-editor but silently no-ops in the build is almost always a res:// write or an editor-only path

Then the real test: another machine (or at minimum another user account) that has never seen Godot. Different audio hardware is a bonus — your calibration screen finally earns its keep on someone else's Bluetooth speaker.

C — Tag it#

git add . && git commit -m "stage 08: windows export, exported-world fixes"
git tag v1.0

A tag, because this is a version now, not a folder.

Checkpoint — definition of done#

  • The checklist above passes in the build, on a machine that isn't yours
  • Every fix the exported world forced is committed with a message saying what the editor had been hiding
  • v1.0 exists in git tag
  • Optional but recommended: the build zipped and sent to one actual person, with the calibration screen as their first stop

Stretch (no instructions)#

A web export. It will surface one platform quirk this project's history has already whispered about — finding it yourself closes a loop that started in stage 01.

Where this leaves you#

You inherited a prototype you couldn't explain. You now have a shipped rhythm game with smooth timing, player-made charts, real feedback, calibration, and flow — and, more durable than any of it: the audit habit, the timing model, and the proof that "code I didn't write" is a starting point, not a ceiling. The almanac's other curricula are open.