SpeedHackMod 是 CesiumLoader 自带的变速模组。这次改进增加了可选的 Unity 加速模式,同时适配独立计时的界面、骰点、技能和出牌动画,目标是减少开启加速后的性能损失。模组版本为 2.5.4。

原作者为 CesiumLoader / Yume Higashitani。我参与整理和提交的优化已由上游审核并继续完善,PR #9 已于 2026 年 11 月 10 日合并。

GitHub 上游项目 · SpeedHackMod 源码与说明 · 优化 PR #9

实际提升了多少

测试以同一台设备、同一场景下的游戏加加 FPS与实际动画体验为准,不用游戏内部帧计数代替。调试阶段的反馈如下:

状态

游戏加加观察值

关闭加速

约 500 FPS

原生模式 4 倍速

约 100 FPS

Unity 优化模式并补齐动画适配

约 200–300 FPS

加速时帧率约为原方案的 2~3 倍,但仍低于关闭加速的帧率。最终测试确认大厅背景、技能、战斗入场、战斗内 1~6 点投骰和出牌动画已加快,快捷键也能正常来回切换。

优化原理

原生 native 模式会缩放进程看到的系统时间。新增 unity 模式先请求原生时钟恢复 1 倍,收到有效确认后,再通过 Unity 的 Time.timeScale 加速游戏时间,减少对全局计时的影响。确认前不启用 Unity 倍率,避免双重加速。

原生时钟倍率 = 1
Unity timeScale = 游戏原始 timeScale × 目标倍率
fixedDeltaTime = min(原始固定步长 × 目标倍率, maximumDeltaTime)

开启固定更新优化后,固定步长随倍率增大。例如原始步长为 0.02 秒时,4 倍速下可调整到 0.08 秒(仍受最大步长限制),减少加速导致的物理更新需求。代价是高速下物理精度可能降低,遇到异常可以关闭 optimizeFixedUpdates。

为什么需要额外适配动画

并非所有动画都跟随 timeScale。只改这个值,会出现游戏局部加快、其他演出仍然原速的问题。2.5.4 补齐了这些通道:

  • FairyGUI 界面转场、序列帧和世界空间 UIPanel,包含战斗骰点面板。

  • 追踪刚开始播放的转场,及时同步出牌动画。

  • Animator、Timeline、Spine 的独立计时动画,以及 Cinemachine 镜头切换。

  • 已知 UI 控制器中的静音 CRI 视频。接口上限为 3 倍;含音轨或音轨信息未知的视频跳过,所以选择 4 倍速时,适配的视频最高仍为 3 倍。

扫描采用缓存、分批处理和错开查询,不每帧遍历整个场景。UI 树每帧最多 64 个遍历步骤,活跃转场最多检查 128 个 Tween,组件查询结果每帧最多处理 512 个并跨帧续扫。失效对象逐步清理,避免缓存长期占满。

上游合并时又完善了什么

  • 原生状态必须有效,不能把读取失败当作已恢复 1 倍;暂停恢复时保留倍率基准,避免重复相乘。

  • 修复按住快捷键、倍率上下限热重载,以及动画类型稍后才加载时的发现问题。

  • 为 TurnClockMod 增加 Unity 模式兼容:按实际帧时间缩放补偿可识别的计时器,并共享采样、去重,减少额外开销。

  • 将控制器检查迁移到 xUnit,并增加状态失败、扫描尾部、缓存回收和倒计时相关回归测试。

当前上游还将原生倍率请求与确认改为本进程回环 UDP 通信,减少共享文件通信的开销。因此更新当前版本时,需同步更新配套加载器与 SDK,不能只替换一个新 DLL。

下载、安装与设置

截至 2026 年 11 月 10 日,包含相关改动的 CesiumLoader 3.6.0 标记为 Pre-release(预发布);GitHub 的 Latest 稳定版入口当时仍指向 3.5.2。请按明确的版本链接和发布说明选择,避免把旧稳定版当成这次优化版。

  1. 退出游戏,备份现有加载器及个人模组配置。

  2. 通过支持该版本的启动器更新,或按上游说明安装配套加载器、SDK 和 SpeedHackMod。下载应使用发布附件,不是 GitHub 自动生成的源码包。

  3. 确认 mods/SpeedHackMod/ 内的模组已更新,保留个人 config.json。

  4. 在配置中启用 unity 模式,再启动游戏并检查动画、快捷键和帧率。

{
  "accelerationMode": "unity",
  "optimizeFixedUpdates": true,
  "accelerateUiAnimations": true,
  "accelerateIndependentAnimations": true
}

这里只列出需要修改的字段,不要用这段内容覆盖整份配置文件。缺少 accelerationMode 字段时,默认仍为 native;切回 native 可恢复原有加速机制。快捷键沿用个人设置,文档默认是 Delete,本机测试使用 LeftControl。

需要让客户端操作倒计时尽量按真实时间显示时,还应更新配套的 TurnClockMod。它不延长服务器允许的操作时间,也不改变服务器规则。

来源与限制

模组保留 CesiumLoader 原版权和 NOTICE,按 AGPL-3.0 分发。完整参数、构建方式和已知限制见 上游中文说明。

本机测试确认的是适配范围内的动画,并不意味着所有视频、特殊演出或后续游戏版本都一定生效。这是非官方模组,使用前请确认游戏规则;出现兼容问题时应停用并向项目反馈。