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.0exists ingit 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.