开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑   Z' Q& Q0 [. g1 x$ h
1 K& B$ a; r' I; {
这个bug类似于旧版本边境之地的方块抖动,具体表现在:6 I. y. _' O# q
/ i: M! w1 v6 I  p, a& a
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。3 }6 O/ J* o! h, J+ e9 r
当坐标更大时,轨道甚至会出现扭曲的情况。7 x0 P. J. w* B) X6 p
作为对照,原版的生物不会受到任何影响。
8 r1 w! |8 J/ {1 y版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug5 B. ]* ^7 G' v3 h3 l0 ^% K

0 L' a$ ~8 f* n! m5 S/ u& A. {
) C1 n9 x2 |1 O" c8 l

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了8 C: |( E3 [4 Q6 [4 T7 `3 T
建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。" _2 ?1 G. I, ~( d  u! N2 b- ]
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54! P+ \7 w+ o( H2 @) s( `. k
肯定是溢出了,估计是算曲线算出上限了1 a8 F5 _9 t) ^: N
建议边算边取模(下意识
0 y- R& X. T: |0 s1 c
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
; N  Z$ L' ^3 m1 H. K5 u# S& g8 @举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。, y! P( ~8 l4 O& [4 u& v
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。) i8 H: \7 k7 c( ~. u/ P) S
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
# `/ m+ n4 P8 n2 |! D
Zbx1425 发表于 2022-12-19 12:588 d0 a# }, L/ b. G$ V9 R, `
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。2 O6 [  d: ?0 R: q
换成 64 位浮点数能让这些现象出现的位置更远 ...

3 W7 Z! C  U! ^1 O  E( L既然MTR换成64位浮点数这个bug就会得到修复,4 b" t# B- y. v" u) r6 [8 I* a1 ]
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
9 _( X' h& D) j) [) s0 Q
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01$ J! v6 P: t) I4 w( z9 I
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
3 h& F9 t3 o# M: Q+ V举例来说,如在十进制中,只能使用四位有 ...
4 d. l8 \' s) ^% J0 n: _9 G+ Q6 u
(为什么我回忆的概念都是小数精度损失是溢出的一种呢5 Z/ ]' i& _  z
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40. ?" e5 ~+ \8 d" c6 y, _+ Q
既然MTR换成64位浮点数这个bug就会得到修复,
7 V/ ~& e0 ?5 P; M( yminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...

& S$ i) F- s8 X1 Q, H, w正确' M/ s% A7 j% Z$ |- l
但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
: C3 N& J! K# F' W; P. ^
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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