
整个工程约耗时两周,尝试次数10000+。
差不多在TAS mod发布之后就立即开始了。一开始我想学习其他游戏的TAS方法,通过逐步拼接各个部分的最优操作完成。然而事实证明我还是太菜,耗费大约4天磕磕绊绊录完第一小节,比变木的记录慢了500多ms。这个方法使用的前提是录制者得有一定的操作,然而我没有。
然后就是现在我所用的方法,通过随机迭代来寻找最优解。首先录制出来一个可以过关的版本,然后通过不断给录制的按键操作添加一个小扰动,观察前后的速度差距,如果扰动后能够更快通关就更新当前的最优解。
但是一次能够优化的区间有限,也就是2-5秒左右的按键操作,再长的话添加扰动后还能通关的概率无限接近0。所以我需要一个评价准则,在球走到任意位置时均能够判断当前解是否更优,而不是依据通关时间判断。因此我请变木大佬帮忙录制了一个第一关的TAS(十分感谢@变形的木球 !),通关时间为1:19.477。虽然没有到破纪录的水准,但路线基本接近,作为参考足够了。
有了变木大佬的通关路径,通过在这条路径上每隔0.3秒左右取一个锚点,然后衡量球第一次到达每个锚点的时间,这样就有了一个简略的评价准则。存在误差是肯定的,但已足够进行迭代优化了。于是就有了最终版的优化方法:
1. 录制出一个可以通关的版本。
2. 手动调整其中的部分参数,这样可以达到某些玩家无法完成的操作,如1帧内完成左右按键切换,1帧内完成摄像机转动。
3. 以2到5秒为一个区间,通过随机迭代寻找此区间的最优解。相邻区间需要一定的重合部分,以尽量得到全局的最优解。每个区间尝试300次左右,直到无法找到更优解为止。
最终每小节的耗时如下(数据来自Segment模组):
第一小节:27.167s。这个小节是耗时最多的小节,因为优化速度比较快,开头部分1分钟可以尝试8次左右,靠后部分1分钟也能尝试4次,因此效果也最明显。
第二小节:15.337s。这是耗时第二的小节,最后的一个大跳优化难度很高,耗费了足有一整天的时间来尝试,最终也没有找到比变木记录视频中更优的解。
第三小节:9.633s。最简单的一个小节,因为很短。一个下午搞定。
第四小节:24.587s。连续干了块两周相同的事情,只想赶紧搞定发布了。只是手动修改了一下,没有做迭代优化过程,和变木的个人最佳还有差距。
简单起见,TAS中的所有delta time均设为了1/240。因此原速播放可以限制帧数为240。
如何播放:在设置中启用TAS mod后,选关界面右下角会出现一个TAS按钮,点击可查看当前所有的录像,选择一个载入,然后进入对应的关卡即可自动播放。注意仅对开启游戏后第一个进入的关卡有效,且成功率不是100%。如果半路死球了可以多尝试几次。
TAS录像已经包含在最新的BML中:1NknemKAUmKElAj3vLDTjOQ 密码s7kf
或者在Github搜索BallanceModLoader下载。