Starsector Nihilism Guidance
首页
GitHub 项目
首页
GitHub 项目
  • 首页
  • 基础及舰船相关
    • MOD 骨架和入口文件
    • 制作一艘基本舰船
    • 制作一艘航母与战机
    • 制作一艘相位舰
    • 制作火炮、光束与导弹
    • 为舰船加入内置武器、船插与战机
    • 补充描述文本
  • 无需入门的代码修改
    • 以船插为例初步熟悉代码
    • 制作完整船插
    • 制作最小战术系统
    • 为武器加入命中与光束特效
  • 势力与生涯星系
    • 注册一个势力
    • 配置势力舰队
    • 制作 MOD 入口类的最基础适配
    • 制作一个生涯星系
    • 补完描述文本
  • 战役与无代码对象
    • 制作测试战役装配
    • 为模拟战与标题画面加入装配
    • 为舰船加入外观风格
    • 制作一艘模块船
    • 制作一种星体类型
    • 制作一个自定义实体
  • 音频资源与播放
    • 准备 OGG 音频资源
    • 注册音频资源
    • 为游戏对象加入音频
  • Java 工程化
    • 确认 Java 与编译依赖
    • 迁移代码文件到 src
    • 配置 Gradle 工程
    • 构建 JAR 并声明产物
  • 全局服务
    • 制作 MOD 入口类
    • 使用 Global 访问游戏服务
    • 读取设置
    • 调用声音播放器
    • 记录和定位 MOD 日志
  • 战斗运行时
    • 读取战斗引擎状态
    • 读取战斗对象
    • 制作每帧战斗插件
    • 修改舰船数值
    • 配置武器脚本
    • 配置战斗监听器
    • 制作分层渲染插件
  • 战斗内容扩展
    • 详解舰船插件
    • 详解战术系统
    • 详解武器动画
  • 生涯世界与基础服务
    • 读取生涯世界状态
    • 构建生涯地点
    • 配置生涯势力
    • 放置生涯实体
  • 生涯舰队与舰队成员
    • 生成生涯舰队
    • 管理舰队中的成员
    • 舰队状态的重算过程
    • 维护舰队成员状态
    • 读取并修改舰船装配
  • 市场与商品
    • 创建生涯市场
    • 读写货舱内容
    • 注册市场商品
    • 实现专用子市场
    • 制作专用产业
    • 注册特殊物品
    • 实现市场条件
  • 人物与技能
    • 配置人物基础
    • 让人物承担角色
    • 制作角色技能
  • 生涯脚本与情报事件
    • 编写生涯逐帧脚本
    • 监听生涯事件
    • 选择生涯插件
    • 管理舰队活动情报
  • 酒吧事件与任务
    • 组织生涯交互对话
    • 实现对话插件
    • 接入酒吧事件
    • 构建阶段任务
    • 接入酒吧任务
  • Rules 系统、命令与内存
    • 组织 Rules 规则表
    • 编排 Rules 对话
    • 接入 Rules 生涯场景
    • 编写 Rules 命令
    • 使用 MemoryAPI 保存状态
  • 文件读取与写入
    • 读取 MOD 内文本
    • 读取 MOD 内 JSON 文件
    • 读取 MOD 内 CSV
    • 读写 common 数据
    • 实现本地化机制
  • 常用依赖库
    • 接入常用依赖库
    • 使用 LazyLib 几何工具
    • 使用 LazyLib 查询战场
    • 使用 LazyLib 保存公共 JSON
    • 注册 GraphicsLib 光照数据
    • 创建 GraphicsLib 动态光源
    • 制作 GraphicsLib 纹理映射
    • 配置 MagicLib 自动尾迹
    • 创建 MagicLib 运行时尾迹
    • 配置 MagicLib 数据赏金
    • 使用 MagicLib 辅助生涯开发
    • 使用 MagicLib 战斗小工具
  • 可选依赖与 Nexerelin
    • 接入可选依赖
    • 登记 Nexerelin 势力与外交配置
    • 配置 Nexerelin 的两种星区开局
    • 配置 Nexerelin 战略 AI 与扩张规模
    • 登记 Nexerelin 地面战单位与产业
    • 为 Nexerelin 特遣队添加命名与事件响应
    • 制作即时生效的 LunaLib 设置面板
  • 着色器与渲染
    • 使用 Java OpenGL
    • 使用 GLSL 进阶
    • 使用 VBO 和 VAO 保存顶点
    • 使用 SSBO 传递参数
    • 使用实例化进行绘制
    • 选择 BoxUtil 渲染方案

准备 OGG 音频资源

