[天幕心帷]过月性能优化
当前版本重点是为原后端建立只存在于内存中的高速缓存结构:在不延迟世界结算、不跳过原版逻辑、不写入自定义存档数据的前提下,bypass 原版过月中的低效扫描路径,并重写为基于本 Mod 高速缓存表的高效反向查询 / 候选上界查询。
这些缓存不写盘,退出世界或切档后会释放;诊断样本中主要缓存命中率普遍保持在 90% 以上,部分目标索引、matcher 和静态 planning graph 缓存命中率可突破 99%。
对密闻数量多、NPC 行动规划重、存档体积大的后期档,当前测试样本中过月计算耗时通常可压缩到原版的 50%-15% 左右,也就是约 2-8 倍的过月计算加速;具体收益取决于存档热点分布、硬盘性能和其它 Mod。
本 Mod 不接管、延迟或新增原版保存。
- 为原版过月热路径建立运行时高速缓存表,绕开重复全表/全区域扫描
- 密闻传播阶段 holder count 反查表
- 密闻代谢/广播/删除阶段等价实现
- 减少 UpdateInformation 中秘闻相关的重复扫描
- NPC 月行动规划热路径优化:目标范围索引、关系/物品候选预过滤、target matcher 阶段缓存
- NPC 主/副目标规划使用冻结快照屏障,减少 CharacterActionPlanning 中的重复世界查询
- primary ApplyAll 后按 location / relation / inventory delta 局部更新快照,供 secondary planning 使用
- 静态 planning graph 邻接缓存,减少初次完整规划时的重复节点扫描
- 可选放大 SaveWorld 中 working.db 的复制块,减少原版 4KB 小块循环开销
- 可选取消存档压缩,以存档体积换保存速度
- 可选输出密闻月结、NPC 规划和 SaveWorld 写盘细分诊断
- 密闻优化与 NPC 行动规划优化只替换查找/计数/候选缩小路径,不跳过结算,不延迟结算。
- 高速缓存均为运行时内存结构,不写入存档,不改变原版存档格式。
- NPC 行动规划优化不改变最终 selector / predicate / 关系判断 / 随机选择 / 目标选择 / 行动执行。
- 关系和物品候选预过滤只提供不会漏掉原版可能结果的候选上界,最终仍由原版逻辑确认。
- target matcher 缓存只对白名单内、依赖版本号可验证的判断生效;无法证明安全时直接走原版路径。
- NPC 主目标 planning 使用冻结快照;主目标 ApplyAll 串行记录 delta;副目标 planning 前局部发布更新后的快照。
- 缓存异常、失效或版本不匹配时会尽量回退原版逻辑。
- 可选降低未受保护远区 NPC 的主/副目标月行动点增长,默认关闭。
- 原版每月各增长 40,上限 60;配置项可削减 0-20,默认 10。
- 太吾、队友、直接关系角色、特殊/事件/旅行中角色、保护区域角色始终保留原版增长。
- 可选额外保护太吾村居民和门派成员。
- 可选关闭月中帧预算构建保护快照,用于排查地图移动或战斗时的体感卡顿;关闭后若过月时快照未就绪,会保守跳过行动点削减。
- 当前后期测试样本中过月计算耗时通常可降至原版的 50%-25% 左右,热点越集中在密闻和 NPC planning,收益越明显。
- 主要缓存命中率通常保持在 90% 以上,部分高频目标索引、matcher 和 planning graph 缓存可突破 99%。
- 密闻数量越多,密闻热路径替换收益越明显;后期样本中密闻代谢曾从约 3.5s 降至数十毫秒级。
- NPC 行动规划优化可显著减少 CharacterActionPlanning 中的重复区域扫描、关系/物品候选过滤、target matcher 判断和初次规划图扫描。
- 最新 260628 结构将主/副目标之间的快照更新改为 delta 局部发布,避免副目标 planning 前重复全量重建。
- 存档 IO 优化收益取决于硬盘、存档体积、复制块档位和是否取消压缩。
- 若当前存档瓶颈主要来自 NPC 行动执行、组织更新、事件清理或其它 mod,收益会相对有限。
- 删除npc时频繁进行sql提交造成的性能缺陷
- 可选开启过月诊断日志,输出到 Logs/GameData_*.log。
- 日志会包含 UpdateInformation 密闻细分、CharacterActionPlanning 相关耗时、NPC 行动规划缓存命中情况、delta 局部发布情况、planning graph cache 命中情况、SaveWorld 写盘细分、各 Domain.OnSaveWorld 耗时、working.db 复制块大小和压缩收尾耗时。
- 测试时建议开启;正常游玩建议关闭。
使用 Harmony Patch,可能与修改密闻月结、NPC 行动规划、NPC 月行动点或相同存档写入方法的 mod 冲突。
———————————————————————————————————
根据当前代码路径复核,月中帧预算计算只服务于“远区 NPC 行动点削减”的保护快照,不参与密闻优化、NPC planning 热路径缓存和存档 IO 优化。
该帧预算任务本身已有低预算限制,并且不会在过月、保存或战斗中继续推进;从代码结构上看,它不应成为地图移动或战斗卡顿的主要来源。
考虑到不同机器、存档和 Mod 组合下仍可能出现体感差异,本次新增“月中帧预算构建保护快照”开关。关闭后,普通游玩帧中将完全停止推进该保护快照,方便用户自行排查或规避相关体感问题。
此开关只影响可选非等价项“远区 NPC 行动点削减”的保护快照构建;不会关闭密闻反查表、NPC 行动规划缓存、存档 IO 优化,也不会改变原版过月结算屏障。
Revisions:
Old revisions of this mod are available below. Click the link to download.