开启左侧

MTR实体在坐标过大时产生剧烈抖动和扭曲

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 ' @5 g/ o! F2 s5 x; s/ p
: A- E7 [/ u. H: Q
这个bug类似于旧版本边境之地的方块抖动,具体表现在:$ J# Z8 {) O& b# }! o6 `

7 W/ Z6 b6 z' s* |) Q& ]+ x当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。+ J# f4 }7 L2 z6 b. e4 ]/ q
当坐标更大时,轨道甚至会出现扭曲的情况。9 B" v. o9 h6 k! U) F
作为对照,原版的生物不会受到任何影响。3 J1 B( A* K! f2 p  q9 b2 x9 X
版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
( \* u0 n( \0 V" A' W3 R
/ N/ _- s- z4 U) y& n, I
5 }5 y1 g/ r8 a7 ]- {; o. P" a

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了2 y) s' e  q5 H" v" |7 u% r
建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
% H4 O. z$ A2 y3 c. H3 A/ S9 h换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

参与人数 1 +1 收起 理由
MSnj_studioX + 1 有人做大规模,飞机出了必然有.

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
1 n) B& B- [( p4 f: r" Q2 ]* K肯定是溢出了,估计是算曲线算出上限了) c# c4 c- o9 I
建议边算边取模(下意识

9 X# r6 k/ L8 Z( U4 |这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
! c' P! ]7 p# N1 [7 y  S举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。$ h, p1 v) `/ `6 P2 ]: \
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。
, k# ~# R9 K( m( k& Q
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
mtrrtrain 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
2 k" ~+ \* u* G+ m) j
Zbx1425 发表于 2022-12-19 12:587 x) z3 ]& y  g. {. r: a' U$ W( v
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
8 B2 m. R0 }2 p- _8 E2 K5 B/ s3 s换成 64 位浮点数能让这些现象出现的位置更远 ...

0 ?3 n% u8 q5 Q既然MTR换成64位浮点数这个bug就会得到修复,
! R% J& P1 u; d6 K1 Uminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?8 B- ?' j% B6 \- m9 s
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
! K) z, I! X$ S; k4 O7 }这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
7 L- ~6 H: [& h举例来说,如在十进制中,只能使用四位有 ...
9 n/ R$ c. t4 x9 r/ J: s9 v
(为什么我回忆的概念都是小数精度损失是溢出的一种呢7 B7 [5 A1 g9 C0 @* k
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
% \. m! J2 n9 ]' u0 [5 O5 o既然MTR换成64位浮点数这个bug就会得到修复,
7 j, P/ F9 @* E0 @) c; Lminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
: w3 a7 @+ W( r8 s- E2 O$ a
正确; z- X2 u& J( J
但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅& g6 Z* o8 W0 z3 K! g2 v1 ?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表