426 lines
12 KiB
JSON
426 lines
12 KiB
JSON
{
|
|
"schema_version": 2,
|
|
"sfx": {
|
|
"_silent": {
|
|
"streams": [],
|
|
"description": "Sentinel terminator for fallback chains. play_sfx exits silently when the chain reaches this entry."
|
|
},
|
|
|
|
"turn_started": {
|
|
"stream": "audio/sfx/turn_started.ogg",
|
|
"volume_db": -6.0,
|
|
"bus": "SFX",
|
|
"description": "Short horn flourish when the player's turn begins."
|
|
},
|
|
"turn_ended": {
|
|
"stream": "audio/sfx/turn_ended.ogg",
|
|
"volume_db": -8.0,
|
|
"bus": "SFX",
|
|
"description": "Muted drumroll acknowledging end-turn commit."
|
|
},
|
|
"city_founded": {
|
|
"stream": "audio/sfx/city_founded.ogg",
|
|
"volume_db": -4.0,
|
|
"bus": "SFX",
|
|
"description": "Stone-on-stone founding chime, bell tail."
|
|
},
|
|
"tech_researched": {
|
|
"stream": "audio/sfx/tech_researched.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"description": "Bright scholarly chime when a tech completes."
|
|
},
|
|
"unit_killed": {
|
|
"stream": "audio/sfx/unit_killed.ogg",
|
|
"volume_db": -6.0,
|
|
"bus": "SFX",
|
|
"description": "Generic combat death thud + metal — categorical fallback target."
|
|
},
|
|
"wonder_built": {
|
|
"stream": "audio/sfx/wonder_built.ogg",
|
|
"volume_db": -3.0,
|
|
"bus": "SFX",
|
|
"description": "Reverberant choral swell announcing a completed wonder."
|
|
},
|
|
"era_advanced": {
|
|
"stream": "audio/sfx/era_advanced.ogg",
|
|
"volume_db": -3.0,
|
|
"bus": "SFX",
|
|
"description": "Deep gong + ascending brass as the era changes."
|
|
},
|
|
"combat_hit": {
|
|
"stream": "audio/sfx/combat_hit.ogg",
|
|
"volume_db": -8.0,
|
|
"bus": "SFX",
|
|
"description": "Generic combat impact — categorical fallback target."
|
|
},
|
|
"unit_moved": {
|
|
"stream": "audio/sfx/unit_moved.ogg",
|
|
"volume_db": -18.0,
|
|
"bus": "SFX",
|
|
"description": "Soft footstep tick on unit movement (throttled)."
|
|
},
|
|
"victory_fanfare": {
|
|
"stream": "audio/sfx/victory_fanfare.ogg",
|
|
"volume_db": -2.0,
|
|
"bus": "SFX",
|
|
"description": "Full brass fanfare on victory_achieved."
|
|
},
|
|
|
|
"combat_started": {
|
|
"stream": "audio/sfx/combat/combat_started.ogg",
|
|
"volume_db": -6.0,
|
|
"bus": "SFX",
|
|
"fallback": "combat_hit",
|
|
"description": "Brief war-horn before first blow lands."
|
|
},
|
|
"unit_promoted": {
|
|
"stream": "audio/sfx/unit_promoted.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"fallback": "tech_researched",
|
|
"description": "Bright brass flourish on unit promotion."
|
|
},
|
|
"city_grew": {
|
|
"stream": "audio/sfx/city/city_grew.ogg",
|
|
"volume_db": -8.0,
|
|
"bus": "SFX",
|
|
"fallback": "city_founded",
|
|
"description": "Gentle bell on city population growth."
|
|
},
|
|
"city_starved": {
|
|
"stream": "audio/sfx/city/city_starved.ogg",
|
|
"volume_db": -8.0,
|
|
"bus": "SFX",
|
|
"fallback": "_silent",
|
|
"description": "Hollow wind on starvation; silent fallback so missing assets don't ride the city_founded sound."
|
|
},
|
|
"golden_age_swell": {
|
|
"stream": "audio/sfx/golden_age_swell.ogg",
|
|
"volume_db": -3.0,
|
|
"bus": "SFX",
|
|
"fallback": "era_advanced",
|
|
"description": "Slow brass crescendo on golden-age start."
|
|
},
|
|
"border_expanded": {
|
|
"stream": "audio/sfx/border_expanded.ogg",
|
|
"volume_db": -10.0,
|
|
"bus": "SFX",
|
|
"fallback": "_silent",
|
|
"description": "Soft brass on border-tile claim."
|
|
},
|
|
"research_start": {
|
|
"stream": "audio/sfx/research_start.ogg",
|
|
"volume_db": -12.0,
|
|
"bus": "SFX",
|
|
"fallback": "_silent",
|
|
"description": "Soft tap on research-start; deliberately quiet."
|
|
},
|
|
"culture_researched": {
|
|
"stream": "audio/sfx/culture_researched.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"fallback": "tech_researched",
|
|
"description": "Drum + chant when a cultural tradition completes."
|
|
},
|
|
"wild_spawn": {
|
|
"stream": "audio/sfx/fauna/spawn.ogg",
|
|
"volume_db": -10.0,
|
|
"bus": "SFX",
|
|
"fallback": "_silent",
|
|
"description": "Brush rustle when a wild creature emerges from a lair."
|
|
},
|
|
|
|
"unit.melee.attack": {
|
|
"streams": [
|
|
"audio/sfx/units/melee/attack_01.ogg",
|
|
"audio/sfx/units/melee/attack_02.ogg",
|
|
"audio/sfx/units/melee/attack_03.ogg"
|
|
],
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"pitch_jitter": 0.05,
|
|
"fallback": "combat_hit",
|
|
"description": "Generic melee swing — random variant + ±5% pitch."
|
|
},
|
|
"unit.melee.hit": {
|
|
"streams": [
|
|
"audio/sfx/units/melee/hit_01.ogg",
|
|
"audio/sfx/units/melee/hit_02.ogg",
|
|
"audio/sfx/units/melee/hit_03.ogg"
|
|
],
|
|
"volume_db": -6.0,
|
|
"bus": "SFX",
|
|
"pitch_jitter": 0.04,
|
|
"fallback": "combat_hit"
|
|
},
|
|
"unit.melee.death": {
|
|
"streams": [
|
|
"audio/sfx/units/melee/death_01.ogg",
|
|
"audio/sfx/units/melee/death_02.ogg"
|
|
],
|
|
"volume_db": -7.0,
|
|
"bus": "SFX",
|
|
"pitch_jitter": 0.03,
|
|
"fallback": "unit_killed"
|
|
},
|
|
|
|
"unit.ranged.attack": {
|
|
"streams": [
|
|
"audio/sfx/units/ranged/fire_01.ogg",
|
|
"audio/sfx/units/ranged/fire_02.ogg"
|
|
],
|
|
"volume_db": -6.0,
|
|
"bus": "SFX",
|
|
"pitch_jitter": 0.05,
|
|
"fallback": "combat_hit",
|
|
"description": "Bowstring + arrow release."
|
|
},
|
|
"unit.ranged.hit": {
|
|
"streams": [
|
|
"audio/sfx/units/ranged/hit_01.ogg",
|
|
"audio/sfx/units/ranged/hit_02.ogg"
|
|
],
|
|
"volume_db": -7.0,
|
|
"bus": "SFX",
|
|
"pitch_jitter": 0.03,
|
|
"fallback": "combat_hit",
|
|
"description": "Arrow thunk into target."
|
|
},
|
|
"unit.ranged.death": {
|
|
"streams": ["audio/sfx/units/ranged/death_01.ogg"],
|
|
"volume_db": -7.0,
|
|
"bus": "SFX",
|
|
"fallback": "unit_killed"
|
|
},
|
|
|
|
"unit.siege.attack": {
|
|
"streams": [
|
|
"audio/sfx/units/siege/bombard_01.ogg",
|
|
"audio/sfx/units/siege/bombard_02.ogg"
|
|
],
|
|
"volume_db": -3.0,
|
|
"bus": "SFX",
|
|
"pitch_jitter": 0.02,
|
|
"fallback": "combat_hit",
|
|
"description": "Deep concussive boom — siege engine fire."
|
|
},
|
|
|
|
"unit.civilian.death": {
|
|
"stream": "audio/sfx/units/civilian/death.ogg",
|
|
"volume_db": -8.0,
|
|
"bus": "SFX",
|
|
"fallback": "unit_killed"
|
|
},
|
|
|
|
"building.civic.complete": {
|
|
"stream": "audio/sfx/buildings/build_complete_civic.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"fallback": "wonder_built",
|
|
"description": "Low ceremonial bell on civic-building completion."
|
|
},
|
|
"building.production.complete": {
|
|
"stream": "audio/sfx/buildings/build_complete_prod.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"fallback": "wonder_built",
|
|
"description": "Anvil ring on production-building completion."
|
|
},
|
|
"building.military.complete": {
|
|
"stream": "audio/sfx/buildings/build_complete_mil.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"fallback": "wonder_built",
|
|
"description": "Drum + horn on military-building completion."
|
|
},
|
|
"building.defense.complete": {
|
|
"stream": "audio/sfx/buildings/build_complete_def.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"fallback": "building.production.complete",
|
|
"description": "Stone-slab thump on wall / fortification completion."
|
|
},
|
|
|
|
"fauna.predator.spawn": {
|
|
"stream": "audio/sfx/fauna/predator_spawn.ogg",
|
|
"volume_db": -10.0,
|
|
"bus": "SFX",
|
|
"fallback": "wild_spawn"
|
|
},
|
|
"fauna.predator.attack": {
|
|
"streams": [
|
|
"audio/sfx/fauna/predator_attack_01.ogg",
|
|
"audio/sfx/fauna/predator_attack_02.ogg"
|
|
],
|
|
"volume_db": -6.0,
|
|
"bus": "SFX",
|
|
"pitch_jitter": 0.05,
|
|
"fallback": "combat_hit",
|
|
"description": "Snarl + impact for wolves / bears."
|
|
},
|
|
"fauna.predator.hit": {
|
|
"streams": [
|
|
"audio/sfx/fauna/predator_hurt_01.ogg",
|
|
"audio/sfx/fauna/predator_hurt_02.ogg"
|
|
],
|
|
"volume_db": -7.0,
|
|
"bus": "SFX",
|
|
"pitch_jitter": 0.04,
|
|
"fallback": "combat_hit"
|
|
},
|
|
"fauna.predator.death": {
|
|
"streams": ["audio/sfx/fauna/predator_death.ogg"],
|
|
"volume_db": -7.0,
|
|
"bus": "SFX",
|
|
"fallback": "unit_killed"
|
|
},
|
|
|
|
"fauna.apex_predator.spawn": {
|
|
"stream": "audio/sfx/fauna/apex_roar.ogg",
|
|
"volume_db": -4.0,
|
|
"bus": "SFX",
|
|
"fallback": "fauna.predator.spawn"
|
|
},
|
|
"fauna.apex_predator.attack": {
|
|
"stream": "audio/sfx/fauna/apex_attack.ogg",
|
|
"volume_db": -3.0,
|
|
"bus": "SFX",
|
|
"fallback": "fauna.predator.attack"
|
|
},
|
|
"fauna.apex_predator.death": {
|
|
"stream": "audio/sfx/fauna/apex_death.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"fallback": "fauna.predator.death"
|
|
},
|
|
|
|
"fauna.herbivore.spawn": {
|
|
"stream": "audio/sfx/fauna/herbivore_call.ogg",
|
|
"volume_db": -12.0,
|
|
"bus": "SFX",
|
|
"fallback": "wild_spawn",
|
|
"description": "Distant deer / elk call."
|
|
},
|
|
"fauna.herbivore.death": {
|
|
"stream": "audio/sfx/fauna/herbivore_death.ogg",
|
|
"volume_db": -8.0,
|
|
"bus": "SFX",
|
|
"fallback": "unit_killed"
|
|
},
|
|
|
|
"weather.storm": {
|
|
"stream": "audio/sfx/weather/storm.ogg",
|
|
"volume_db": -8.0,
|
|
"bus": "SFX",
|
|
"fallback": "_silent",
|
|
"description": "Distant thunder cue when a storm event applies."
|
|
},
|
|
"weather.blizzard": {
|
|
"stream": "audio/sfx/weather/blizzard.ogg",
|
|
"volume_db": -8.0,
|
|
"bus": "SFX",
|
|
"fallback": "weather.storm"
|
|
},
|
|
"weather.heat_wave": {
|
|
"stream": "audio/sfx/weather/heat_wave.ogg",
|
|
"volume_db": -10.0,
|
|
"bus": "SFX",
|
|
"fallback": "_silent"
|
|
},
|
|
"weather.drought": {
|
|
"stream": "audio/sfx/weather/drought.ogg",
|
|
"volume_db": -12.0,
|
|
"bus": "SFX",
|
|
"fallback": "weather.heat_wave"
|
|
},
|
|
"weather.tornado": {
|
|
"stream": "audio/sfx/weather/tornado.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"fallback": "weather.storm"
|
|
},
|
|
"weather.hurricane": {
|
|
"stream": "audio/sfx/weather/hurricane.ogg",
|
|
"volume_db": -5.0,
|
|
"bus": "SFX",
|
|
"fallback": "weather.storm"
|
|
}
|
|
},
|
|
"music": {
|
|
"tracks": [
|
|
{
|
|
"id": "overworld_awakening",
|
|
"stream": "audio/music/overworld_awakening.ogg",
|
|
"volume_db": -10.0,
|
|
"bus": "Music",
|
|
"loop": true,
|
|
"era_range": [1, 2],
|
|
"mood": "ambient",
|
|
"description": "Sparse horn drones + low drums. Era 1-2 ambient."
|
|
},
|
|
{
|
|
"id": "overworld_craft",
|
|
"stream": "audio/music/overworld_craft.ogg",
|
|
"volume_db": -10.0,
|
|
"bus": "Music",
|
|
"loop": true,
|
|
"era_range": [3, 4],
|
|
"mood": "ambient",
|
|
"description": "Forge-rhythm percussion + strings. Era 3-4 ambient."
|
|
},
|
|
{
|
|
"id": "overworld_kingdoms",
|
|
"stream": "audio/music/overworld_kingdoms.ogg",
|
|
"volume_db": -10.0,
|
|
"bus": "Music",
|
|
"loop": true,
|
|
"era_range": [5, 6],
|
|
"mood": "tension",
|
|
"description": "Measured march + choir. Era 5-6 ambient."
|
|
},
|
|
{
|
|
"id": "overworld_industry",
|
|
"stream": "audio/music/overworld_industry.ogg",
|
|
"volume_db": -10.0,
|
|
"bus": "Music",
|
|
"loop": true,
|
|
"era_range": [7, 8],
|
|
"mood": "tension",
|
|
"description": "Industrial pulse + low brass. Era 7-8 ambient."
|
|
},
|
|
{
|
|
"id": "overworld_ascension",
|
|
"stream": "audio/music/overworld_ascension.ogg",
|
|
"volume_db": -10.0,
|
|
"bus": "Music",
|
|
"loop": true,
|
|
"era_range": [9, 10],
|
|
"mood": "climactic",
|
|
"description": "Orchestral peak + full choir. Era 9-10 ambient."
|
|
},
|
|
{
|
|
"id": "golden_age",
|
|
"stream": "audio/music/golden_age.ogg",
|
|
"volume_db": -8.0,
|
|
"bus": "Music",
|
|
"loop": true,
|
|
"era_range": null,
|
|
"mood": "triumph",
|
|
"description": "Plays while a golden age is active; replaces era track until golden_age_ended."
|
|
},
|
|
{
|
|
"id": "victory",
|
|
"stream": "audio/music/victory.ogg",
|
|
"volume_db": -6.0,
|
|
"bus": "Music",
|
|
"loop": false,
|
|
"era_range": null,
|
|
"mood": "triumph",
|
|
"description": "Victory screen music, plays once on victory_achieved."
|
|
}
|
|
],
|
|
"crossfade_seconds": 2.0,
|
|
"default_track_id": "overworld_awakening"
|
|
}
|
|
}
|