开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
; `; ?2 n4 C" e: Q! q, }( g8 x, t, E
这个bug类似于旧版本边境之地的方块抖动,具体表现在:
9 {+ a5 ~) k- @0 |# Z
9 `4 Q* g6 i& ?( ^当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
' g) R8 }; `2 o) \( L1 ]$ o1 T当坐标更大时,轨道甚至会出现扭曲的情况。
9 @+ [( d) D. x# P作为对照,原版的生物不会受到任何影响。
; {0 g5 t8 k8 a! c/ D; M. x版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug( ?3 v0 u# P9 ]9 Y
) P) @; A6 ]- D& C1 s0 R
3 a: z0 \+ B" o0 T5 V0 u% q

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了$ B/ S1 S: |2 k# e/ j2 [1 i
建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。, y% ^" L0 m; C6 E: s. ^+ S
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
6 I5 z: ^' w3 O+ i6 p/ X+ ?肯定是溢出了,估计是算曲线算出上限了
& _3 O) c! x8 M9 E8 @' w+ O建议边算边取模(下意识
% u5 d8 H, f( P$ r% V3 m5 x) H
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。2 [' w+ P/ {' F
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
# }2 D4 S6 p4 P9 E' q8 m1 J  [/ _这就使计算出的结果与应有的精确值产生误差,让它偏离位置。" d# ~: `$ q  N3 D) M9 m
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
* h, K9 }* o4 }
Zbx1425 发表于 2022-12-19 12:58( d! ~7 I+ ?# C/ }
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。# D* h  Y5 \, n# E1 T/ z& G# X
换成 64 位浮点数能让这些现象出现的位置更远 ...

  p6 d+ y: x* s3 Z, O3 B既然MTR换成64位浮点数这个bug就会得到修复,
; A6 b8 m7 ?  L5 Q7 Z& r+ Dminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
+ S3 T* T3 K" ]4 A# O/ \8 Q' n; W  ?
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
! f1 s  ^. P: O# w/ C$ E: J4 ^这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
# I; w& l) E6 z$ m举例来说,如在十进制中,只能使用四位有 ...
( N/ N* F& i  h1 u% R; Z
(为什么我回忆的概念都是小数精度损失是溢出的一种呢
' f2 C- S5 |3 _7 ]6 s7 x: R" M1 ?可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40; j$ }+ H1 [. t
既然MTR换成64位浮点数这个bug就会得到修复,
, a- t1 s7 t; _, M4 K5 Bminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...

8 @# N8 d" F6 z正确
* d$ W* n$ q7 E) W3 p$ d" i但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅% Q3 e4 Z; Y* K- p' r% U8 ?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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