
Igni卡顿修复
修复了敌人被伊格尼灼烧时出现的掉帧问题,装备剑时最为严重。游戏在每次灼烧结算时都会重新计算杰洛特的全部战斗属性,随后又将结果丢弃。本次改动跳过了这项无用计算,使灼烧开销降低约8倍。伤害数值保持不变,已验证。
查看大图[center][size=6][b][color=#e6c655]Igni Lag Fix[/color][/b][/size][/center]
[left][/left]
[left]你是否曾经对着一大群敌人施放 Igni,然后发现游戏卡顿了?问题不在于粒子效果或光照(尽管它们确实有影响),而在于伤害计算。[/left]
[left]
在我的系统上(Ultra 画质、光线追踪、无帧生成),对一群 15 只 drowners 使用 Igni:
[list]
[]施放前(无敌人):约 80 FPS[/]
[]不使用模组:约 58 FPS[/]
[]使用模组:约 72 FPS[/]
[/list](数值在敌人正在燃烧时采集。)[/left]
[left]
显然这是一个极端情况;在大多数 Igni 的使用场景中,提升会更小。[/left]
[left]
[b]问题出在哪里?[/b]
每一次燃烧跳伤,游戏都会重建 Geralt 的完整战斗属性(包括两把剑),但之后从未将这些属性用于你自己的伤害,因此燃烧的敌群每秒会造成数百次无用的重建。[/left]
[left]
[b]修复方法是什么?[/b]
该模组只在你自己的伤害计算期间跳过重建,而那里的结果从未被使用。燃烧伤害计算的开销降低到约 1/8,并且伤害保持完全不变。[/left]
[left]
我已通过伤害日志验证,使用和不使用该模组时伤害完全相同。[/left]
[left]
[b][color=#ff0000]我并不声称这是一个奇迹模组,但根据我在自己系统上的测试,当敌人燃烧时,这大幅改善了性能。你的系统可能有所不同。[/color][/b][/left]
[left][/left]
[quote][b][color=#ff9900]AI 免责声明:[/color][/b] 本模组是在 AI 的帮助下制作的。代码、诊断、描述和页面图片均在 AI 协助下创建,然后由我安装、测试和指导。按原样分享给任何觉得它有用的人。[/quote]
[size=5][b][color=#ff9900]功能说明[/color][/b][/size]
修复敌人因 Igni 燃烧时的帧数下降,装备剑时(即使收剑)最为严重。
[list]
[][b][color=#e6c655]原因:[/color][/b] 每次游戏计算伤害时,都会重建 Geralt 的完整攻击属性(角色界面中两把剑的数值),但只有在友方 NPC 作为攻击者时才会使用它们。燃烧每帧都会对每个燃烧的敌人造成伤害,因此燃烧的敌群每秒会触发数百次这种无用的重建。[/]
[][b][color=#e6c655]修复:[/color][/b] 仅当游戏计算你造成的伤害时跳过重建,而这些结果本来就会被丢弃。[/]
[][b][color=#e6c655]游戏内实测:[/color][/b] 装备剑时,每次燃烧跳伤的脚本时间从 1.63 ms 降至 0.21 ms(约减少到 1/8);未装备剑时,从 0.68 ms 降至 0.22 ms,测试对象为 16-18 只燃烧的 drowners。[/]
[][b][color=#e6c655]不仅限于 Igni:[/color][/b] 对其他燃烧效果(炸弹、火焰在敌人之间蔓延)也有帮助,并且使你造成的每次命中都略微更省性能。[/]
[/list]
[size=5][b][color=#ff9900]伤害不变[/color][/b][/size]
已通过逐次命中伤害日志验证,在同一存档上使用和不使用模组运行:所有完全可比较的数值都相同(每秒燃烧伤害、Igni 直接命中、火焰蔓延)。剑击的伤害由游戏在每次挥砍时随机化,并在该范围内匹配。
角色界面、NPC 伤害及其他一切均与之前相同。
[size=5][b][color=#ff9900]安装[/color][/b][/size]
为 [b]The Witcher 3 Remaster 5.0[/b] 制作。
将压缩包中的 [b]Mods[/b] 文件夹复制到你的游戏文件夹中。无需菜单、设置、框架或其他模组。
如果你的安装使用了脚本合并,请重新生成受影响的合并。
[size=5][b][color=#ff9900]你可以尝试的有趣测试[/color][/b][/size]
在未安装该模组的情况下,你可以通过以下方式在原版游戏中看到有问题的伤害计算:
[list]
[]在未装备剑的情况下,对一大群敌人施放 Igni[/]
[]再次对一群敌人施放 Igni,但装备剑(无需拔出,只需装备)[/]
[/list]未装备剑的测试在敌人燃烧时应该具有更高的 FPS。
[size=5][b][color=#ff9900]兼容性[/color][/b][/size]
[list]
[]一个使用注解(@wrapMethod / @addMethod / @addField)的小型脚本,而非替换方法。[/]
[]包装了 [i]CalculateDamage[/i] 和 [i]GetOffenseStatsList[/i];可与其他包装它们的模组一起工作。[/]
[]不会在你的存档中存储任何内容。[/]
[]如果某个模组在你自己的伤害计算过程中读取 Geralt 角色界面的攻击属性,那么在该时刻会看到空属性。基础游戏从不会这样做。[/]
[/list]
[size=5][b][color=#ff9900]卸载[/color][/b][/size]
删除 [i]Mods\modIgniLagFix[/i]。如有需要,重新生成受影响的合并。无需清理其他内容。
[size=5][b][color=#ff9900]致谢[/color][/b][/size]
在 Claude (Anthropic) 和 ChatGPT (OpenAI) 的帮助下为个人使用而制作。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。