开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 # b+ c4 {) y5 G4 i/ F+ ]/ g, V

1 F7 a7 g: L+ `这个bug类似于旧版本边境之地的方块抖动,具体表现在:
1 J: a: s4 m6 [: \. A: _; D3 N2 D5 l" u) v- r/ P/ P5 S
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。0 {3 G/ v& n; e
当坐标更大时,轨道甚至会出现扭曲的情况。3 W6 p: U( `+ ?$ H* D, J) F2 s7 ]
作为对照,原版的生物不会受到任何影响。
2 @6 K# E8 m) o( l版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug+ {4 z0 I9 @$ e) I- y; D
5 L( K3 l" k& [) \

9 {# n8 s$ o" k# g. M5 x

本帖子中包含更多资源

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

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

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
8 p0 [/ a, b. \2 n肯定是溢出了,估计是算曲线算出上限了
/ r% T- G8 g  N  K2 B5 R# _建议边算边取模(下意识
% s) f$ n' Z) ~
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。& Y8 e/ G9 p( Y* I" h( ~
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。# c) C4 ]2 {  ^7 T' v6 j4 P
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。
" h: m' @* i* s; e" S' h
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 & ^( {$ b0 d* ~; {) p% s
Zbx1425 发表于 2022-12-19 12:58
# c% s+ i$ x; s7 \MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
% u$ P! U5 O3 p; ~$ p, V0 T换成 64 位浮点数能让这些现象出现的位置更远 ...

& s) w6 }2 ~; j8 P既然MTR换成64位浮点数这个bug就会得到修复,
, [0 F' C/ |% u% {4 z( vminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
/ b9 ]7 V* j0 j) p1 ^: B# I6 E
玩不到第三章汉化导致的
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01
7 T( w7 l; E1 a: Z3 m这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。2 k: y- }2 J$ [
举例来说,如在十进制中,只能使用四位有 ...

% H3 V& l; P! U  K* k(为什么我回忆的概念都是小数精度损失是溢出的一种呢
5 Q8 W& C" f( @) p4 `; ]可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
" L/ n5 F/ h3 w1 s$ Y既然MTR换成64位浮点数这个bug就会得到修复,0 h" w# r4 Q/ G" ~
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...

* ?, @8 w7 Z: a. h, b正确3 N9 Q2 \( M  A( `: ~
但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅: M( H5 B" L7 n" v: X  u
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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