[天幕心帷]过月性能优化

If you liked this item, please rate it up on Steam Workshop page.

Author: man!

Last revision: 5 Jul at 08:48 UTC (3)

File size: 549.1 KB

On Steam Workshop

Description:
过月性能优化

当前版本重点是为原后端建立只存在于内存中的高速缓存结构:在不延迟世界结算、不跳过原版逻辑、不写入自定义存档数据的前提下,bypass 原版过月中的低效扫描路径,并重写为基于本 Mod 高速缓存表的高效反向查询 / 候选上界查询。

这些缓存不写盘,退出世界或切档后会释放;诊断样本中主要缓存命中率普遍保持在 90% 以上,部分目标索引、matcher 和静态 planning graph 缓存命中率可突破 99%。

对密闻数量多、NPC 行动规划重、存档体积大的后期档,当前测试样本中过月计算耗时通常可压缩到原版的 50%-15% 左右,也就是约 2-8 倍的过月计算加速;具体收益取决于存档热点分布、硬盘性能和其它 Mod。

本 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,收益会相对有限。

    原版bug修复
  • 删除npc时频繁进行sql提交造成的性能缺陷

    诊断日志
  • 可选开启过月诊断日志,输出到 Logs/GameData_*.log。
  • 日志会包含 UpdateInformation 密闻细分、CharacterActionPlanning 相关耗时、NPC 行动规划缓存命中情况、delta 局部发布情况、planning graph cache 命中情况、SaveWorld 写盘细分、各 Domain.OnSaveWorld 耗时、working.db 复制块大小和压缩收尾耗时。
  • 测试时建议开启;正常游玩建议关闭。

使用 Harmony Patch,可能与修改密闻月结、NPC 行动规划、NPC 月行动点或相同存档写入方法的 mod 冲突。

———————————————————————————————————

优化更新#260705

根据当前代码路径复核,月中帧预算计算只服务于“远区 NPC 行动点削减”的保护快照,不参与密闻优化、NPC planning 热路径缓存和存档 IO 优化。

该帧预算任务本身已有低预算限制,并且不会在过月、保存或战斗中继续推进;从代码结构上看,它不应成为地图移动或战斗卡顿的主要来源。

考虑到不同机器、存档和 Mod 组合下仍可能出现体感差异,本次新增“月中帧预算构建保护快照”开关。关闭后,普通游玩帧中将完全停止推进该保护快照,方便用户自行排查或规避相关体感问题。

此开关只影响可选非等价项“远区 NPC 行动点削减”的保护快照构建;不会关闭密闻反查表、NPC 行动规划缓存、存档 IO 优化,也不会改变原版过月结算屏障。

Download
Revisions:

Old revisions of this mod are available below. Click the link to download.