开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
; c6 S! }. l. v. ^; m& ~
% C% r9 w* v2 c( B% H: g这个bug类似于旧版本边境之地的方块抖动,具体表现在:
' n+ J9 v. _% X, n& ]6 ?. _5 ]+ {+ S$ u+ v
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
% k  U1 l: {9 f( h1 i/ w" k& R( W当坐标更大时,轨道甚至会出现扭曲的情况。' `" @) n  u( O. h1 `) p; D
作为对照,原版的生物不会受到任何影响。
- g& \- z, Y. N) m+ Q: F. {版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
! c; J% W5 c' w4 W, u6 p, l
' S% q$ h. i: S& m+ L. o% X* A$ Y0 d% \* N# q: G3 N" ], |

本帖子中包含更多资源

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

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

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
% k" s; p( x( k; y9 L! q2 C肯定是溢出了,估计是算曲线算出上限了- W& q8 |1 _% L7 K2 w
建议边算边取模(下意识

7 ]; W" x4 t6 e9 {2 T' i0 M这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
, y& Z4 L( @% M8 C! I举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。+ P3 e8 [6 N* Z& m+ E
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。
5 D8 g* e8 [* N
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 ; s* J0 z2 p3 N# W. t& |
Zbx1425 发表于 2022-12-19 12:58: `2 R( B( X% f5 x% f/ P6 I. m, A
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。* r  `$ ]4 a; @/ ~
换成 64 位浮点数能让这些现象出现的位置更远 ...
5 d8 `5 j  e! s& t6 ^, J' N6 J
既然MTR换成64位浮点数这个bug就会得到修复,& x* @% N% E% k# D0 f
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
3 C( _9 @. k1 C8 I/ F: x* M& V
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
# b0 y: X3 e& e1 j这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。, z" O2 X* l0 }7 p! y3 w" K
举例来说,如在十进制中,只能使用四位有 ...
; p2 A4 L# Q- V# C% F
(为什么我回忆的概念都是小数精度损失是溢出的一种呢
2 S9 k; W/ q$ u% p. T0 Y) u可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
6 y% {( W* C. ~# M% C( V  Y* J! O既然MTR换成64位浮点数这个bug就会得到修复,3 o6 n8 X% {# _( a5 I' g) @# `
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...

# J3 K0 B% N5 G正确
3 [; ^3 \) n, j; H% d& }# {3 ]但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅: d+ P0 ?% h; v- G  h
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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