开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
6 S( ^; v6 i/ G, ?' I8 R) d
& q$ t7 [8 K, s! R这个bug类似于旧版本边境之地的方块抖动,具体表现在:
* z9 K- W* B. S; W+ r7 |3 ]; k* J4 _+ y
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
4 ]& m0 y+ y7 Q) E$ C2 _当坐标更大时,轨道甚至会出现扭曲的情况。( [3 f  x4 i! q* T% S: ]+ t
作为对照,原版的生物不会受到任何影响。4 f# K4 k, Q* g+ K
版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
% F/ e3 z+ W- u
8 x1 b, }0 \/ s9 D# q! b2 P: O/ Y* j4 C& T# m8 p: W4 _

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了+ |0 M/ z2 B. l! t) r% ^
建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。6 y3 H% I! g7 [6 k, z
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
  x2 @8 |0 B3 ]肯定是溢出了,估计是算曲线算出上限了( j; L" k9 `' i0 q+ V! I
建议边算边取模(下意识

( w( l6 A! D& h* ?( A4 ~/ Y这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
* A5 y4 M( H$ A% R举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
9 g, M! b. @! ]2 D  B这就使计算出的结果与应有的精确值产生误差,让它偏离位置。8 k2 _" j- ?0 X; N% S1 C: z7 }
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 & P# I  j# p5 ?
Zbx1425 发表于 2022-12-19 12:58
* m9 U) W- U/ X1 [: K1 m& \  X7 yMTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
; l+ h; b# h! e) c% c换成 64 位浮点数能让这些现象出现的位置更远 ...

$ A7 j: ?) F5 `" V既然MTR换成64位浮点数这个bug就会得到修复,  v; p0 G% |' l5 B! G. A
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?- j, W) \2 b/ [  X- ^2 y
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:019 E3 \" v1 s8 c$ x, t% Z7 b' H
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。3 m* ?' c! f$ Z. V
举例来说,如在十进制中,只能使用四位有 ...
  @1 K' D: s0 A. c  o! f3 R4 h
(为什么我回忆的概念都是小数精度损失是溢出的一种呢
9 ^$ J# w8 b5 }- \$ X6 H可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40+ n9 ]8 p8 D4 ?/ t
既然MTR换成64位浮点数这个bug就会得到修复,( H; C+ d# i8 a( @: f& {2 z8 f, h2 ~
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
" W  {4 S1 [/ o; C3 W
正确
% A6 |7 _+ |$ L6 W但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅+ D" [) M4 b6 U5 w+ ^. A! C
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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