No description
  • GDScript 96.3%
  • GDShader 2%
  • Shell 0.8%
  • Python 0.6%
  • HTML 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Claude 37e2e89cd3 Stop the first play of each sound paying for its own load
Reported from the game: sounds sometimes start a bit late. The samples were
the suspect, so they were measured first - and they are clean. True digital
silence at the head of each file:

  seven of nine start on sample 1
  sfx_gas_blast    0.2ms
  sfx_black_hole   1.5ms, then a deliberate swell

The black hole's slow attack is the sound it was written to be - make_sfx.py
says it "swells across most of its length instead of decaying from the first
sample" - so there is nothing to trim without breaking it.

The delay was in the playback path, and "sometimes" was the clue:

  play() called load() every time. A cache hit after the first, but the
  FIRST play of each sound was a synchronous read and decode on the frame
  the sound was asked for. Ten sounds, ten occasional late starts.

  _pool() built its twelve AudioStreamPlayer nodes lazily, on the first
  play() call - one bigger stall, every session.

The catalog is preloaded now, so play() never touches the disk, and
Sfx.warm() builds the voices next to Music.ensure() at startup.

Case F pins the thing that was originally suspected, since make_sfx.py
regenerates these and a lazy envelope would hide the delay somewhere nobody
would look. It reads the source .wav's RIFF chunks rather than the imported
stream: these import as QOA (compress/mode=2), so AudioStreamWAV.data is not
PCM. The first version of that check was vacuous for exactly that reason and
passed at a 0.5ms threshold; it now reports "9 samples checked, worst attack
sfx_black_hole.wav at 1.5ms" and fails when tightened.

Not touched: project.godot has no [audio] section, so output_latency is at
its default. On Android that buffer is usually the dominant latency, but
lowering it risks crackle on real hardware - worth doing with someone
listening, not blind.

172/172.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019AJMdB7iuHuLFZM1aBu3GD
2026-09-09 11:40:28 +02:00
android Initial commit: SpaceshipTest, a top-down space RTS in Godot 4.7.1 2026-08-10 18:41:58 +02:00
audio Stop the first play of each sound paying for its own load 2026-09-09 11:40:28 +02:00
boss Take planets by killing what defends them 2026-09-05 13:31:25 +02:00
buildings Keep the export probe, and the uid files beside the new scripts 2026-09-07 16:40:45 +02:00
controllers Stop the first play of each sound paying for its own load 2026-09-09 11:40:28 +02:00
core Find the planet setups in an exported build 2026-09-07 13:55:41 +02:00
enemies Tune and optimize boss encounter 2026-09-03 11:49:51 +02:00
fonts Skill tree, node-based building animation, bigger UI, and a 19x faster test suite 2026-08-11 15:00:41 +02:00
logistics Research the Fleet Office, and give it one hull 2026-09-05 21:57:53 +02:00
planets Build the accretion disc once per spawn, not twice 2026-09-08 22:35:41 +02:00
PlanetSetups Take planets by killing what defends them 2026-09-05 13:31:25 +02:00
resources #84: move 215 root files into a folder hierarchy 2026-08-21 19:44:14 +02:00
shaders Tune and optimize boss encounter 2026-09-03 11:49:51 +02:00
shots Remove the one-way ore API superseded by the transfer menu 2026-08-12 13:07:52 +02:00
surface Find the planet setups in an exported build 2026-09-07 13:55:41 +02:00
tests Stop the first play of each sound paying for its own load 2026-09-09 11:40:28 +02:00
ui Stop the first play of each sound paying for its own load 2026-09-09 11:40:28 +02:00
vessels Research the Fleet Office, and give it one hull 2026-09-05 21:57:53 +02:00
vfx Stop redrawing what only needs moving 2026-09-08 11:35:45 +02:00
world Teach where research data comes from, and say so when it runs out 2026-09-06 16:24:09 +02:00
.gitignore Add a WSL path to the test runner 2026-08-22 14:40:44 +02:00
export_presets.cfg Fix the web build: a wasm trap on integer % 0, and buttons that never fired 2026-08-19 01:08:09 +02:00
icon.svg Initial commit: SpaceshipTest, a top-down space RTS in Godot 4.7.1 2026-08-10 18:41:58 +02:00
icon.svg.import Initial commit: SpaceshipTest, a top-down space RTS in Godot 4.7.1 2026-08-10 18:41:58 +02:00
project.godot Smooth boosted fleet travel 2026-09-04 20:01:56 +02:00
ui_theme.tres Skill tree, node-based building animation, bigger UI, and a 19x faster test suite 2026-08-11 15:00:41 +02:00
web_shell.html Fix the web build: a wasm trap on integer % 0, and buttons that never fired 2026-08-19 01:08:09 +02:00