# 立体声模组-楷源闻远 **Repository Path**: RegulusSource/SC_stereo ## Basic Information - **Project Name**: 立体声模组-楷源闻远 - **Description**: 为生存战争游戏添加立体声功能 - **Primary Language**: Unknown - **License**: CC-BY-SA-4.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-11-16 - **Last Updated**: 2026-08-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SC 立体声模组 (SC_stereo) 让 Survivalcraft 支持真正的立体声定位音效:游戏内的声音会根据音源相对玩家的方位,从对应的方向传来,并且在玩家转身时实时跟随变化。 ## 功能特性 - **方位感立体声**:将音源的世界坐标转换为相对玩家朝向的坐标,交给 OpenAL 做立体声定位,左边的怪物叫声就从左耳传来。 - **转身实时跟踪**:正在播放的定位音效每帧根据玩家当前朝向重算方向,转身时声音方向随之转动,而不是"播放瞬间定死方向"。 - **延迟音效方向不过时**:带延迟(如远处爆炸声)的音效在播放瞬间才做立体声转换,避免等待期间玩家转身导致方向错误。 - **兼容原版行为**:2D/界面音效仍走原版逻辑;音量衰减、拥塞控制、随机音效等判定与原版一致;立体声(双声道)音源自动跳过方向定位,只跟踪单声道音源。 ## 工作原理 模组通过 `立体声.xdb` 将游戏数据库中的音频子系统类替换为 `Game.SubsystemAudioStereo`(继承自原版 `SubsystemAudio`): 1. 重写 `PlaySound` / `PlayRandomSound`,将定位音效放入立体声队列,记录音源世界坐标; 2. 到达播放时间后,用 `StereoConver` 将世界坐标变换到玩家身体朝向的局部坐标系,作为 OpenAL 音源位置播放; 3. 每帧 `Update` 中遍历正在播放的单声道定位音效,按玩家最新朝向重新设置 OpenAL 音源位置。 核心坐标变换([立体声.cs](立体声.cs)): ```csharp Vector3.Transform(position - body.Matrix.Translation, Matrix.Invert(body.Matrix.OrientationMatrix)) ``` ## 环境要求 | 项目 | 要求 | | --- | --- | | 游戏版本 | Survivalcraft 2.4.0.0(SurvivalcraftAPI 1.9) | | 目标框架 | .NET 10.0 | | 依赖 | Silk.NET.OpenAL(仅编译期,游戏本体自带运行时) | ## 构建 ```bash dotnet build -c Release ``` 构建产物位于 `bin/Release/net10.0/`,其中 `SC立体声模组.dll`、`modinfo.json`、`立体声.xdb` 为模组所需文件。 ## 安装 将构建产物(或发布的模组包)放入游戏的 Mods 目录后启动游戏即可。 ## 项目结构 ``` SC_stereo/ ├── 立体声.cs # SubsystemAudioStereo:立体声音频子系统实现 ├── 立体声.xdb # 数据库补丁:替换音频子系统类为 SubsystemAudioStereo ├── modinfo.json # 模组元信息 └── SC立体声模组.csproj # 项目文件 ``` ## 作者与许可 - 作者:把红色赋予黑海(楷源璇苛工作室) - 仓库: - 许可证:[CC BY-SA 4.0](LICENSE)