我找到了MC迄今为止最困难的跑酷跳跃!!!

Description
特别声明:请勿尝试或指使他人尝试!

考虑到视频时长,一些细节会在简介补充:

跳跃说明:
这跳几乎是mc1.8理论上能找到的最困难的跳跃,其容错刚刚好落在了坐标数据64位浮点数的最后一位
由于玩家在跨越2^x的坐标时,会导致计算玩家碰撞箱的浮点数据丢失精度,在这种精度的跳跃下,玩家只需要卡1-2次的碰撞箱精度,就能大幅减少斜跑次数,而该跳光是长度就有300+格,所以该跳的坐标必须放置在512 - 1024之间才足够防止碰撞箱精度漏洞的发生

关于斜跑:
首先,在空中或地面时按住w+a比只按w快的原因大致如下:
在mc中,按下w时,游戏会产生一个0.98的向前向量
而按下a/d时,同样会产生一个0.98的向左/右向量
同时按下w+a/d,本来会合成一个0.98 * √2斜向45度的向量
mojang很明显觉得这太离谱了,所以在检测到最终值大于1时,会将其除以其向量长度变为单位向量
但是,他们忘了其实最开始只给了0.98的向量值,导致w+a/d仍然比只按w快了(1-0.98)/0.98≈2.04%的速度

然后,在起跳的瞬间按w起跳反而比w+a/d快的原因大致如下:
在起跳时,如果你正在疾跑,游戏会给你一个0.2的向前加速度,但这个加速度的方向是玩家视角正对着的前方,这就导致了,如果你按了w+a/d,视角朝45度,游戏给你的加速度也是朝45度的,这时玩家本来的速度与疾跑加成之和就远小于直线了(除非你的速度实在太快,让斜跑带来的2%加成足够无视起跳加速度的劣势,要达成这个速度至少单靠冰+顶头是远远做不到的)

斜跑的时间容错只有0.05秒,角度容错只有11.5度左右,对于普通人而言,随着使用次数的增加,时机和角度的偏差所带来的减速往往远大于斜跑的加速,因此这种操作通常只会在通过一些困难跑酷时使用,对于正常游玩几乎没有帮助

一些补充:
视频聊天栏的pb是由mpk mod显示的,在这里就是玩家常说的“容错”,意思是玩家在最优操作时,落地时玩家碰撞箱与方块边缘的距离,通常聊天栏的pb显示的是玩家当次操作差多少能才能到达方块,而在这里操作由宏演示,所以可以直接把聊天栏的pb看成容错
而pb为"-0"且站上去了的跳跃其实站进去的并不是真的0格,这是因为在跳跃途中玩家穿过了2^x坐标,导致碰撞箱变大了一个最小浮点单位,而mpk mod并没有把这点算进去,才导致了pb为-0。实际上,mc只有在检测到碰撞箱>方块坐标时才会触发碰撞,等于时会直接掉下去,所以真正的0pb并不存在。但pb到了浮点数最小单位时,其实和0容错也没什么差别了
mpk mod为目前圈内最常用的跑酷信息显示模组,视频中x,y,z,facing等信息都由mpk mod显示
下载链接:https://github.com/kurrycat2004/MpkMod

关于这期视频:
这期视频其实从半年前就开始准备了,可以说是目前制作周期最长的视频,最开始只是尝试了下数据拟合来逼近mc本身的浮点误差,直接从小数点后6位,升到了小数点后11-12位的精度,后来从pjx那里找到了mothball的部分源代码,花了一个月时间研究(猜谜(x)后才有了如今的推算结果,中途是真的九九八十一难,混乱的变量调用就不说了,光是这个浮点数,就整出了类如a+b+c≠a+c+b,(a+b)≠a+b之类的奇幻特性,中途有次把2个变量a+b合起来运算的好好的,结果代入了一个特殊值就炸了,当时花了两三天排查问题,最后还是重写时才发现这个逆天特性。另外,关于为什么不使用蓝冰有很多原因,例如高版本运动机制大变,主流技跑在1.8.9,宏与信息显示mod的支持问题等等,光是获取高版本的源代码就够我喝上一大壶的了,我实在没有这么多精力去解决这些一眼看不到头的东西,请见谅(
另外最困难的跳跃并不包括重复的无脑堆(例如百万连3墙,之前的无限斜跑等)

更多信息可以查看mc跑酷wiki:mcpk.miraheze.org/wiki/Main_Page/zh
部分运动代码参考:https://github.com/CyrenArkade/mothball/blob/main/cogs/movement/player.py

感谢@pjx1314  和@滑稽之神不是神  的协助

BGM:Supersonic - Rob Gasser

终于结束了...