A theme for every place, and an interface remade
Until 26 September the game had procedural sound cues and one looping ambience per cave band, and no music at all. The readiness ledger had listed the absence for ten days. The owner asked for better audio, different musical styles by location, then music for the menu.
Twelve themes, composed by the game
The score is procedural, like everything else in the project: no recordings, no samples. There are twelve original eight-bar themes, one each for the title, the four cave tiers, daylight, and the grounds of the Humans, Elves, Dwarves, Orks, Dark Elves and Fairies. Each is written as a calm bed and a lift that is added over it as danger rises, so a homeland defense or the raid brings the lift in without changing the tune. Locations crossfade. Important cues, the decisive moment above all, dip the music for a breath. The title has its own theme, which the settings pages keep when they are opened from it. Master, music and effects have separate controls, and the effects were mastered at the same time so nothing clips or ends on a click.
A theme takes about a second of arithmetic to render. Doing that on a worker thread still held the interpreter’s lock and cost the frame loop about thirty percent while it ran, so a theme is now rendered once per installation into a disk cache and warmed from the title screen. The worker is a daemon thread, so quitting never waits for a theme to finish.
The dropout that was not where it looked
The first native runs dropped out. The investigation ran on a software renderer at about a frame a second, where every draw looked slow, and the fix that followed refilled the streams between drawing stages. On the laptop’s own display the cause was simpler: raylib’s default stream buffer holds a thirtieth of a second, and any load, shader compile or heap settle longer than that emptied it. One call before the first load now buffers two seconds. Two more lessons from the same day: playing the bed and the bed-plus-lift as two streams a few milliseconds apart is a flanger, so the lift is shipped alone and added over the bed; and a gain step is a click, so ducking ramps.
The interface
The owner’s verdict on the old interface was that it looked very 2000s. The pass of 26 and 27 September drew a new one in the game’s own renderer, without an image mockup or a new dependency: warm charcoal plates, ivory text and copper accents; capsule meters; keycap prompts drawn from the player’s own bindings, so a rebound key is the key the screen shows; a grouped chooser for the ten characters with its own description and record panel; dedicated Audio, Accessibility and Camera pages reachable from the title and the pause menu, which fell from 21 rows to 12; switches and level tracks in the settings; captions grouped with honest continuation markers; long objective titles wrapped and bounded; and the mouse released under every overlay and taken back for play.
What none of this has is a listener. The music has been captured on the laptop’s mixed bus and found continuous after the first sound, with the physical volume at zero. Nobody has heard it, and nobody has played the new interface with a mouse at the smallest window. Both are the owner’s next steps, and this post claims neither.