开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
: L  v# ~$ T: i
1 y; j# f7 l" r( _5 C这个bug类似于旧版本边境之地的方块抖动,具体表现在:! W" k& N% K, W3 O1 q; H

0 ^7 I; i2 W& K! r* R7 S当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
* z; J* {) P0 F8 p$ f当坐标更大时,轨道甚至会出现扭曲的情况。
3 h. e" G  A, C3 r6 A- W# Z作为对照,原版的生物不会受到任何影响。1 f" J; x0 E7 r; w) A
版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
, ~) O4 G; T6 n0 ?8 d, U9 b
/ \( S& ~8 ]' M  L$ P1 V  Y8 ~" `5 b9 b4 [, o$ w: v; c3 D+ N

本帖子中包含更多资源

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

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

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54+ G0 l5 F  ?# }( w
肯定是溢出了,估计是算曲线算出上限了1 I; H% y: d% N# F+ B( t
建议边算边取模(下意识
% d  q9 Y. t6 `0 s/ K
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。- P  w8 |. x4 [5 e4 l2 L2 m/ g. S
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。0 T, i  c8 e1 G# H, I
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。6 b4 S+ ~/ {  J
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 4 n4 h  F' a2 j) \  p
Zbx1425 发表于 2022-12-19 12:58; s) w4 o0 ~- r. x- l2 y! v
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。: X+ Y# p6 D* d" \+ G) f
换成 64 位浮点数能让这些现象出现的位置更远 ...
( r8 P" }' v" ?% O3 Q
既然MTR换成64位浮点数这个bug就会得到修复,
, x- ^! f  L9 K8 L" p" Dminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?. i8 T$ M" E6 N7 w8 G# t9 ]
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:014 |" }0 L1 h9 V. ~6 u  k, A" r8 d
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。! \/ T# d$ I0 V( \' J
举例来说,如在十进制中,只能使用四位有 ...

0 }2 V; l5 S1 q$ I, n5 G(为什么我回忆的概念都是小数精度损失是溢出的一种呢' g) l- j8 |& p. h6 N. v+ c7 S
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
4 J! x$ [2 ^+ n, [7 B既然MTR换成64位浮点数这个bug就会得到修复,0 ^) N1 o# Q& i0 N/ e0 v+ T
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...

, _3 ~( r9 C2 g正确
! [" i  f8 [0 o$ w" P+ c但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
- v$ H3 j9 V) [1 C. Q7 q- \& M
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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