开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 9 e7 v7 L8 \; R- ~

8 x: y# u6 j6 X8 ~: m这个bug类似于旧版本边境之地的方块抖动,具体表现在:
/ W4 M% Y0 ?) t4 e' K# f: u5 E" d% Z0 F- H( Z
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
- H2 E! h. B+ ^) s& K当坐标更大时,轨道甚至会出现扭曲的情况。7 X  B! I5 T" @3 b, I
作为对照,原版的生物不会受到任何影响。
# N" H3 z, z3 q: D/ L版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
, K0 h% k# C# h+ n$ V8 D0 F
. F+ w1 T; @) g( U& L6 y
7 }9 l5 @2 _/ V# K1 Z

本帖子中包含更多资源

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

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

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54- F8 x% b- H) I7 R" v" Y' c
肯定是溢出了,估计是算曲线算出上限了
$ O: J5 r* P7 m! @9 r  w8 F7 @* S0 y' U建议边算边取模(下意识

9 |4 Y8 r! J7 ?4 [% V* m这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
7 F  G: _2 Q& d3 G8 u; w举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。7 a$ j. b6 ?+ O) M3 f9 D/ q* O- i
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。
8 v  N6 E) S' E/ ~( o
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
# G* q( @6 w# C' ~  y* b3 Q9 V" y9 D
Zbx1425 发表于 2022-12-19 12:58
( T$ q# Y0 F) ?0 d0 TMTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。5 `4 b( A; `% X/ D6 J
换成 64 位浮点数能让这些现象出现的位置更远 ...

  k( u7 C6 C- r( W7 C8 e既然MTR换成64位浮点数这个bug就会得到修复,
2 D9 y; T- P- w# j5 r0 @; j6 u  {, Yminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
4 X& E2 X* N1 B/ L' z
玩不到第三章汉化导致的
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01: V$ M0 a3 s' E+ {
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。2 p% G$ x  U" L1 D! Z! E  S6 d" B
举例来说,如在十进制中,只能使用四位有 ...
* m  G* ~2 \0 ?. j! p
(为什么我回忆的概念都是小数精度损失是溢出的一种呢
% Y, f0 W# h* |; |- {7 S9 j. K可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:402 i" H* X% i' u1 @
既然MTR换成64位浮点数这个bug就会得到修复,
8 h) ]/ }/ ]+ O6 q% Y# u) jminecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
6 L5 x# n' {  S6 g$ E5 h
正确
2 ^8 c# Q6 G6 ^! T% a但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
! }2 h" B6 A  O
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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