· v0.2.0
The game has sound
Until this week there was no AudioStreamPlayer anywhere in the project. Not
one. The game had been silent for its entire life.
The sprites come from a vendored CC0 pack, and that same pack ships 188 sound
files — which .gitignore had been excluding the whole time, with a note saying
to re-download them when sound lands.
This is sound landing.
Only what the game plays is tracked
49 files, 19.4MB, against 97MB for the folder.
That’s only checkable because there’s a single allow-list, and nothing else in
the codebase names an .ogg or a .wav. A script generates the gitignore
whitelist from that list, and a test loads every catalogued path. A file in one
and not the other fails the suite, rather than failing in a player’s build.
The rule that makes this work isn’t the list. It’s that there’s exactly one of them.
Music follows the scene. Jingles follow the log.
The two halves are driven differently on purpose, and the reason is worth spelling out.
Which track is right is a fact about where the player is standing. It isn’t about anything that happened. So the place-scenes just ask for one when they load.
The alternative would have been to fire a world event for “walked into a shop” and let the audio system listen for it. We didn’t, because a world event is a row in the chronicle — the player’s own permanent record of what they did — and “walked into a shop” is not a thing that happened to anybody. We’d already made the same call for travel.
play_music is a no-op for the track that’s already playing, which is what
makes those calls safe to make unconditionally. Walking out of a shop and back
into the village it stands in must not restart the village theme.
A jingle is the opposite. It marks a thing that occurred: a quest completed, a level gained, something found. Those are events, they’re already in the log, and the log is already the thing that fans out to the rest of the game. So that half listens.
Two systems, one rule each, and the rule comes from what the sound is about rather than from what was convenient to wire.