本节准备武器开火、系统循环、界面反馈与市场音乐的 Ogg Vorbis 文件。播放用途先决定声道,资源再按路径放进 MOD;下一节登记声音 ID,随后接到既有武器、系统和市场上。

本节预期阅读时间:~6 分钟。

本节预期操作时间:~10 分钟。

学习目标

完成后,您将能够:

  • 导出游戏可读取的 Ogg Vorbis;
  • 按用途选择声道并组织声音目录;
  • 检查格式、采样率与循环接缝;
  • 为外部素材保存来源和许可记录。

前置知识

  • [C1-S1] 的 MOD 目录与资源路径;
  • 能够使用音频编辑器导出 Ogg Vorbis;
  • 能够播放音频并查看格式属性。

先确定声音在哪种场合播放

武器和系统声音通常跟随舰船位置,界面声音作为直接反馈,音乐则连续播放。位置音效采用单声道,UI 音效和音乐采用双声道。因此,导出前按实际播放用途确定声道,资源的名称则用于后面的路径登记。

在 MOD 根目录建立 sounds/,当前准备四个文件:

音频资源速查表

文件用途声道
sounds/GearIn_weapon_fire.ogg都林开火位置音效mono
sounds/GearIn_system_loop.ogg突击填弹器持续循环mono
sounds/GearIn_ui_feedback.ogg进入生涯的界面反馈stereo
sounds/GearIn_market_theme.ogg齿轮工业市场音乐stereo

文件名沿用 GearIn_ 前缀,可以继续放进用途子目录。声音 ID 在注册文件中决定,资源路径与 ID 分别填写。例如,市场主题文件名为 GearIn_market_theme.ogg,后面登记的声音 ID 为 GearIn_market_music,两者通过注册条目连接。

导出与检查编码

使用音频编辑器导出 Ogg Vorbis,采用 44100 Hz 或 48000 Hz 采样率,按上表选择声道。扩展名保存为 .ogg,导出后用播放器和格式属性确认实际编码。

循环资源检查首尾的波形与响度。系统循环一旦有明显接缝,游戏中会反复出现同一处断点。 导出前反复播放完整循环,再裁剪或调整首尾;音量可以在注册时调整,接缝则需要在资源本身处理。

资源路径相对于 MOD 根目录,大小写与后面的配置一致。sounds/ 是原版惯例,播放器实际按注册条目的 file 与 source 读取资源,因此可以按项目规模安排子目录,再将路径写入对应条目。

保存素材来源

外部素材记录来源、许可证和修改方式,放在项目文档中。自行录制、公开素材与原版资源都可以作为制作起点,记录按实际来源填写。

后续替换声音时沿用稳定路径和注册 ID,调用代码就可以继续使用当前名称。需要修改文件名时,同时更新登记路径。

验证方案

前置数据:四个音频已导出,外部播放器和属性检查工具可用。

  1. 检查 sounds 目录,核对四个文件和实际扩展名。
  2. 逐个播放,确认声音内容与用途。
  3. 核对 Ogg Vorbis 格式、声道与采样率。
  4. 反复播放系统循环,比较首尾波形和听感。
  5. 保存来源许可记录,再进行声音注册。

预期结果:

  • 文件可正常播放,属性显示预期编码和声道。
  • 位置资源为单声道,UI 与音乐为双声道。
  • 循环首尾连续,重复播放保持预期听感。
  • 资源路径与来源记录明确。

故障分析

  • 播放器无法识别:扩展名与实际编码不一致,或文件导出不完整。

    • 解决方案:重新导出 Ogg Vorbis,并核对文件属性。
  • 位置音效空间表现异常:资源使用双声道。

    • 解决方案:按位置播放用途导出 mono,再核对登记路径。
  • 循环有明显断点:首尾波形或响度不连续。

    • 解决方案:裁剪与调整接缝,在合适零交叉处导出并重复播放。
  • 游戏加载找不到文件:登记路径与文件目录、大小写不同。

    • 解决方案:按相对 MOD 根目录的路径核对 file。

总结

音频准备先确定用途,再决定声道、编码和循环处理。资源文件保存实际声音,下一节的 sounds.json 将声音 ID 连接到文件,具体使用方继续按 ID 引用。

把资源检查放在注册之前,后面排查就能区分素材本身和游戏接入问题。声音变化最直接的依据仍然是实际播放,文件属性与听感一起核对。

建议参考项

  • data/config/sounds.json:声音 ID 与资源的注册关系。
  • com.fs.starfarer.api.SoundPlayerAPI:各播放方法的声道与用途约定。
在 GitHub 上编辑此页
上次更新: 2026/10/14 12:25
贡献者: 1847905557
下一页
注册音频资源