优化相关mod简介与实测
测试的mod: DSPOptimizations, BulletTime, SampleAndHoldSim
测试存档: 9k白糖, 蓝巨戴森球每分钟发射3w太阳帆+2k火箭

在游戏中可以按shift+F12显示渲染帧率(FPS)和逻辑帧率(UPS)
当渲染帧率过低时(<30),逻辑帧率会降低。反之亦然。
在测试之前的渲染帧率=11,逻辑帧率=22。
分析面板主要逻辑=42.8ms,全部生产线=29.0ms,戴森球系统=11.1ms。

DSPOptimizations
- 增加物流塔入库/出库运算的多线程
- 可以在设置档关闭影子及关闭发射中太阳帆
- 改进戴森球运算逻辑
纯优化mod, 美中不足的地方是和联机mod冲突
细节:
记录每层戴森球的结构点数和细胞点数, 只在变动时更新值。每帧用这个值计算发电量。
只在使用编辑器着色笔刷或细胞点数变动时更新戴森球壳的材质。
只有在太阳帆子弹或建设中戴森球可见时才会同步ComputerBuffer。
测试效果:
> 仓储 2.53ms -> 0.97ms (-1.56ms)
戴森球系统 11.12ms -> 1.45ms (-9.67ms)
> 弹射轨道 7.18ms -> 0.52ms (-6.66ms)

BulletTime
1. 调整游戏速度
将逻辑帧中除了机甲和操控的部分隔离出来
让使用者自行调整它们(工厂,戴森球等)的运算速度
如此一来可以牺牲速度来换取画面的流畅度
2. 背景自动保存
自动保存的期间让游戏进入时停状态避免数据更动。
玩家可以在时停状态中移动或着查看建筑情报。
(因为星球的数据独立性, 也许只要阻止玩家更动全域资料就好?)
3. 加快载入主选单
跳过封面存档的星球模型载入
测试效果:
滑杆设置33% FPS:30|60 (实质逻辑帧20)
总计 43.44ms -> 14.48ms (可承受61逻辑帧)
滑杆设置25% FPS:60|60 (实质逻辑帧15)
总计 43.44ms -> 11.86ms (可承受72逻辑帧)

SampleAndHoldSim
将缓速的概念延伸, 并试图维持平均产量不变。
以取巧的方式,藉由牺牲远端星球的模拟精度来提升逻辑帧率。
细节:
把星球上整个工厂看做是一个黑盒, 黑盒内元件运作速度1/x倍, 黑盒的输入输出放大x倍。
如果工厂是稳定的, 则长期下来平均产量会和原本的工厂相同。如果不是稳定的,则会拉长反应时间x倍。
戴森球和运输船仍保持原本速度。 https://b23.tv/BV1oB4y1X78J
测试效果:
设置factory:21 Cycle:3 ticks
全部生产线 29.07ms -> 11.18ms (-17.89ms)
> 弹射轨道 7.18ms -> 8.29ms (+1.11ms)
设置factory:7 Cycle:9 ticks
全部生产线 29.07ms -> 5.22ms (-23.85ms)
> 弹射轨道 7.18ms -> 8.41ms (+1.23ms)

综合DSPOptimizations + SampleAndHoldSim达到60FPS

设置factory:12 Cycle:6 ticks
总计 43.44ms -> 11.07ms (可承受78逻辑帧)
全部生产线 29.07ms -> 6.45ms (-22.62ms)
戴森球系统 11.12ms -> 1.95ms (-9.17ms)

其他优化相关MOD
辅助多功能mod Auxilaryfunction
渲染帧率: 不渲染系列
逻辑帧率: 停止工厂, 停止戴森球
可以用橙棂九月的戴森球工具箱安装
https://b23.tv/BV1SS4y1X75n
更多图形选项Mod MoreGraphicsOptions
渲染帧率: 设置全局贴图分辨率, 各向异性过滤, 全局阴影模式
https://www.bilibili.com/read/cv10006415
ReBuffer
设置工厂建筑物中物品缓冲仓储的大小
作者说有优化运算, 但实际测试效果不明显
CompressSave (已不相容,尚未更新)
用LZ4压缩存档,优化写入速度
测试效果(使用自己适配游戏的版本):
存档大小 956MB -> 722MB
存档耗时 19.9s -> 4.4s
可惜原作者已经很久没更新了
https://www.bilibili.com/read/cv10201163
Blackbox
将黑盒打包成一个整体运算
需要先花时间分析物流塔和工厂的结构
还没有完全成熟, 比较复杂也较容易出错

以上的Mod都可以在https://dsp.thunderstore.io/找到
推荐使用r2modman模组管理器安装
如果要手动安装记得也要安装前置
例如DSPOptimizations需要安装前置DSPModSave
并且要将zip资料夹里的
patchers\DSPOptimizationsPreloader.dll放到BepInEx\patchers
plugins\DSPOptimizations.dll放到BepInEx\plugins