开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 ( h/ K, Q  S' s- E! ^
' u, a7 J6 [! P# ?$ l7 V
这个bug类似于旧版本边境之地的方块抖动,具体表现在:" b3 {9 \2 m4 Z
& w+ S2 C7 T. H$ j* b5 J; e
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。  U: k7 _( s( i3 N; u8 ^; Q
当坐标更大时,轨道甚至会出现扭曲的情况。5 h) c( p" d4 m: u1 V+ R
作为对照,原版的生物不会受到任何影响。
  o' W6 V7 y6 V$ x  Z3 x版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
7 J, B: O) k) z) ?# f
, p; _" G# U# t1 l8 O+ |& F5 t1 ?3 l+ D. B( w. F1 A# ~

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了
* _% Q/ B# L* @* @7 ~3 m% |建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。" f& b4 M! C$ P+ l; ^
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
" p+ i5 c/ X! L, w5 t* R肯定是溢出了,估计是算曲线算出上限了
! g( k+ ?. N! ?( n建议边算边取模(下意识
! |: u4 B, i8 i: \! ]& e
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
% ?  y( y% L) W4 U, ?: |# \2 I举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。" T* k0 i8 M. Q8 E
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。- V2 B2 B* @" r& ~. V
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 $ ?! g( y6 n4 t. y$ |- h# t1 O
Zbx1425 发表于 2022-12-19 12:583 c5 B. |, x5 w) `4 ~4 c! G7 P
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
+ X' B, m' ^. V+ X/ d换成 64 位浮点数能让这些现象出现的位置更远 ...
( K8 ?0 E% I% O) D
既然MTR换成64位浮点数这个bug就会得到修复,2 G; @1 |5 j1 L' k- O$ I2 _8 F0 M
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
* I9 P9 B; x* [3 T
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01% l& N, Q# |; ?3 `
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。+ X2 N) P, r, ^) Z( A6 z) K8 S+ [
举例来说,如在十进制中,只能使用四位有 ...

1 `$ \. }; u" P1 E2 A(为什么我回忆的概念都是小数精度损失是溢出的一种呢8 x* J+ X0 j! P. R. o, N
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
0 C: [. {; j4 _0 a3 }既然MTR换成64位浮点数这个bug就会得到修复,9 c8 r' M  S" Q; k  ^
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
. n" x- V/ g( j  B) [$ [) `
正确! U. w. s5 i: K
但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
( ]8 {8 ^# D# @) Z
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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