开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 . y+ c" }5 {7 U

& q4 Y" K7 H  o! u这个bug类似于旧版本边境之地的方块抖动,具体表现在:7 B! A) ~+ M$ U% W6 x! }6 O

7 Q4 ]* E% b  R2 f: C) k当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
' P$ }0 O  A: b% N4 e, ~& _当坐标更大时,轨道甚至会出现扭曲的情况。/ j5 O6 Z! W. B  U6 k; F- h$ C$ b
作为对照,原版的生物不会受到任何影响。/ _$ C" T4 J& _+ W, G$ `* v* q
版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug6 t; m* {* P. N2 ~* b- ^
  q; J8 h6 ]! h# V! E7 n- _
4 n# e* Z/ Q5 ?& F$ T- t

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了6 h9 k2 o- J* r% E
建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。3 L; r( o/ q- n
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:548 L; g! e5 ~" B# T! p" ^, ~
肯定是溢出了,估计是算曲线算出上限了
0 r4 T* T% g) W* O建议边算边取模(下意识

* |$ S' i) p. a; k: u" H" M0 L这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。3 u* {* `  f$ J# I! e( ]8 N' D
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。) _- b/ R. F8 W
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。
! ]0 s/ }  B3 K  S4 O: C) J1 M
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 - f# A& \- V- Y& K
Zbx1425 发表于 2022-12-19 12:589 Q+ ^9 R0 K6 `3 B6 X3 v4 I
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。. l& j7 K+ Z6 \2 a) V3 o
换成 64 位浮点数能让这些现象出现的位置更远 ...

# a/ R: J: c$ I7 g既然MTR换成64位浮点数这个bug就会得到修复,
/ \: @& j0 j  i& J: @$ dminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?1 |3 C2 d% Q9 {3 {# U
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
/ k' J% D1 Y/ I: i这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
, J1 W- Q: k: R/ p举例来说,如在十进制中,只能使用四位有 ...

( l5 O% S# T1 ]4 `(为什么我回忆的概念都是小数精度损失是溢出的一种呢
% w4 `6 U( O3 {. `0 {可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
1 N) k  e& a, P, t/ g" J既然MTR换成64位浮点数这个bug就会得到修复,
# ?0 x8 r+ i5 {minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...

* e  e5 S2 A' _. }* v# C6 [6 ]* X: f+ E正确! q4 n* L; L$ j
但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
6 {+ J' j$ b5 u* q1 ?' g1 Z
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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