声音包系统
本页面向“普通玩家”和“资源包作者”,介绍如何使用与制作声音包(Sound Pack),以及系统的工作原理与注意事项。你可以通过“声音包”在不同成套音频资源之间一键切换。
提示:切换声音包后需要重启游戏生效。
NOTE
目前 ModConfig UI 支持尚未完善,你看到的属于前瞻性内容。
如何安装与切换
安装位置
- 游戏根目录下的
DuckovCustomSounds/。 - “默认资源”(不启用任何包)放在根目录直下的模块目录中,如
TitleBGM/、HomeBGM/、SceneBGM/、BossBGM/、Extraction/、CustomEnemySounds/、CustomFootStepSounds/等。 - 声音包安装为子文件夹:
DuckovCustomSounds/<包ID>/,该文件夹内必须包含一个pack.json元数据文件,以及你要替换的模块目录。
- 游戏根目录下的
切换方法
- 优先:在游戏内 ModConfig → “声音包”下拉列表选择需要的包名称,点击应用后重启游戏。
- 备选:编辑
DuckovCustomSounds/settings.json,将currentSoundPack设置为目标包的“包ID”(即包文件夹名)。保存后重启游戏。
恢复默认
- 在 ModConfig 中选择“Default”,或将
settings.json.currentSoundPack置为空字符串"",然后重启。
- 在 ModConfig 中选择“Default”,或将
常见问题
- 看不到任何包:请确认
DuckovCustomSounds/下是否存在包含pack.json的包文件夹;如果没有声音包,也可以直接在根目录的默认模块目录中放入音频文件,系统会把它识别为“Default”。 - 切换不生效:切换写入的是
settings.json,需“重启游戏”后才真正应用。 - 只改了一部分模块:允许。未提供的部分会按“当前包 → Default → 原版”的顺序回退。
- 如何确认当前选择:打开
DuckovCustomSounds/settings.json查看currentSoundPack;或在 ModConfig 的说明文本处查看当前包信息。
- 看不到任何包:请确认
进阶:如何制作一个声音包
💡 工具推荐: 使用我们的声音包生成器工具可以快速生成符合格式的pack.json文件!
目录结构(示例)
- 包应放在
DuckovCustomSounds/<包ID>/下。包ID推荐使用英文、数字、下划线,避免空格与特殊字符。
DuckovCustomSounds/ ├─ settings.json # 全局设置(不要打包带走) ├─ TitleBGM/ # Default(非包)示例:根目录直放即为“默认” ├─ HomeBGM/ ├─ SceneBGM/ ├─ BossBGM/ │ └─ ... ├─ MyPack/ # 声音包示例(包ID = MyPack) │ ├─ pack.json # 元数据(必须) │ ├─ HomeBGM/ │ ├─ Extraction/ │ └─ CustomEnemySounds/ └─ AnotherPack/ ├─ pack.json └─ CustomFootStepSounds/- 包应放在
必备文件:
pack.json- 位置:包文件夹内(
DuckovCustomSounds/<包ID>/pack.json) - 作用:在扫描时识别为“一个包”,并提供显示信息。未通过校验(缺少必填项)将不会出现在列表中。
- 字段规范(最小必填:name、author、version)
json{ "name": "My Custom Sounds", "author": "YourName", "version": "1.0.0", "description": "对若干模块的替换示例", "compatibleModVersion": "2.0.0", "requiredModules": [ "CustomBGM", "CustomEnemySounds", "CustomFootStepSounds" ], "optional": { "homepage": "https://example.com", "qq": "123456" } }- 注意
- 包ID并不写在
pack.json,而是“包文件夹名”本身。显示文本为name vversion by author - description(如果有描述)。 compatibleModVersion与requiredModules仅作信息展示与约定,当前版本不会强制校验或阻断加载。- 不要把
settings.json随包一并分发,它是用户本地全局配置。
- 包ID并不写在
- 位置:包文件夹内(
模块与目录对照(概览)
- BGM(背景音乐)
TitleBGM/:title.mp3(标题/菜单循环)、start.mp3(进入地图提示,单次)、death.mp3(死亡提示,单次)、extraction.mp3(作为 Extraction 缺省回退)HomeBGM/:放多首 mp3,即可在大厅进行播放与切换(随机/不重复/上一首等由设置控制)SceneBGM/:场景/关卡 BGMBossBGM/:以敌人 NameKey(去掉Cname_前缀)命名的文件,找不到则用default_boss.*
- Extraction(撤离提示)
Extraction/:countdown.mp3|wav(倒计时模式,循环)、success.mp3|wav(撤离成功 stinger)、可选extraction.mp3|wav(作为缺省)
- 敌人语音、脚步与其他 SFX
CustomEnemySounds/、CustomFootStepSounds/、CustomGunSounds/、CustomMeleeSounds/、CustomGrenadeSounds/、CustomItemSounds/、CustomKillFeedback/- 各模块的键名/文件组织、格式细节,请参考对应模块页面与各模块 README(本页仅做总览)。
音频格式支持(概览,以模块 README 为准)
HomeBGM/、TitleBGM/:推荐 mp3;- 其他常见目录:通常支持 mp3/wav/ogg/flac;
- 若模块另有特殊限制或优先级,请以相应模块文档为准。
回退与优先级(通用)
- 资源解析按以下顺序回退:当前“声音包” → Default(根目录直放) → 原版游戏音频。
- 未覆盖的模块或文件,系统会自动回退;因此你可以只提供自己想要替换的那一部分,不必“做满整套”。
发布建议
- 只打包你的“包文件夹”(例如
MyPack/),不要包含settings.json; - 在 README/发布页介绍清楚支持的模块、建议格式、推荐音量;
- 如涉及他人作品,请明确授权信息。
原理与实现(给想深入的你)
- 启动时扫描与识别
- 系统仅扫描
DuckovCustomSounds/的一级子目录,存在pack.json则识别为一个包;根目录若在典型目录中(HomeBGM/、BossBGM/、SceneBGM/、TitleBGM/)发现音频文件,则也会提供一个名为“Default”的选项。
- 系统仅扫描
- 选择与保存
- 游戏内 ModConfig 的“声音包”下拉列表来源于扫描结果;当你更改选择时,仅写入
DuckovCustomSounds/settings.json的currentSoundPack,需要重启后生效。
- 游戏内 ModConfig 的“声音包”下拉列表来源于扫描结果;当你更改选择时,仅写入
- 元数据
pack.json反序列化到SoundPackInfo,必须字段为name/author/version,显示文本由GetDisplayText()生成。
- 设置文件读取
settings.json也会在全局设置初始化时被读取,currentSoundPack会被保留为字符串(空字符串代表 Default)。
附录
settings.json片段json{ "currentSoundPack": "MyPack" }pack.json模板json{ "name": "Your Sound Pack Name", "author": "Your Name", "version": "1.0.0", "description": "对哪些模块做了替换的说明", "compatibleModVersion": "2.0.0", "requiredModules": ["CustomBGM", "CustomFootStepSounds", "CustomEnemySounds"], "optional": { "homepage": "https://your-website.com", "qq": "123456" } }
如需进一步定制与调试,请继续阅读各模块的专页(BGM、敌人语音、脚步、武器/近战/手雷/物品/击杀反馈等)。
