关于基岩版我的世界距离过远就会出现bug 的修复建议(2)

https://mq.mbd.baidu.com/r/1mDd8qL7wiI?f=cp&rs=4025110209&ruk=UrCRAZlSmalQP350wGtVmw&u=cbe01bf15fe694a0
这个视频中阐述的是我的世界基岩版独有的距离 bug,由于百度的字数限制,导致我无法继续编辑,所以我将在 CSDN发布
(没有解包工具,分析处于黑盒状态,分析结果可能不准)我来说一下我对这个 bug理解.
JAVA发明时间是1995年,c++的发明时间是1979年,JAVA 版具有后发优势,可采用64位系统,变量的数位限制更精确,理论上来说还是有这种现象的,但是数字是基岩版的二倍 。也有可能是基岩版采用的 C++更多使用32位系统的变量数位限制,导致变量中存储的的世界坐标和玩家坐标不统一,坐标处于1024 时,使用最小速度走不动是因为系统通过玩家的坐标以及玩家的方向和速度计算世界坐标,然而,由于坐标误差影响,系统计算出来的位移小于变量精度限制的小数部分位数限制(那些位数是因为整数部分占据的),被自动向下取整或者四舍五入,计算出来的坐标还在原位,于是便无法移动,当坐标到达32768,极难察觉的抖动就系统在计算玩家的移动时,发现玩家实际的位置与计算出来的位置不相符,因为系统每 tick就会进行一次判定,对位置进行系统所认为的纠正所以呈现的是抖动,拉弓在灵魂沙上地走动系统在计算的时候系统进行了向下取整或者四舍五入,导致走不动,坐标到达131072发生渲染错误则是因为渲染的时候采用的物体的坐标与世界坐标相冲突,导致的材质的模型的问题,而卡顿是因为系统在计算玩家的移动时,发现玩家实际的位置与计算出来的位置不相符,因为系统每 tick就会进行一次判定,对位置进行系统所认为的纠正所以呈现的是抖动,只是这里误差更大,导致的卡顿更加明显,在坐标到达262144的时候,线和向日葵在渲染的时候,由于像素误差,导 GPU 致不能正确的定位,坐标到达524288的时候移动速度限制和前面的原理相同,这里不必赘述,渲染错误和画嵌入墙里也是因为像素问题,导致 GPU不能正确定位,蜘蛛网中无法移动,也是因为速度小于了最小速度,系统计算出来以为玩家没有移动,坐标到达1048576的时候潜行前进困难也是因为系统在进行他认为的纠错,精细方块问题也是相同的原理,这里不再赘述,不可见因为误差刚好达到了火把的大小,和线看不见是一个道理,粒子效果只是贴图,所以不受影响,坐标2091752原理和其他的一样这里不再赘述,坐标4194304掉落物掉出世界是因为碰撞箱的偏移坐标8338608切石机刀片增多可能是因为系统的判定逻辑是如果这个对象是切石机那么就在对象的中心创建刀片对象,而由于偏移影响造成的刀片增多。
如果要修复bug的话,针对无法移动的bug可以降低 tick,但是这样就会欠下技术债,欠多了就会累积成大家所俗称的屎山,当然,从根源上可以将基岩版也换成64位系统,但这样代码可能要大刀阔斧地改,能跑就别动,这叫特性,并且基本没有神经玩家会跑那么远,不改也行,当然既不会欠下技术债,也不太会影响玩家体验的方法就是将整数部分和小数部分分开存储,只是这样,代码需要非常大刀阔斧地改,可能比较难

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值