开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
2 t; X3 [) ~: y$ x# m. Y) F9 Q" Z% y$ n# S4 D3 q
这个bug类似于旧版本边境之地的方块抖动,具体表现在:
0 |) x& Y. C/ |1 Q* b
/ U" @' z: A2 Y$ [  `: ^7 i当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
$ L) N) X% [! f* m- y当坐标更大时,轨道甚至会出现扭曲的情况。! h  c3 y2 T$ n2 M2 Z- X3 f
作为对照,原版的生物不会受到任何影响。
2 l+ Z1 F; k0 J" Y4 c! U版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug( [7 [0 N/ }; X5 i2 X
& R# E; j0 @5 v! x1 A8 u
' R, J+ `; y1 e' t' ]1 O' d. M

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了. k& D0 I- P0 N
建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。# w$ Q2 h' j3 Q/ W/ u& ~) x0 z
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
7 C- U3 q( |# Q肯定是溢出了,估计是算曲线算出上限了: U2 |( {+ ?# T" `
建议边算边取模(下意识
3 U6 I9 `6 D5 g' q
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
$ t! p! U4 ~5 y) B举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。* t/ Y4 u# l& r; M/ a* z, X
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。- q8 i; C, ]; g. o
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
- E" s% Y' E3 A1 c7 q# z) P, Y' ]
Zbx1425 发表于 2022-12-19 12:58
! ^/ z- `) M: w& \+ k5 ]/ WMTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
% l( a9 r$ l, R# D7 d/ y换成 64 位浮点数能让这些现象出现的位置更远 ...

! S' h: s: m+ B. N1 X8 _既然MTR换成64位浮点数这个bug就会得到修复,
7 O, d5 D- `7 B1 @. E# `minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?. n( s& b' `* ]; I1 f& w3 t. q
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
( W4 P& I$ [3 `! }9 ~. i这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
6 z  u  Z9 k; U) L- F举例来说,如在十进制中,只能使用四位有 ...

! B" S! e( i/ G5 ?2 Y+ R! F(为什么我回忆的概念都是小数精度损失是溢出的一种呢$ {+ t) J3 Z+ A( n7 T
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
8 S1 L5 i6 o* y5 B: M. R5 w8 s' _既然MTR换成64位浮点数这个bug就会得到修复,
8 M+ G) @" y2 p$ h* U1 E, _2 Wminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
* n3 P. _6 Q' Y1 d3 P
正确( q8 d; Z0 o# n9 v1 O4 q, d3 ^
但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
, P, p0 E+ ~$ V! x& Y
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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