开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 ' `9 @$ ~6 J% b6 a& o. e

1 T1 {' y/ ?. ~5 ?6 l! X6 P这个bug类似于旧版本边境之地的方块抖动,具体表现在:! B% }2 ~3 p) c5 p

1 r* O/ K2 S/ d3 Z8 f当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
& i+ {& I( U1 ]8 O当坐标更大时,轨道甚至会出现扭曲的情况。5 R# {  {, T9 L% B  o# u# J
作为对照,原版的生物不会受到任何影响。
$ s1 O5 ^: L% R7 `版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug7 i5 }+ p. k8 K. d0 g) H5 W

  g& W* v) @7 a: S; T+ U0 P. W" H
1 }( G6 |6 {- p7 l" c( b: B

本帖子中包含更多资源

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

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

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54/ p) Z0 Q5 S( d* ?, a4 c
肯定是溢出了,估计是算曲线算出上限了6 x& `5 l/ D5 B" p  N) u7 K
建议边算边取模(下意识

7 {) q- f7 o# J这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。" ^) X2 R" l* k) p& a
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。1 C! J$ R; u8 n- L8 m9 p$ `
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。
7 Y) o5 o  u9 c, f: F2 W9 ~
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 ; @6 F( H# K8 e
Zbx1425 发表于 2022-12-19 12:585 v7 @2 ^" \2 Z; x7 x3 R2 b8 b
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。0 l% f$ ?/ }3 J4 S* c7 Y( y4 i
换成 64 位浮点数能让这些现象出现的位置更远 ...
% h" m) ~! G$ }6 S
既然MTR换成64位浮点数这个bug就会得到修复,* @$ b& V# F. L2 a
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
& ?# G" U5 V7 H, H" Y0 w
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
) F% m* B: Z$ g: v9 m# f6 E7 {这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
  x& p" j$ I0 G4 {. B- _" ?举例来说,如在十进制中,只能使用四位有 ...
& e! I8 T, C3 v# w3 a
(为什么我回忆的概念都是小数精度损失是溢出的一种呢
' [, _8 U: S( z. u: j4 l+ f8 v! r可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40- y( r/ u0 l. O# d' w
既然MTR换成64位浮点数这个bug就会得到修复,! q3 @8 C; Z5 U) [: W1 X, q6 o
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
! |7 S# @9 n' o2 R5 n) x
正确
8 p: b" }$ F( ]+ x9 g但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
! i9 J& Y% h) S! H% h9 K; j
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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