开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
, e, F! Y) H" O6 J1 b
4 e' ]; ~, @9 @8 C0 k" A这个bug类似于旧版本边境之地的方块抖动,具体表现在:0 h) P' p3 D1 m" z* A8 C( G; @  V
2 \, |- O! C, x  D5 m) E% F
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。7 }  h1 w- _# B3 S# f( y6 t, d
当坐标更大时,轨道甚至会出现扭曲的情况。1 q! Y  M' V" w  E  Q( N. ^$ r
作为对照,原版的生物不会受到任何影响。) @5 K+ [/ a, w& a
版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug+ ], j- A' p) v0 _: p) _# ?/ S7 F; ]
! p! n$ e% A- v9 j: K4 U' h
! u: N1 [) W4 E3 f# _

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了
2 F, p/ n1 n7 ^. n建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
' k5 f! k$ b4 G) Z3 u0 U0 D换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54/ _" L: e! ~( E% |7 h9 @4 |% c: ~
肯定是溢出了,估计是算曲线算出上限了5 U1 w' X* D1 H. O
建议边算边取模(下意识

# d& e0 e& p" Q; [* `- C' o8 q) y4 {这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
4 z: P  O) B& R" y9 z+ N  W! z举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。- z2 s& `( E+ G
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。, W6 S: t% N0 D0 l  H0 N  k
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
  t, @, S; r& T: e* h5 `4 v
Zbx1425 发表于 2022-12-19 12:58
, x3 u, L  z2 Z" {' cMTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。6 w9 h3 ^! B4 [' F) o
换成 64 位浮点数能让这些现象出现的位置更远 ...
* t' t# K1 m# Z7 Q
既然MTR换成64位浮点数这个bug就会得到修复,4 u8 |0 W4 U/ t* p2 z6 u( X
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
! G5 [$ T" h' ^6 i/ n0 J& x) f
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
, L; v* R! o1 P% [4 A! ]. }这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。! b* a- Q- w- P3 j+ Q1 Y  T
举例来说,如在十进制中,只能使用四位有 ...
9 ~* A5 S  {* Z# L! ~
(为什么我回忆的概念都是小数精度损失是溢出的一种呢9 I7 l& x; X  J+ V& M
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:400 L0 J& h6 N2 T% C  e2 y
既然MTR换成64位浮点数这个bug就会得到修复,
7 O; p7 b. P" o* V4 N8 n6 x( g& Hminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...

3 c7 t' ?0 z: Y( r. I正确
# P8 T- X' a5 O# r! J& E3 [但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅& J5 Q3 u" ~2 @
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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