开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 8 B- A9 ^% t* a- _; P( D' [; O
) P* c7 C+ X7 O1 L
这个bug类似于旧版本边境之地的方块抖动,具体表现在:4 j) n: C+ h! L, g; j" B

. `2 I5 |: S" {6 `当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
) W7 K; ^9 p4 ^% c0 V6 X2 o当坐标更大时,轨道甚至会出现扭曲的情况。# A# ?% K( p* p  g
作为对照,原版的生物不会受到任何影响。% C$ ^. Y* Q  v- u) U
版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
) b# _4 }0 W0 e# s4 D9 n3 V: j& k+ {/ k7 Z( V4 o: n) u( W! B4 M
( _& K( D# U! Q1 z

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了
4 `- b2 n8 C0 y; @5 z( Y建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
- W$ a4 F' @! [6 j# |3 K  m" [换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
0 r. A4 u4 U* m: d" ?* q肯定是溢出了,估计是算曲线算出上限了8 [6 f; e; Q$ E. t) x
建议边算边取模(下意识
6 u9 u; ~: U* `
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。' G$ b7 c( |7 [* r/ x
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
4 s. ]# Q& W2 h' g5 J# O5 k/ }这就使计算出的结果与应有的精确值产生误差,让它偏离位置。* f' h& r5 o4 @8 y6 f( @9 Q* W* B
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
9 {& a% `. }  t* X
Zbx1425 发表于 2022-12-19 12:58
1 {- B7 t1 J* R' ]# SMTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。: v+ t- x5 d" \" s2 b
换成 64 位浮点数能让这些现象出现的位置更远 ...

# P5 ?2 h/ [# k既然MTR换成64位浮点数这个bug就会得到修复,
3 D, l7 v: a* z* d5 V( gminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
) e& m6 l. Y8 P, G' f& A
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:012 `4 d4 L; s: R) S3 `& W
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。( m- i0 g6 M0 }4 @/ u  |: T( M
举例来说,如在十进制中,只能使用四位有 ...

6 R  n1 f# V# h  O% {(为什么我回忆的概念都是小数精度损失是溢出的一种呢
/ c, n- r3 c7 u8 a* @可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:401 m' y# C) v" W) n; Q* ]+ C
既然MTR换成64位浮点数这个bug就会得到修复,6 l5 U4 |9 Z0 I4 I9 x
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
! }9 B0 W2 w+ R) t0 A) B9 R. ^
正确6 ]% O6 h& @% W( }! h# j
但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅$ a* r, a( _" u! ~0 @
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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