ballance吧 关注:9,730贴子:401,464
  • 8回复贴,共1

【BML】Ballance TAS技术的一小步

只看楼主收藏回复

TAS简介:


TAS即外部工具辅助竞速(Tool Assisted Speedrun),通常指由程序提供游戏控制输入而非玩家操作,来达到最快通关的竞速模式。


一直以来,Ballance都被认为是不可能实现TAS的,由于其物理引擎的特殊性,即使是提供每一帧完全相同的键盘操作输入,也会造成玩家球不同的运动轨迹。同时Ballance又是对操作精度要求很高的游戏,这样的误差是不能接受的。


通过对Ballance物理引擎的部分逆向,了解到相同输入会造成不同结果的原因在于其物理运算与游戏的帧速率相关,即游戏渲染相邻两帧的间隔时间。间隔时间受各种因素影响,如帧率设置、计算机性能、运行的其他程序等等,在非人工干预的情况下是不可能两次完全一致的。这是TAS首先要解决的一个问题。


又因为计算机是很诚实的,只要有相同的初始参数,相同的迭代过程,一个算法不管多少次运行都会输出完全相同的结果。保证间隔时间和控制输入相同就保证了相同的迭代过程,初始参数相同则需要每次进入关卡时重置Ballance物理引擎模块中的一些变量,这是TAS解决的第二个问题。


目前的问题:


问题完全解决了吗?没有,我们只是迈出了第一步。


由于没有Ballance物理模块的源代码,我业余的逆向技能点还无法了解其每个细节,当前的TAS功能还非常不完美,局限性很大:
* 只能录制重放一个关卡完整的通关过程,无法通过拼接来达到完美操作通关效果。
* 只对开启游戏后首次进入的关卡保证准确性,重开或退出后进入其他关卡均可能无法同步。
* 在大量球体物理碰撞发生的地方会发生偏差,如4-3和13-3处基本会100%偏离原有轨迹。其余的11个原版关卡已成功重放。
* 由于变球时球碎片产生具有随机性,启用TAS mod时禁用了球碎片生成。可能造成某些利用相关特性的自制图无法通关。


应用前景:


虽然无法通过拼接完成人类无法达到的完美操作,但对于记录的证明和证伪,TAS录像可以完美完成这一功能。由于两次游戏的帧间隔时间不可能完全一致,帧间隔时间就相当于一次记录的“指纹”,可以保证其唯一性,不可能通过借用他人的录像来伪造记录。而要证实一项记录,只要下载录像播放一遍即可。


使用方法:


下载新版的BML,其中自带TAS支持模组。默认处于关闭状态,使用需要在设置中开启并重启游戏。
如何录制:在设置中启用TAS并启用录制功能后,每次游戏都会自动录制,但仅在通关时结束录制并写入文件。退出关卡、重开关卡会直接停止录制。
如何播放:在设置中启用TAS后,选关界面右下角会出现一个TAS按钮,点击可查看当前所有的录像,选择一个载入,然后进入对应的关卡即可自动播放。




TAS mod仅录制8个键盘按键的操作,包括上下左右、shift、空格、Q、Esc。其中前6个按键会自动读取玩家的按键设置,后两个是固定键位。其余的键盘与鼠标操作均不会录制。


TAS功能已由我自己、@ballancebug@yunjuyihao 验证成功,下方有我录制的1-3关TAS录像和影子球录像,不想自己录制的话可以下载,看到播放过程中玩家球和影子球始终保持重合即成功。切记无论是录制还是播放都只能是开启游戏后首次进入的关卡,如果仍然失败可以尝试调整窗口模式或兼容性。


最后,整个TAS功能尚处于实验阶段,实用性不大,仅供娱乐。有任何建议欢迎提出。


BML+TAS mod下载:1NknemKAUmKElAj3vLDTjOQ s7kf
或者在Github搜索BallanceModLoader。
BML-x.x.xx.zip为BML本体+mod。
TAS_Records.zip为录像,下载后解压至Ballance\ModLoader\下。


IP属地:陕西1楼2021-04-04 16:21回复
    OHHHHHHH我吹爆!


    IP属地:四川2楼2021-04-04 18:07
    回复


      IP属地:四川来自Android客户端3楼2021-04-04 21:08
      回复
        太强了!


        IP属地:澳大利亚来自Android客户端4楼2021-04-06 08:22
        回复
          真的是太神了


          IP属地:河南来自Android客户端5楼2021-04-06 20:20
          回复
            这个tttttttttttttttttql!


            IP属地:北京来自Android客户端6楼2021-04-11 13:09
            回复
              不懂,但是感谢各位做出的贡献

              不断挑战极限的技术党,以及地图和工具制作者,是本吧保持活力的两大动力


              IP属地:山东来自Android客户端7楼2021-04-12 08:53
              回复
                b吧的一大步


                IP属地:天津8楼2021-04-16 19:33
                回复
                  这波真的ttttql,ballance又一个时代飞跃啊


                  IP属地:河南9楼2021-04-17 15:54
                  回复