本文仅总结操作思路,具体的Replay字段解析和编码表请转https://rinkastone.com/2022/01/10/archives/109查看。
本技术目前还很不成熟,下文内容不能保证准确性,仅供参考,且随时有可能修正。
关于Replay编辑技术
Replay文件记录了replay的模式、场景、BGM,双方玩家角色、配色、卡组、按键操作等信息。通过对文件特定部分进行编辑,可以对上述信息进行修改。通过创建一定的按键操作序列,可以让replay中的双方角色打出玩家需要的操作。配合对卡组,天气等的适应性修改,我们可以凭空创造能够反复播放的罗曼连/相杀CMV/对抗replay。
对比传统的Practice模式打连段,rep编辑在两个方面更有优势。一是无需玩家手动操作,编辑好指令后全部由则执行,从而绕开了玩家操作能力的限制。编辑指令可以做到单帧级别的控制,不管操作难度多高的连段,只要理论可行且能写成指令,都可以利用rep编辑技术实现。二是rep保存后可用原版则播放,绕开了Practice模式无法保存,只能通过录制视频来传播的问题。
rep编辑技术存在一些内生的问题。一是能通过键位按出的操作相对有限,无法实现像Practice模式一样的完美锁天气、光速回灵等效果。二是目前的学习门槛和rep编写难度较高,基本上就是对着一堆字节码改来改去,不够直观。如果后续开发出rep编写脚本,可能此项问题会得到缓解。目前来说,rep编辑技术仅适用于编写超高难度连段/loop连段/涉及对战双方的操作演示,4幽明1未来连段是前两项的一个好范例。
Replay编辑的实际问题
Replay模式选择
Replay的模式建议选择vs player。
vs com模式下,键位保存遵循一套特殊的逻辑,只记录玩家的按键数据而不记录ai的按键数据。rep播放时,ai会根据玩家当前状态和随机数种子实时生成下一步行动,因此无法通过修改rep的方式把对手按住不动。不可选择该模式。
vs network模式(包括1p模式和2p模式)下,F1至F7功能键无法正常使用,这会导致失去主动控制天气、卡牌和锁血的能力。不推荐使用该模式。
鉴于replay模式的决定方式还没完全解析完毕,建议直接开启一局vs player游戏,保存rep并退出,然后将此rep的头部复制到你的目标rep里,以保证模式正确。
卡组的处理
卡片与卡片编码、人物编码的对照关系见:https://hisouten.koumakan.jp/wiki/Deck_Extracting
某些连段或CMV对卡片的出现顺序会有要求。卡片的出现顺序由随机数种子唯一决定,种子相同的情况下卡牌出现顺序也相同,而随机数种子在rep文件里存在。使用20张不同卡牌的卡组开启一把游戏,记录卡牌的出现顺序然后存rep,把此rep的随机数种子搬运到目标rep,这样就拥有确定的卡牌顺序了。随后将需要在特定位置出现的卡牌改到卡组里即可。
暂时没有研究过晴岚的情况,对卡片顺序有需求且对晴岚天气无需求的情况下,尽量避开晴岚天气。
天气的处理
一般来说一个连段只需要一种天气。不管初始天气是什么,模拟F5(激活下一个天气)和F6(激活上一个天气)按键进行调整就可以。如果需要连段中调整天气,中途插入这两个按键也问题不大。
初始位置的处理
比较棘手的问题。与Practice模式不同,replay中无法直接调整角色的位置,只能通过左右移动将角色定位在某个位置,而左右移动/44/66的移动距离又与角色的走路速度/4466长度密切相关,导致输入指令的长度需要变化。
理想的做法是对每个角色的4466长度和移动速度建表,以角色初始位置/左右版边为基点进行移动,计算出移动时间和指令长度,理论上可以做到像素级定位。44/66/普通移动速度表可能在某些非想天则wiki类网站存在,如果找到的话可以更新一下。
按键操作的处理
本部分主要参考rep解析文档中的按键取值表。这是rep编辑中最主要的部分,但在目前无工具的情况下,只能拿起hex编辑器对着字节码开干。
本部分有较大的辅助工具开发空间。因为本人懒狗且对非想天则丧失兴趣因此不会自己开发,如果有人有兴趣开发可以联系我,知无不言。