如果你对每次启动游戏时设置都会重置为默认值感到困扰,我有一个解决办法! 你再也不需要忍受这种情况了。 正如你可能已经知道的,在Steam版《灵武战记PC》中存在一个bug,导致游戏设置有时会在启动时自行重置为默认值。 网上流传着几种解决这个问题的方法,但没有一种对我有效,所以我自己制作了一个修复程序。

试试看,说不定对你也有用! Durante带来的此次更新修复了这个问题以及其他诸多问题。 前言 由于《灵武战记PC版》没有可用的源代码,我不得不使用调试器并在游戏可执行文件中摸索,以找到解决此问题的方法。 因此,此修复需要对游戏的可执行文件进行补丁操作,使其能正常工作——即加载已保存的设置,而不会重置为默认值。 你需要找到包含主可执行文件“Phantom Brave PC”的文件夹。在Steam库中右键点击游戏,选择“属性”,再选择“本地文件”选项卡,点击“浏览本地文件”按钮。考虑到这一点,剩下的就是选择你想要使用的两种游戏补丁安装方式中的一种。为什么会有两种补丁安装方式呢?它们的结果是相同的,但在应用时所需的信任程度不同。第一种只需下载已打好补丁的【Phantom Brave PC.exe】文件,并替换该文件夹中现有的同名文件。第二种适用于那些不信任来自互联网的随机可执行文件的用户(这是正确的做法)。快速简便的游戏补丁安装方式:从这里下载已打好补丁的版本。将其放入你的《灵武战记》PC文件夹中,替换现有文件。但请注意,绝不要信任从互联网上获取的任何可执行文件。我建议仅在手动方法因某些原因无法奏效时才使用此方法。手动补丁方法:对于手动方法,我们需要两样东西。首先是一个我用xdelta制作的补丁文件,xdelta是一款用于创建和应用二进制补丁的免费开源软件。其次是一款能将此xdelta补丁应用到《灵武战记》PC可执行文件的软件。有多种工具可以实现此功能,以下仅提供我已尝试并确认可用的官方工具和带有易用图形界面的非官方版本: xdelta(控制台应用程序) Delta Patcher(图形界面) 你需要选择其中之一(或者如果你不喜欢这两个,也可以选择其他任何xdelta补丁工具)。 将下载的压缩包解压到《灵武战记PC》文件夹中,并将下载的“patch.xdelta”文件也移动到该文件夹。 如果你选择Delta Patcher: 启动“DeltaPatcherLite.exe”,选择原始的“Phantom Brave PC.exe”和“patch.xdelta”文件,然后点击“应用补丁”。 现在你的游戏已打补丁,设置在启动时不应再重置为默认值。如果你选择xdelta,请在《灵武战记》PC版文件夹中打开命令提示符。操作方法:在地址栏中输入“cmd”(如下图所示),然后按回车键。

然后,在该命令提示符中执行以下两条命令(你可以在终端窗口中右键并选择“粘贴”来粘贴它们)以应用补丁: move "Phantom Brave PC.exe" "Phantom Brave PC_orig.exe" xdelta3-3.0.11-x86_64.exe decode -s "Phantom Brave PC_orig.exe" patch.xdelta "Phantom Brave PC.exe" 最后一条命令假设你已下载了xdelta的64位版本——如果没有,请将可执行文件名更改为你已解压的版本。 现在你的游戏已打补丁,并且你的设置在启动时不应再重置为默认值。 技术细节 你可以跳过此部分——应用补丁不需要这部分内容。不过,如果你对这个补丁的内部工作原理感到好奇,那么请继续阅读,但请注意,这需要一定程度的编程知识。 问题 如果我们通过调试器查看从“game.cfg”文件(游戏存储其设置的文件)加载游戏设置保存值的函数,会看到以下指令:


前两行代码用于检查“game.cfg”文件是否存在。 其余指令会将加载的配置文件中的不同数值与硬编码常量进行比较,若两者相等,则跳转到代码的另一区域,从而跳过将游戏设置实际加载到内存中的所有步骤。 之后,游戏会检查这些已加载的数值是否正确,但由于加载步骤已被跳过,这些数值显然是不正确的,因此游戏会将它们替换为默认值。 这就是问题所在。 这些硬编码常量对于这些选项而言是完全合理的数值。例如,前4项检查会将不同的音量滑块与它们的最大值10进行比较。如果你的某个音量滑块处于最大状态,那么跳跃指令会被触发,游戏不会加载你的设置,而是使用默认设置。修复方法:我们面临以下情况:


那么,我们该怎么做才能让游戏始终从game.cfg加载设置呢?也就是说,要执行绿色代码路径,而非红色路径?我们需要改变所有这些检查的工作方式,让它们再也不会触发。因此,我替换了这些检查中的常量,因为这是我能想到的最小且侵入性最低的改动。由于这个新值对任何选项来说都是无效的,并且永远不会出现在game.cfg文件中,所以将设置重置为默认值的代码将永远不会运行。你可以通过使用任何二进制差异软件比较原始可执行文件和修补后的可执行文件来亲自查看此更改。

如你所见,所有这些检查中唯一的变化是硬编码值。




换一换 




















