开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑   I: C) G4 _* D+ p( Q& ]  ~

) E* a( `7 _+ s( V# m这个bug类似于旧版本边境之地的方块抖动,具体表现在:
/ A0 q6 P8 I9 v/ m# L# o! @% P. W4 ~$ S9 r% ^3 S/ r* v
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
) c4 _4 d# g: G% K当坐标更大时,轨道甚至会出现扭曲的情况。0 A7 R7 F( {0 n2 B. }2 K8 V
作为对照,原版的生物不会受到任何影响。6 R% g2 @( q  e: \0 ?: Q- X; C2 Z; Z
版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug+ D/ m5 |; P( n

2 O( {7 q7 d1 H! S# w1 }* W0 D/ X' Y* o  x4 d' h+ N+ h9 O" U7 C

本帖子中包含更多资源

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

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

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54) g, s' D2 q- r9 n1 l
肯定是溢出了,估计是算曲线算出上限了
0 T2 g# \" @. S9 e* [建议边算边取模(下意识

* w7 x7 U# J9 X2 c这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
: r- ?# d' a# d. u  o4 [; R举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。* G- a, [+ |: F9 O+ c$ d! Z7 Z6 ?
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。- m# f% @& r+ Y0 b3 j
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
mtrrtrain 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
1 b+ y/ ~) H8 e) B' e8 ]
Zbx1425 发表于 2022-12-19 12:58
& t6 B$ D; ~: G! ?' m3 t2 ^MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。/ {0 J" y7 J  z! X" ^
换成 64 位浮点数能让这些现象出现的位置更远 ...
2 h2 y3 o; @. r, ]
既然MTR换成64位浮点数这个bug就会得到修复,
! j/ T: E: ]7 L( ?minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
- R" c$ b. B/ s8 C; v
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:018 S' [  }1 i( T; d' J
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。/ O6 x$ V& L% W
举例来说,如在十进制中,只能使用四位有 ...

" A2 N5 J+ U' n4 G(为什么我回忆的概念都是小数精度损失是溢出的一种呢
4 L$ a! c# I3 N/ y可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
; f. H$ Q* g/ |( E( A既然MTR换成64位浮点数这个bug就会得到修复,
( s+ p% [4 ]9 G2 ]; Dminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
0 p* W6 ]! I' Q
正确
5 ]+ @& b$ @6 _" i4 e4 H. ^2 j. s  F1 P但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
" N1 D; @0 U" U) ~3 u- ]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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