开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
; ^5 f, n. q9 C# V3 |8 n) G$ g: Q8 A) t  E
这个bug类似于旧版本边境之地的方块抖动,具体表现在:: Q  H; T3 ^0 r& a" L7 \

9 B! t& s3 r0 k( Q( F" W8 _当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
/ F* |7 m+ X, h4 k0 }当坐标更大时,轨道甚至会出现扭曲的情况。6 S. h; w$ O, M. W; T# V9 \  a, ?+ {6 K
作为对照,原版的生物不会受到任何影响。
* d! P& m! A4 Y% D0 n6 g9 M版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
2 y; y: Q  k2 o. s
4 s5 D  b$ o$ I+ u& W! T! F1 o- w* g, h! G3 G1 B* J0 q. ]. s

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了5 X% s0 i3 B1 f% @8 O2 g
建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。. }8 P* m, B( {% M+ }5 V. z1 j
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54! f1 s3 w* t" g+ I& V: Z6 v
肯定是溢出了,估计是算曲线算出上限了; |; D3 f4 {( N- _
建议边算边取模(下意识
3 ~. V8 s4 k0 M
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。5 P8 t- E  z* Y1 k. D1 l+ x
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
3 {( G% [8 h. Y$ F- z这就使计算出的结果与应有的精确值产生误差,让它偏离位置。
. e( z  s1 m. D: }* H
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑 . |' ^4 m" `( {' |
Zbx1425 发表于 2022-12-19 12:58" d. Q! k+ E: ^) t3 J6 S/ W, d+ d
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
! q) k& d! N+ t* |! H3 q; y  X换成 64 位浮点数能让这些现象出现的位置更远 ...
  T4 n) O% Q" a: K  J2 K  l
既然MTR换成64位浮点数这个bug就会得到修复,
; R6 L0 \2 z6 G( u* V: Vminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
9 `, I% P% ^8 ^7 P
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01. Q5 Y* u& ?% e  L# W
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
  k# n; K; ]3 F举例来说,如在十进制中,只能使用四位有 ...

2 i# @5 J; K/ s, R(为什么我回忆的概念都是小数精度损失是溢出的一种呢
! Z. b6 e0 Z* S: I5 Q5 A0 \1 w$ v可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40. R9 o  X$ ?5 `- N/ g8 Y. M* t
既然MTR换成64位浮点数这个bug就会得到修复,$ v3 m, ^( a6 g
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
' z' w. L, j0 N7 }5 E8 P, G. A
正确
  t+ B4 U7 E8 L- t# r/ j+ u但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅& g! h. t1 O9 p  E* q( {' }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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