经常看到有人纠结猎人线开局宠物选狼还是猫头鹰,这个选项是游戏中少数会永久影响后续剧情的,确实可能会让人比较纠结......
——前提是你不知道如何修改存档。
言归正传,不像1代,八方旅人2目前是没有可用的存档修改器的,我只找到一个似乎早早停更的版本,试了一下导入存档程序会直接崩溃。
但是,经过对存档文件的简单逆向分析,发现这就是标准的UE4存档文件,存档数据也没有什么加密,那么就很好解决了。根据我的经验,存档大概率是通过一个特定的变量来存储这种剧情分支状态的,那么我们只需要找出决定猎人搭档的变量是什么就可以了。
以下为研究过程和原理讲解,不想看可以跳过:
1.首先在触发猎人剧情前存档(假设为存档1),然后在剧情中选择猫头鹰,然后在下一个最近的存档点存档(假设为存档2)。
2.读取存档1,然后再过一次猎人剧情并选择狼,在和存档2同样的位置存一个存档3,在同样的位置存档是为了尽可能排除无关变量对我们的干扰。
3.使用Beyond Compare比较两份存档文件的十六进制数据,一一排查差异处。首先开头的一大段大概率是游戏时间或存档创建时间之类,可以快速跳过。接着我发现剩下的一些有差异的变量里面值得关注的还有几个未命名的Flag和State变量。
通常来说,“Flag”这种变量在程序中是用于存储的二元状态的,也就是要么是“True”(1),要么是“False”(0),而宠物类型通常不太会用布尔值来存储(尽管宠物只有两个,但实际上应该是有三种状态:没有宠物、狼、猫头鹰)。所以重点看到带有”State“字眼的变量,然后我们只要将存档3中的这些变量一一修改为和存档2一样,然后在游戏中读取存档查看搭档变了没就可以了,于是——
于是我改了大半天发现和这些变量全都没关系......
最后在几乎把脸贴在屏幕上的情况下我终于找到了之前漏掉的这个变量......
“HunterPartner”
命名简洁易懂,可惜我的视力还有待提高。经测试这个变量为1时搭档是猫头鹰,为2时搭档是狼,剧情对话和战斗中的搭档都是直接由这个变量决定的(但我没试过后期boss战的时候会不会变,理论上也会)
具体的操作教程我会放在二楼(因为里面有链接怕被吞了)。
——前提是你不知道如何修改存档。

言归正传,不像1代,八方旅人2目前是没有可用的存档修改器的,我只找到一个似乎早早停更的版本,试了一下导入存档程序会直接崩溃。
但是,经过对存档文件的简单逆向分析,发现这就是标准的UE4存档文件,存档数据也没有什么加密,那么就很好解决了。根据我的经验,存档大概率是通过一个特定的变量来存储这种剧情分支状态的,那么我们只需要找出决定猎人搭档的变量是什么就可以了。
以下为研究过程和原理讲解,不想看可以跳过:
1.首先在触发猎人剧情前存档(假设为存档1),然后在剧情中选择猫头鹰,然后在下一个最近的存档点存档(假设为存档2)。
2.读取存档1,然后再过一次猎人剧情并选择狼,在和存档2同样的位置存一个存档3,在同样的位置存档是为了尽可能排除无关变量对我们的干扰。
3.使用Beyond Compare比较两份存档文件的十六进制数据,一一排查差异处。首先开头的一大段大概率是游戏时间或存档创建时间之类,可以快速跳过。接着我发现剩下的一些有差异的变量里面值得关注的还有几个未命名的Flag和State变量。
通常来说,“Flag”这种变量在程序中是用于存储的二元状态的,也就是要么是“True”(1),要么是“False”(0),而宠物类型通常不太会用布尔值来存储(尽管宠物只有两个,但实际上应该是有三种状态:没有宠物、狼、猫头鹰)。所以重点看到带有”State“字眼的变量,然后我们只要将存档3中的这些变量一一修改为和存档2一样,然后在游戏中读取存档查看搭档变了没就可以了,于是——
于是我改了大半天发现和这些变量全都没关系......

最后在几乎把脸贴在屏幕上的情况下我终于找到了之前漏掉的这个变量......
“HunterPartner”
命名简洁易懂,可惜我的视力还有待提高。经测试这个变量为1时搭档是猫头鹰,为2时搭档是狼,剧情对话和战斗中的搭档都是直接由这个变量决定的(但我没试过后期boss战的时候会不会变,理论上也会)
具体的操作教程我会放在二楼(因为里面有链接怕被吞了)。