开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
, I# `  A, C+ Z  o; W) D7 a6 C8 z( _* u1 \. v& n
这个bug类似于旧版本边境之地的方块抖动,具体表现在:7 ^# g7 J; H! R( v- p6 ?' U

0 L: I% G' `# Y, T" E1 n+ \) M当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
% ~$ Z2 G& i1 J: O4 L0 I当坐标更大时,轨道甚至会出现扭曲的情况。! o& u0 a7 t( z4 W) Y; D
作为对照,原版的生物不会受到任何影响。
# D7 U( N  N5 }6 ^- k: ^2 s版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug" }4 d) h2 m1 h. |
7 d* P" n4 g% o" {, I; S

* N" ]# Q" @$ k  ~6 Q7 b2 G

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了
) j, b9 U6 y* v* h% r1 X' S  n建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。4 _7 Q7 W- X( \- ^2 Z( r& W
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
' O2 \! O/ P( `$ @肯定是溢出了,估计是算曲线算出上限了6 |6 g- Y% h3 k1 S7 U- P  h+ F6 i
建议边算边取模(下意识

- C! c" M4 g0 p这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
" l$ [. q# r: v8 {* H举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
+ b+ W3 Q0 |; t' K1 g% Q% y% M' h这就使计算出的结果与应有的精确值产生误差,让它偏离位置。: |* j$ ~+ S6 C/ e3 M
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 & Q0 g( [9 o  a9 Y' [2 `4 z
Zbx1425 发表于 2022-12-19 12:587 ~1 @0 T& C9 O* p4 S
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。  b) l6 t6 y' V( {4 W. k8 V
换成 64 位浮点数能让这些现象出现的位置更远 ...
  e- K3 l8 t& ?- m
既然MTR换成64位浮点数这个bug就会得到修复,
( d( U- }# O; i) V) }: Aminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
: y+ T9 B/ W4 _+ i' e
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
6 s, _+ n# u) k) f这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。  h1 B2 }7 [0 W1 X; k1 c$ _
举例来说,如在十进制中,只能使用四位有 ...
' o6 V9 H) p. W4 ]4 d
(为什么我回忆的概念都是小数精度损失是溢出的一种呢9 N+ ]5 a8 A" R! T
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:402 e6 C0 B1 F7 L6 {( o7 {2 r% m
既然MTR换成64位浮点数这个bug就会得到修复,
* P8 M& _: X; u! }: ]! M7 x$ hminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
* ]- a0 d' }! a) e" _9 y6 n7 r' O  F
正确
  k$ ^% `. g, K! e' N* X但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅) l/ K( M- @. `3 {
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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