6.1 KiB
| id | title | priority | status | scope | owner | updated_at | evidence | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| p2-16 | Audio assets — in-theme OSS launch pack + source ledger | p1 | in_progress | game1 | asset-audio | 2026-04-27 |
|
Summary
The audio capability shipped as p0-21 — AudioManager, manifest,
signal wiring, volume sliders all work. The schema + categorical
routing extension lands as p2-33 (this objective is blockedBy
that). What's missing is the actual .ogg files plus the source
ledger that proves their licenses are clean.
Per user directive 2026-04-17 the asset work was pulled out of the
original p1-04 so capability and assets are tracked independently.
A silent ship is shippable; a broken or licence-tainted audio system
is not.
This objective ships the launch sound pack assembled from free / OSS sources (CC0, CC-BY 3.0/4.0, royalty-free commercial; no ShareAlike, no NonCommercial). Pack covers ~57 files spanning UI, turn cycle, units (categorical melee / ranged / siege / civilian), buildings (categorical civic / production / military / wonder), fauna (categorical predator / herbivore / apex), city events, research, weather, victory. ~50 SFX + 7 music tracks.
Acceptance
- ✗
sources.csvledger atpublic/games/age-of-dwarves/assets/audio/sources.csvlisting every file's source URL, license string, attribution name, edits applied, and date added. Schema:output_path,source_url,license,attribution,edits,added. - ✗ License rule enforced —
tools/audio-licenses-render.pygeneratesLICENSES.mdfromsources.csvand rejects anylicensevalue containing-SAor-NC. The script is wired into./run validate. Hand-edits toLICENSES.mdfail CI (rendered diff non-zero). - ✗ ~50 SFX files shipped under
public/games/age-of-dwarves/assets/audio/sfx/{ui,turn,units, buildings,combat,city,research,fauna,weather,victory}/. Coverage matches the categorical keys inaudio.json(unit.melee.attack,building.production.complete,fauna.apex.roar, etc.). Multiple variants (*_01.ogg,*_02.ogg,*_03.ogg) for combat foley to drivestreams[]randomisation. - ✗ 7 music tracks shipped under
public/games/age-of-dwarves/assets/audio/music/: 5 era-linked ambient (T1-2 awakening, T3-4 craft, T5-6 kingdoms, T7-8 industry, T9-10 ascension) + golden-age track + victory theme. - ✗ Encoding spec — Ogg Vorbis 44.1 kHz / 128 kbps stereo
(SFX may be mono). SFX peak ~−3 dBFS; per-event
volume_dbscales from there. Music files are seamless loops (except victory). - ✗ Theme fit — every file curated against the dwarven /
forge / dark stone hall aesthetic in
.project/designs/UI_DESIGN_SYSTEM.md. Search keywords used: hammer, anvil, forge, mine, cavern, stone, torch, armor, gauntlet, drum, horn, chant. - ✗
audio.jsonpopulated — manifest carries the 50+ categorical entries (using the schema p2-33 lands), each pointing at the new files with sanevolume_dband (where multiple takes exist)streams[]arrays +pitch_jitter. - ✗
tools/audio-validate.pyclean — every manifest stream resolves to a real file ≥1 channel and ≥0.1 s duration; no orphan files underassets/audio/**. - ✗ Live audible smoke — manual capture: launch on plum, click
through main_menu (UI clicks), found a city, end turn, fight a
wild creature, research a tech. Every event audibly triggers and
routes via the correct mixer bus. Smoke checklist saved at
.project/screenshots/audio-smoke-2026-XX-XX.mdwith timestamps.
Sources to draw from (in priority order)
- Sonniss GameAudio GDC bundles — royalty-free commercial, no attribution. Multi-year archive.
- Pixabay Audio — Pixabay Content License, commercial OK, no attribution.
- Freesound.org — filter to CC0 + CC-BY 3.0/4.0 (skip CC-BY-SA, CC-BY-NC).
- OpenGameArt.org — filter to CC0 + CC-BY (skip CC-BY-SA, CC-BY-NC, GPL-audio).
Depends on / blocked by
p0-21(Audio system capability) — done.p2-33(Sound system extension) —blockedBy. The categorical manifest keys this pack uses don't validate until p2-33's schema ships. The dashboard ordering mechanism reflects this dependency.
Non-goals
- Custom music composition (licensed ambient is fine).
- Voice-over narration (post-EA).
- 3D / positional audio (Game 2).
- Per-instance personality variants ("this specific dwarf has a deeper voice") — categorical is enough for EA.
- User mod-pack
user://overrides/audio.json— hook reserved in p2-33 notes; code path deferred.