开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 ; j- x, x* }8 \* o# A) s6 n2 @% X

. G) C0 B3 p9 U( K2 K这个bug类似于旧版本边境之地的方块抖动,具体表现在:
9 P  E2 v5 t8 \4 |9 \# q4 m5 q$ K: f
% N3 I' T$ b8 ~当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
' K/ p! }3 P1 N' l" ]$ E5 w1 L当坐标更大时,轨道甚至会出现扭曲的情况。
- t- ~0 L( m6 G7 ]. i% v# s作为对照,原版的生物不会受到任何影响。& K, z8 p# a. d' n
版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug. {* Q: \* N5 R0 B2 t
6 `4 _( s6 ?+ g) f: ?1 h- P3 W
! \6 k5 E; U% a! Q

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了% `) ~2 K$ \) N
建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。3 V, G5 m9 K7 m& T
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
( ~3 [- q6 T3 S' j5 T肯定是溢出了,估计是算曲线算出上限了
9 ?1 H" r* ~/ }" U建议边算边取模(下意识
. l+ A* l9 C) z
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
- m4 _) B: C: X' m5 p8 |( ~/ f举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
- @, f0 m+ q5 Y' @9 a1 T2 f这就使计算出的结果与应有的精确值产生误差,让它偏离位置。* w( ?$ M0 R2 Y6 U) t4 P
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 7 u7 [$ ~0 o# ~/ {# V# x+ t
Zbx1425 发表于 2022-12-19 12:58" \2 v+ R! B4 x' N7 L. e/ G
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
% [0 |8 l; e# _- X/ t换成 64 位浮点数能让这些现象出现的位置更远 ...

7 S( c5 @1 v6 {2 j8 |- H% y5 Y既然MTR换成64位浮点数这个bug就会得到修复,1 r/ L2 u4 W: z3 c
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
& V2 V! R7 f$ @2 C/ a) y! C) k8 i
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
9 D8 v* w% O7 }: F- V6 y2 P7 f这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。8 {7 W( }1 h- F7 V) t+ _
举例来说,如在十进制中,只能使用四位有 ...
) D+ P" w% g6 K
(为什么我回忆的概念都是小数精度损失是溢出的一种呢6 a# S; q* ~( ]8 f0 `
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:403 H$ e. A( _( v$ m. d8 |
既然MTR换成64位浮点数这个bug就会得到修复,% F2 }" Q" m0 p" ]% Z) e
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
, [8 x* e% f- ]0 @% I" n0 `" i
正确
  [3 G$ J9 P! K但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
7 k2 ?. ^- W' c$ _
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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