Replay Mod 合并时间轴
最近因为某种原因,我需要把两条时间轴缝合成一条,但关键帧有点多,一个一个重设太麻烦了,可以编辑 timelines.json 把关键帧信息一键复制过去,会简单不少。水一期专栏把成果记录下来,这样以后就不会忘了,那么正文正式开始。

一. 认识timelines.json
所有时间轴关键帧的信息都保存在 timelines.json 里,所以第一步就是把这个文件弄出来。打开 mc 根目录的 replay_recordings 文件夹,选中 xxx.mcpr,xxx 是时间轴所在录像的名称,一般默认名称是录制日期。后缀mcpr改成zip,解压即可得到 timelines.json,修改前最好先把原文件复制一份,便于修改失败后回档。用文本编辑器打开文件,可以看到一堆文字:

这个文件没有分段空行,字全都挤在一起,有点难以辨认,但还是有规律的。简单来说,本文件的数据结构如下:

按照这个结构,通过搜索关键字 keyframes/segments 可以快速把各个部分拆分出来,再稍微处理一下,看起来就清晰多了。

以下是游戏内两条时间轴的截图:

目前我只需要把 test1 和 test2 合并起来,所以 test3 以及其他时间轴就先不管了,可以看出文件里的信息和游戏内显示的信息完美匹配,说明我们找对地方了,那接下来就开始合并。
二. 移动时间轴
我的目标是把 B 轴连接在 A 轴的后面,如果不加任何处理直接把b轴关键帧复制过去,那么两者会直接重叠,关键帧全部混在一起了,这并不是我想要的结果。

所以要先把时间轴b往后移动,有两种方法。一是可以在游戏内手动把每个关键帧拖拽到后面,或双击关键帧编辑时间轴系数。二是在 json 里修改关键帧的 "time" 信息,统一加上一个数字,就相当于整体往后移动了,两个方法效果是一样的,哪个方便就用哪个。以下是各自得出的成果:


三. 合并时间轴
终于来到最后一步了,选中 B 轴的所有关键帧,复制黏贴到 A 轴里,再往 segments 里添加正确数量的0即可,得到 C 轴,如图:


最后记得把 json 内所有空行都删掉,恢复到最初全部混在一起的状态。保存文件,替换掉旧文档,打成 zip 压缩包,后缀改成 mcpr 后放回原处,进游戏测试是否能用。如果闪退并且 replay mod 报错,说明文档有错误,仔细检查改正就行了。
以上就是合并时间轴的全部内容。同理也可以使用这个方法来把一个时间轴拆分成多个,或者进行其他修改操作。

完