
剥皮崩溃修复
修复了《巫师3》次世代版(DX12)中切换角色服装或外观(例如在照片模式中)时导致的游戏崩溃问题,该问题在使用了角色模组和皮肤模组时最为常见。仅在内存中修补线程错误;不更改任何游戏文件。可通过ASI加载器或ReShade运行。开源。
查看大图[size=5][b]W3 蒙皮崩溃修复[/b][/size]
[b]阻止游戏在切换角色服装或外观时崩溃[/b](例如在拍照模式中),适用于《巫师 3》次世代版(DX12)。如果你使用了[b]模组角色[/b]或[b]皮肤模组[/b](例如 RealisticHumanSkinV2),此修复尤为重要。
如果你的模组加载顺序正确,但在上述情况下游戏仍然崩溃,这很可能就是原因,而此模组可以修复它。它可独立运行:无需设置,也无需配置。
它仅在游戏运行时修改游戏。[b]不会修改任何游戏文件[/b],你随时可以通过删除文件来移除它。
[b]开源:[/b]完整源代码作为可选下载项(“Source code”)提供,你可以审阅或自行修改。
[size=4][b]安装[/b][/size]
[b]需要:[/b]《巫师 3》版本 [b]5.0.16.41566[/b],DX12([font=Courier New]bin\x64_dx12[/font])。已在 GOG 上测试。
[b]选项 1 - ASI 版本(主文件,推荐)[/b]
[list=1]
[]如果你还没有 ASI 加载器,请在 [font=Courier New]<game>\bin\x64_dx12\[/font] 中安装一个,例如 Ultimate ASI Loader(x64),保存为 [font=Courier New]dinput8.dll[/font]。[/]
[]将 [font=Courier New]W3SkinningCrashFix.asi[/font] 复制到 [font=Courier New]The Witcher 3 Wild Hunt\bin\x64_dx12\[/font]。[/]
[/list][b]选项 2 - ReShade 插件版本(可选文件)[/b]
[list=1]
[]你需要支持插件的 ReShade。[/]
[]将 [font=Courier New]W3SkinningCrashFix.addon64[/font] 复制到 [font=Courier New]The Witcher 3 Wild Hunt\bin\x64_dx12\[/font]。[/]
[/list]仅使用两者之一。使用 Vortex 时,你可以将任一 zip 作为普通模组安装。
[b]检查是否生效:[/b]启动游戏并加载存档,然后打开 [font=Courier New]bin\x64_dx12\W3SkinningCrashFix.log[/font]。它应包含一行以“ACTIVE:”开头的文本。
[b]卸载:[/b]删除 .asi 或 .addon64 文件。
[b]兼容:[/b]ReShade、RenoDX、DLSS 和帧生成模组、皮肤模组、身体和服装替换模组,以及 W3CrashFix(它修复的是另一种崩溃,因此可以同时使用)。
[b]仍然崩溃?[/b]请在评论中发布 [font=Courier New]W3SkinningCrashFix.log[/font] 和 [font=Courier New]W3SkinningCrashFix.previous.log[/font],如果你有崩溃地址也请一并提供。如果日志显示“FIX DISABLED”,说明你的游戏版本不同,未做任何修改。
[line]
[size=5][b]给好奇者的详情[/b][/size]
[size=4][b]崩溃的原因是什么?[/b][/size]
典型的崩溃地址(witcher3.exe):[font=Courier New]+0x2354F7A[/font]、[font=Courier New]+0x2354F80[/font]、[font=Courier New]+0x24C2E85[/font],或从 [font=Courier New]+0x2262ADF[/font] 调用的未知内存崩溃。
每个蒙皮角色网格都将其蒙皮数据(使网格跟随骨骼的数据)保存在一个共享对象中。游戏代码中有五处会释放并重建该对象,绘制代码会读取它,而这一切都没有任何锁定。当外观快速切换时,两个线程可能同时访问同一角色:一个线程释放数据,而另一个线程仍在使用它。游戏随即崩溃。
原版角色很少触发此问题。模组角色触发频率高得多,因为它们的网格通常具有不同的骨骼数量,导致游戏不断重建蒙皮数据。[b]原因不是模组优先级,模组本身也没有损坏。[/b]
[size=4][b]修复做了什么[/b][/size]
[list]
[]为每个角色添加一个锁。所有读取或释放蒙皮数据的游戏代码都必须获取该锁,因此数据在使用期间无法被释放。[/]
[]保留空值检查和崩溃防护作为额外安全保障。[/]
[]绝不会冻结游戏。如果锁在 100 毫秒内未释放,游戏将按未安装修复时的方式继续运行,并记录到日志中。[/]
[]检查每个修补点的确切字节。如果你的游戏构建版本不同,它会自行禁用并且不修补任何内容。[/]
[/list]
[b]结果:[/b]按住方向键尽可能快地循环服装,在未安装修复时游戏会在 10-60 秒内崩溃。安装修复后没有发生崩溃,包括在启用 RealisticHumanSkinV2 以及模组版希里和叶奈法的情况下。每次会话记录了约 2,000 次被锁阻止的冲突,没有锁超时,也没有可测量的性能损失。
[size=4][b]读取日志[/b][/size]
每 30 秒会添加一行状态信息,例如:[font=Courier New]locks 534122, waited 184, lock timeouts 0, nested skips 0, crashes prevented 0[/font]。“waited”统计的是如果没有修复则会构成崩溃风险的冲突次数。上一次会话的日志保留为 [font=Courier New]W3SkinningCrashFix.previous.log[/font]。
[size=4][b]致谢与许可[/b][/size]
[b]此模组由 Claude 创建[/b],Claude 是 Anthropic 开发的人工智能模型。Claude 分析了崩溃转储,发现了游戏代码中的错误并编写了修复程序。我报告了崩溃、运行了测试并上传了它。
此修复属于[b]公有领域[/b](The Unlicense)。你可以使用、修改、重新上传或与其他模组捆绑,无需征得许可或注明出处。
源代码位于可选的“Source code”下载项中。要构建它,你只需要 Zig 的 C 编译器(无需 Visual Studio):[font=Courier New]zig cc -target x86_64-windows-gnu -O2 -s -shared -o W3SkinningCrashFix.dll w3skinningcrashfix.c -lkernel32[/font],然后将结果重命名为 .asi 或 .addon64。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。