diff --git a/.project/designs/app/src/pages/AudioSystem.tsx b/.project/designs/app/src/pages/AudioSystem.tsx index 1db5955e..23c22333 100644 --- a/.project/designs/app/src/pages/AudioSystem.tsx +++ b/.project/designs/app/src/pages/AudioSystem.tsx @@ -938,7 +938,7 @@ export function AudioSystemPage(): React.ReactElement { return ( ← back - Audio system v2 + Audio system ♪ One engine, many packs · {Object.keys(manifest.sfx).length} SFX + {" "}{manifest.music.tracks.length} music tracks · live read of{" "} diff --git a/public/games/age-of-dwarves/assets/audio/LICENSES.md b/public/games/age-of-dwarves/assets/audio/LICENSES.md index 79c2dace..83914d89 100644 --- a/public/games/age-of-dwarves/assets/audio/LICENSES.md +++ b/public/games/age-of-dwarves/assets/audio/LICENSES.md @@ -4,7 +4,7 @@ Each row records one `.ogg` shipped under `public/games/age-of-dwarves/assets/audio/`. Licence policy: CC0 / CC-BY 3.0 / CC-BY 4.0 / Pixabay / Sonniss-GDC-YYYY / Public-Domain accepted. ShareAlike (`-SA`) and NonCommercial (`-NC`) are rejected by the renderer. -**Asset count:** 70 files. (Empty until p2-16 sourcing begins.) +**Asset count:** 90 files. (Empty until p2-16 sourcing begins.) ## Assets @@ -18,6 +18,16 @@ Each row records one `.ogg` shipped under `public/games/age-of-dwarves/assets/au | `audio/music/overworld_industry.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%232%20%5BTowns%5D%20by%20Juhani%20Junkala.zip#Town3 - Sunshine Coast.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | | `audio/music/overworld_kingdoms.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%232%20%5BTowns%5D%20by%20Juhani%20Junkala.zip#Town4 - Bazaar.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | | `audio/music/victory.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action3 - Preparing For Battle.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_culture_a.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm1 - A Place I Call Home.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_culture_b.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm2 - Childhood Friends.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_culture_c.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm5 - Summer Memories.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_domination_a.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action3 - Preparing For Battle.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_domination_b.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action1 - Encounter With The Witches.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_domination_c.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action2 - Army Approaching.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_economic_a.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration1 - Grasslands.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_economic_b.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration4 - Prairie Nights.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_science_a.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration3 - Tha'el Mines.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `audio/music/victory_science_b.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration6 - Tropical Island.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | | `audio/sfx/border_expanded.ogg` | CC0-1.0 | [link](https://github.com/Calinou/kenney-interface-sounds/blob/master/addons/kenney_interface_sounds/pluck_001.wav) | Kenney (Calinou repackage) | loudnorm I=-16/TP=-3+wav→ogg 128kbps | 2026-04-27 | | `audio/sfx/buildings/build_complete_civic.ogg` | CC0-1.0 | [link](https://github.com/Calinou/kenney-interface-sounds/blob/master/addons/kenney_interface_sounds/confirmation_001.wav) | Kenney (Calinou repackage) | loudnorm I=-16/TP=-3+wav→ogg 128kbps | 2026-04-27 | | `audio/sfx/buildings/build_complete_def.ogg` | CC0-1.0 | [link](https://kenney.nl/media/pages/assets/impact-sounds/8aa7b545c9-1677589768/kenney_impact-sounds.zip#Audio/impactPlate_heavy_002.ogg) | Kenney (Impact Sounds) | loudnorm I=-16/TP=-3+ogg 128kbps | 2026-04-27 | @@ -72,13 +82,23 @@ Each row records one `.ogg` shipped under `public/games/age-of-dwarves/assets/au | `audio/sfx/weather/drought.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/sfx_loops.zip#noise_03.ogg) | rubberduck (OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | 2026-04-27 | | `audio/sfx/weather/heat_wave.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/sfx_loops.zip#noise_02.ogg) | rubberduck (OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | 2026-04-27 | | `audio/sfx/weather/hurricane.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/sfx_loops.zip#ambient_02.ogg) | rubberduck (OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | 2026-04-27 | -| `audio/sfx/weather/storm.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/sfx_loops.zip#rain.ogg) | rubberduck (OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | 2026-04-27 | +| `audio/sfx/weather/storm.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/sfx_100_v2.zip#sfx100v2_thunder_01.ogg) | rubberduck (OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | 2026-04-28 | | `audio/sfx/weather/tornado.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/sfx_loops.zip#ambient_03.ogg) | rubberduck (OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | 2026-04-27 | | `audio/sfx/wonder_built.ogg` | CC0-1.0 | [link](https://kenney.nl/media/pages/assets/impact-sounds/8aa7b545c9-1677589768/kenney_impact-sounds.zip#Audio/impactBell_heavy_001.ogg) | Kenney (Impact Sounds) | loudnorm I=-16/TP=-3+ogg 128kbps | 2026-04-27 | +| `audio/sfx/wonder_built_own.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/fanfare_0.ogg) | Spring Spring (OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | 2026-04-28 | +| `audio/sfx/wonder_built_rival.ogg` | CC0-1.0 | [link](https://kenney.nl/media/pages/assets/impact-sounds/8aa7b545c9-1677589768/kenney_impact-sounds.zip#Audio/impactBell_heavy_002.ogg) | Kenney (Impact Sounds) | loudnorm I=-22/TP=-6+ogg 128kbps (extra-quiet for distant feel) | 2026-04-28 | | `c/victory.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action3 - Preparing For Battle.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | | `ic/golden_age.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action2 - Army Approaching.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | | `ic/overworld_kingdoms.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%232%20%5BTowns%5D%20by%20Juhani%20Junkala.zip#Town4 - Bazaar.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `ic/victory_domination_c.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action2 - Army Approaching.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `io/music/victory_culture_b.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm2 - Childhood Friends.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | | `music/overworld_industry.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%232%20%5BTowns%5D%20by%20Juhani%20Junkala.zip#Town3 - Sunshine Coast.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `music/victory_culture_a.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm1 - A Place I Call Home.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `music/victory_economic_b.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration4 - Prairie Nights.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `o/music/victory_domination_b.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action1 - Encounter With The Witches.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `o/music/victory_science_b.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration6 - Tropical Island.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `sic/victory_culture_c.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm5 - Summer Memories.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | +| `udio/sfx/wonder_built_rival.ogg` | CC0-1.0 | [link](https://kenney.nl/media/pages/assets/impact-sounds/8aa7b545c9-1677589768/kenney_impact-sounds.zip#Audio/impactBell_heavy_002.ogg) | Kenney (Impact Sounds) | loudnorm I=-22/TP=-6+ogg 128kbps (extra-quiet for distant feel) | 2026-04-28 | | `usic/overworld_craft.ogg` | CC0-1.0 | [link](https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%232%20%5BTowns%5D%20by%20Juhani%20Junkala.zip#Town2 - Where Time Stands Still.ogg) | Juhani Junkala (SubspaceAudio | OpenGameArt) | loudnorm I=-16/TP=-3+ogg 128kbps | ## Encoding diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_culture_a.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_culture_a.ogg new file mode 100644 index 00000000..ee75fc03 Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_culture_a.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_culture_b.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_culture_b.ogg new file mode 100644 index 00000000..9d80488a Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_culture_b.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_culture_c.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_culture_c.ogg new file mode 100644 index 00000000..e7e120d1 Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_culture_c.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_domination_a.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_domination_a.ogg new file mode 100644 index 00000000..feedf566 Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_domination_a.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_domination_b.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_domination_b.ogg new file mode 100644 index 00000000..fb325b57 Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_domination_b.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_domination_c.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_domination_c.ogg new file mode 100644 index 00000000..ecdf9314 Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_domination_c.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_economic_a.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_economic_a.ogg new file mode 100644 index 00000000..3b3d9b5f Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_economic_a.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_economic_b.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_economic_b.ogg new file mode 100644 index 00000000..ac0f1fdd Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_economic_b.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_science_a.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_science_a.ogg new file mode 100644 index 00000000..5cbe45d8 Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_science_a.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/music/victory_science_b.ogg b/public/games/age-of-dwarves/assets/audio/music/victory_science_b.ogg new file mode 100644 index 00000000..2e5bad98 Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/music/victory_science_b.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/sfx/weather/storm.ogg b/public/games/age-of-dwarves/assets/audio/sfx/weather/storm.ogg index 2b5a56a6..5a8a0898 100644 Binary files a/public/games/age-of-dwarves/assets/audio/sfx/weather/storm.ogg and b/public/games/age-of-dwarves/assets/audio/sfx/weather/storm.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/sfx/wonder_built_own.ogg b/public/games/age-of-dwarves/assets/audio/sfx/wonder_built_own.ogg new file mode 100644 index 00000000..1f16fae3 Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/sfx/wonder_built_own.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/sfx/wonder_built_rival.ogg b/public/games/age-of-dwarves/assets/audio/sfx/wonder_built_rival.ogg new file mode 100644 index 00000000..1ba938d0 Binary files /dev/null and b/public/games/age-of-dwarves/assets/audio/sfx/wonder_built_rival.ogg differ diff --git a/public/games/age-of-dwarves/assets/audio/sources.csv b/public/games/age-of-dwarves/assets/audio/sources.csv index ad121ce4..3bfb9187 100644 --- a/public/games/age-of-dwarves/assets/audio/sources.csv +++ b/public/games/age-of-dwarves/assets/audio/sources.csv @@ -59,7 +59,6 @@ ic/overworld_kingdoms.ogg,https://opengameart.org/sites/default/files/JRPG%20Mus audio/music/overworld_ascension.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action1 - Encounter With The Witches.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-27 ic/golden_age.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action2 - Army Approaching.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-27 c/victory.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action3 - Preparing For Battle.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-27 -audio/sfx/weather/storm.ogg,https://opengameart.org/sites/default/files/sfx_loops.zip#rain.ogg,CC0-1.0,rubberduck (OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-27 audio/sfx/weather/blizzard.ogg,https://opengameart.org/sites/default/files/sfx_loops.zip#noise_01.ogg,CC0-1.0,rubberduck (OpenGameArt),loudnorm I=-16/TP=-3+highpass+ogg 128kbps,2026-04-27 audio/sfx/weather/heat_wave.ogg,https://opengameart.org/sites/default/files/sfx_loops.zip#noise_02.ogg,CC0-1.0,rubberduck (OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-27 audio/sfx/weather/drought.ogg,https://opengameart.org/sites/default/files/sfx_loops.zip#noise_03.ogg,CC0-1.0,rubberduck (OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-27 @@ -86,3 +85,24 @@ audio/sfx/fauna/herbivore_call.ogg,https://opengameart.org/sites/default/files/8 audio/sfx/fauna/herbivore_death.ogg,https://opengameart.org/sites/default/files/80-CC0-creature-SFX_0.zip#hurt_04.ogg,CC0-1.0,rubberduck (OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-27 audio/sfx/defeat_stinger.ogg,https://kenney.nl/media/pages/assets/impact-sounds/8aa7b545c9-1677589768/kenney_impact-sounds.zip#Audio/impactPlate_heavy_004.ogg,CC0-1.0,Kenney (Impact Sounds),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 audio/music/defeat.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm6 - Innocence.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/sfx/wonder_built_own.ogg,https://opengameart.org/sites/default/files/fanfare_0.ogg,CC0-1.0,Spring Spring (OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +udio/sfx/wonder_built_rival.ogg,https://kenney.nl/media/pages/assets/impact-sounds/8aa7b545c9-1677589768/kenney_impact-sounds.zip#Audio/impactBell_heavy_002.ogg,CC0-1.0,Kenney (Impact Sounds),loudnorm I=-22/TP=-6+ogg 128kbps (extra-quiet for distant feel),2026-04-28 +audio/sfx/weather/storm.ogg,https://opengameart.org/sites/default/files/sfx_100_v2.zip#sfx100v2_thunder_01.ogg,CC0-1.0,rubberduck (OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_domination_a.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action3 - Preparing For Battle.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +o/music/victory_domination_b.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action1 - Encounter With The Witches.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +ic/victory_domination_c.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action2 - Army Approaching.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +music/victory_culture_a.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm1 - A Place I Call Home.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +io/music/victory_culture_b.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm2 - Childhood Friends.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +sic/victory_culture_c.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm5 - Summer Memories.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_domination_b.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action1 - Encounter With The Witches.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_culture_a.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm1 - A Place I Call Home.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_culture_c.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm5 - Summer Memories.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_domination_c.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action2 - Army Approaching.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_culture_b.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm2 - Childhood Friends.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_science_a.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration3 - Tha'el Mines.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +o/music/victory_science_b.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration6 - Tropical Island.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_economic_a.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration1 - Grasslands.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +music/victory_economic_b.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration4 - Prairie Nights.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_science_b.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration6 - Tropical Island.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/music/victory_economic_b.ogg,https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration4 - Prairie Nights.ogg,CC0-1.0,Juhani Junkala (SubspaceAudio, OpenGameArt),loudnorm I=-16/TP=-3+ogg 128kbps,2026-04-28 +audio/sfx/wonder_built_rival.ogg,https://kenney.nl/media/pages/assets/impact-sounds/8aa7b545c9-1677589768/kenney_impact-sounds.zip#Audio/impactBell_heavy_002.ogg,CC0-1.0,Kenney (Impact Sounds),loudnorm I=-22/TP=-6+ogg 128kbps (extra-quiet for distant feel),2026-04-28 diff --git a/public/games/age-of-dwarves/assets/ic/victory_domination_c.ogg b/public/games/age-of-dwarves/assets/ic/victory_domination_c.ogg new file mode 100644 index 00000000..1e63d4e0 Binary files /dev/null and b/public/games/age-of-dwarves/assets/ic/victory_domination_c.ogg differ diff --git a/public/games/age-of-dwarves/assets/io/music/victory_culture_b.ogg b/public/games/age-of-dwarves/assets/io/music/victory_culture_b.ogg new file mode 100644 index 00000000..291e7360 Binary files /dev/null and b/public/games/age-of-dwarves/assets/io/music/victory_culture_b.ogg differ diff --git a/public/games/age-of-dwarves/assets/music/victory_culture_a.ogg b/public/games/age-of-dwarves/assets/music/victory_culture_a.ogg new file mode 100644 index 00000000..5f164dbb Binary files /dev/null and b/public/games/age-of-dwarves/assets/music/victory_culture_a.ogg differ diff --git a/public/games/age-of-dwarves/assets/music/victory_economic_b.ogg b/public/games/age-of-dwarves/assets/music/victory_economic_b.ogg new file mode 100644 index 00000000..b087e212 Binary files /dev/null and b/public/games/age-of-dwarves/assets/music/victory_economic_b.ogg differ diff --git a/public/games/age-of-dwarves/assets/o/music/victory_domination_b.ogg b/public/games/age-of-dwarves/assets/o/music/victory_domination_b.ogg new file mode 100644 index 00000000..a7d75f84 Binary files /dev/null and b/public/games/age-of-dwarves/assets/o/music/victory_domination_b.ogg differ diff --git a/public/games/age-of-dwarves/assets/o/music/victory_science_b.ogg b/public/games/age-of-dwarves/assets/o/music/victory_science_b.ogg new file mode 100644 index 00000000..aa221c8a Binary files /dev/null and b/public/games/age-of-dwarves/assets/o/music/victory_science_b.ogg differ diff --git a/public/games/age-of-dwarves/assets/sic/victory_culture_c.ogg b/public/games/age-of-dwarves/assets/sic/victory_culture_c.ogg new file mode 100644 index 00000000..593d0d4f Binary files /dev/null and b/public/games/age-of-dwarves/assets/sic/victory_culture_c.ogg differ diff --git a/public/games/age-of-dwarves/assets/udio/sfx/wonder_built_rival.ogg b/public/games/age-of-dwarves/assets/udio/sfx/wonder_built_rival.ogg new file mode 100644 index 00000000..b8b70204 Binary files /dev/null and b/public/games/age-of-dwarves/assets/udio/sfx/wonder_built_rival.ogg differ diff --git a/public/games/age-of-dwarves/data/audio.json b/public/games/age-of-dwarves/data/audio.json index 7f0f837b..98e33619 100644 --- a/public/games/age-of-dwarves/data/audio.json +++ b/public/games/age-of-dwarves/data/audio.json @@ -40,7 +40,21 @@ "stream": "audio/sfx/wonder_built.ogg", "volume_db": -3.0, "bus": "SFX", - "description": "Reverberant choral swell announcing a completed wonder." + "description": "Generic wonder-built cue — fallback when neither own/rival variant resolves." + }, + "wonder_built.own": { + "stream": "audio/sfx/wonder_built_own.ogg", + "volume_db": -2.0, + "bus": "SFX", + "fallback": "wonder_built", + "description": "Triumphant brass fanfare when YOUR wonder completes (~5s, full ensemble)." + }, + "wonder_built.rival": { + "stream": "audio/sfx/wonder_built_rival.ogg", + "volume_db": -8.0, + "bus": "SFX", + "fallback": "wonder_built", + "description": "Distant ominous bell when a rival wonder completes (short, restrained, somewhere else in the world)." }, "era_advanced": { "stream": "audio/sfx/era_advanced.ogg", @@ -435,9 +449,90 @@ "era_range": null, "mood": "lament", "description": "Defeat screen music, plays once when the human player is eliminated." + }, + + { + "id": "victory_domination_a", + "stream": "audio/music/victory_domination_a.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Domination victory variant A — Junkala 'Preparing For Battle'." + }, + { + "id": "victory_domination_b", + "stream": "audio/music/victory_domination_b.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Domination variant B — Junkala 'Encounter With The Witches'." + }, + { + "id": "victory_domination_c", + "stream": "audio/music/victory_domination_c.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Domination variant C — Junkala 'Army Approaching'." + }, + + { + "id": "victory_culture_a", + "stream": "audio/music/victory_culture_a.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Cultural victory A — Junkala Calm 'A Place I Call Home', wistful + settled." + }, + { + "id": "victory_culture_b", + "stream": "audio/music/victory_culture_b.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Cultural victory B — Junkala Calm 'Childhood Friends'." + }, + { + "id": "victory_culture_c", + "stream": "audio/music/victory_culture_c.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Cultural victory C — Junkala Calm 'Summer Memories'." + }, + + { + "id": "victory_science_a", + "stream": "audio/music/victory_science_a.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Science victory A — Junkala Exploration 'Tha'el Mines', discovery vibe." + }, + { + "id": "victory_science_b", + "stream": "audio/music/victory_science_b.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Science victory B — Junkala Exploration 'Tropical Island', mystery." + }, + + { + "id": "victory_economic_a", + "stream": "audio/music/victory_economic_a.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Economic victory A — Junkala Exploration 'Grasslands', pastoral wealth." + }, + { + "id": "victory_economic_b", + "stream": "audio/music/victory_economic_b.ogg", + "volume_db": -6.0, "bus": "Music", "loop": false, "era_range": null, + "mood": "triumph", + "description": "Economic victory B — Junkala Exploration 'Prairie Nights'." } ], "crossfade_seconds": 2.0, - "default_track_id": "overworld_awakening" + "default_track_id": "overworld_awakening", + "victory_pool": { + "domination": ["victory_domination_a", "victory_domination_b", "victory_domination_c"], + "culture": ["victory_culture_a", "victory_culture_b", "victory_culture_c"], + "science": ["victory_science_a", "victory_science_b"], + "economic": ["victory_economic_a", "victory_economic_b"], + "score": ["victory"] + } } } diff --git a/public/games/age-of-dwarves/data/schemas/audio.schema.json b/public/games/age-of-dwarves/data/schemas/audio.schema.json index d34a8989..927ab8fd 100644 --- a/public/games/age-of-dwarves/data/schemas/audio.schema.json +++ b/public/games/age-of-dwarves/data/schemas/audio.schema.json @@ -23,7 +23,16 @@ "items": { "$ref": "#/$defs/music_track" } }, "crossfade_seconds": { "type": "number", "minimum": 0.0, "maximum": 30.0, "default": 2.0 }, - "default_track_id": { "type": "string" } + "default_track_id": { "type": "string" }, + "victory_pool": { + "type": "object", + "description": "Per-victory-condition track pool. Keys are the victory_type strings the engine emits in EventBus.victory_achieved (e.g. 'domination', 'culture', 'science', 'economic', 'score'). Value is a list of track IDs from `tracks[]`; AudioManager picks one at random per win, so a player who triggers the same victory type twice across multiple games gets variation.", + "additionalProperties": { + "type": "array", + "items": { "type": "string", "minLength": 1 }, + "minItems": 1 + } + } } } }, diff --git a/src/game/engine/src/autoloads/audio_manager.gd b/src/game/engine/src/autoloads/audio_manager.gd index 2a8aba26..8f579790 100644 --- a/src/game/engine/src/autoloads/audio_manager.gd +++ b/src/game/engine/src/autoloads/audio_manager.gd @@ -24,6 +24,11 @@ var _sfx_events: Dictionary = {} var _music_tracks: Dictionary = {} var _music_default_id: String = "" var _crossfade_seconds: float = 2.0 +## Per-victory-condition track pool. Keys are victory_type strings the engine +## emits (`domination` / `culture` / `science` / `economic` / `score`); each +## value is an array of track IDs from `_music_tracks`. AudioManager picks +## one at random per win to give long-time players variation. +var _victory_pool: Dictionary = {} var _sfx_pool: Array[AudioStreamPlayer] = [] var _sfx_cursor: int = 0 @@ -90,6 +95,7 @@ func load_theme(theme_id: String) -> void: if id.is_empty(): continue _music_tracks[id] = track + _victory_pool = (music.get("victory_pool", {}) as Dictionary).duplicate() _loaded = true @@ -448,8 +454,33 @@ func _on_unit_destroyed(unit: Variant, _killer: Variant) -> void: play_sfx("unit_killed") -func _on_wonder_built(_wonder_id: String, _player_index: int) -> void: - play_sfx("wonder_built") +func _on_wonder_built(_wonder_id: String, player_index: int) -> void: + # Own vs rival branching: hearing a triumphant fanfare when a rival + # civilisation builds a wonder is wrong. Pick `wonder_built.own` for + # the human player, `wonder_built.rival` for everyone else, and fall + # back to the generic `wonder_built` key if neither variant is in the + # manifest (so a half-shipped pack still produces a cue). + play_sfx_for_owner("wonder_built", player_index) + + +## Play an event SFX with owner-aware variant selection. The candidate +## chain is: +## .own — when player_index belongs to the local human +## .rival — when player_index is any non-human (including AI / wild) +## — generic fallback +## play_sfx already walks the per-entry `fallback` chain, so individual +## variant entries can additionally fall back to the generic key. +func play_sfx_for_owner(key: String, player_index: int) -> void: + var suffix: String = "rival" + if player_index >= 0 and player_index < GameState.players.size(): + var player: RefCounted = GameState.players[player_index] as RefCounted + if player != null and "is_human" in player and bool(player.get("is_human")): + suffix = "own" + var variant_key: String = "%s.%s" % [key, suffix] + if _sfx_events.has(variant_key): + play_sfx(variant_key) + return + play_sfx(key) func _on_era_changed(new_era: int, _player_index: int) -> void: @@ -533,9 +564,24 @@ func _on_unit_moved(_unit: Variant, _from: Vector2i, _to: Vector2i) -> void: play_sfx("unit_moved") -func _on_victory_achieved(_player_index: int, _victory_type: String) -> void: +func _on_victory_achieved(_player_index: int, victory_type: String) -> void: play_sfx("victory_fanfare") - play_music("victory") + play_music(_pick_victory_track(victory_type)) + + +## Pick a music track id for the given victory type. Looks the type up in +## `_victory_pool`; if multiple track ids are listed, picks one at random +## so a player who triggers the same victory across multiple games hears +## variation. Falls back to the manifest's "victory" track id when the +## type is unmapped, then to default_track_id. +func _pick_victory_track(victory_type: String) -> String: + if _victory_pool.has(victory_type) and _victory_pool[victory_type] is Array: + var pool: Array = _victory_pool[victory_type] as Array + if pool.size() > 0: + return String(pool[_rng.randi_range(0, pool.size() - 1)]) + if _music_tracks.has("victory"): + return "victory" + return _music_default_id ## Defeat is the human-player counterpart of victory_achieved. The signal diff --git a/tools/audio-batch-06-upgrades.tsv b/tools/audio-batch-06-upgrades.tsv new file mode 100644 index 00000000..69f2baa5 --- /dev/null +++ b/tools/audio-batch-06-upgrades.tsv @@ -0,0 +1,13 @@ +# Batch 06 — quality upgrades to placeholder-tier cues, all CC0. +# +# wonder_built.own: triumphant brass fanfare (~5s) — Spring Spring CC0 +# pack: https://opengameart.org/content/just-a-random-fanfare +# wonder_built.rival: somber distant bell — Kenney Impact's softer bell +# variant 002 (heavy bell with longer tail), CC0 +# weather/storm: replace rubberduck rain.ogg (loop, no impact) with +# sfx100v2_thunder_01.ogg (real thunderclap), CC0 +# pack: https://opengameart.org/content/100-cc0-sfx-2 + +audio/sfx/wonder_built_own.ogg https://opengameart.org/sites/default/files/fanfare_0.ogg CC0-1.0 Spring Spring (OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps +audio/sfx/wonder_built_rival.ogg https://kenney.nl/media/pages/assets/impact-sounds/8aa7b545c9-1677589768/kenney_impact-sounds.zip#Audio/impactBell_heavy_002.ogg CC0-1.0 Kenney (Impact Sounds) loudnorm I=-22/TP=-6+ogg 128kbps (extra-quiet for distant feel) +audio/sfx/weather/storm.ogg https://opengameart.org/sites/default/files/sfx_100_v2.zip#sfx100v2_thunder_01.ogg CC0-1.0 rubberduck (OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps diff --git a/tools/audio-batch-07-victory-pool.tsv b/tools/audio-batch-07-victory-pool.tsv new file mode 100644 index 00000000..58e298dc --- /dev/null +++ b/tools/audio-batch-07-victory-pool.tsv @@ -0,0 +1,31 @@ +# Batch 07 — Per-victory-condition music pool. All Junkala CC0. +# +# Domination (3 variants) — Junkala JRPG Pack 5 Action: the same 3 tracks +# already shipped as overworld_ascension/golden_age/victory get re-issued +# at the new victory_domination_{a,b,c}.ogg paths so the manifest's +# victory_pool can pick from them. (Yes, on-disk duplication of ~10 MB +# total — acceptable; alternative is a stream-aliasing layer in +# audio_manager.gd that's more complexity than its weight.) +# +# Culture (3) — Junkala JRPG Pack 4 Calm: contemplative tracks that fit a +# civilization-as-myth ending. +# Science (2) — JRPG Pack 1 Exploration: discovery + mystery vibe. +# Economic (2) — JRPG Pack 1 Exploration: pastoral wealth. + +# Domination — re-issue from JRPG Pack 5 +audio/music/victory_domination_a.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action3 - Preparing For Battle.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps +audio/music/victory_domination_b.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action1 - Encounter With The Witches.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps +audio/music/victory_domination_c.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%235%20%5BAction%5D%20by%20Juhani%20Junkala.zip#Action2 - Army Approaching.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps + +# Culture — JRPG Pack 4 Calm +audio/music/victory_culture_a.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm1 - A Place I Call Home.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps +audio/music/victory_culture_b.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm2 - Childhood Friends.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps +audio/music/victory_culture_c.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%234%20%5BCalm%5D%20by%20Juhani%20Junkala_0.zip#Calm5 - Summer Memories.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps + +# Science — JRPG Pack 1 Exploration +audio/music/victory_science_a.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration3 - Tha'el Mines.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps +audio/music/victory_science_b.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration6 - Tropical Island.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps + +# Economic — JRPG Pack 1 Exploration +audio/music/victory_economic_a.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration1 - Grasslands.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps +audio/music/victory_economic_b.ogg https://opengameart.org/sites/default/files/JRPG%20Music%20Pack%20%231%20%5BExploration%5D%20by%20Juhani%20Junkala.zip#Exploration4 - Prairie Nights.ogg CC0-1.0 Juhani Junkala (SubspaceAudio, OpenGameArt) loudnorm I=-16/TP=-3+ogg 128kbps