开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 7 E5 ^3 `0 M2 o/ B4 \; b

8 f6 S; `- x, W3 u1 f这个bug类似于旧版本边境之地的方块抖动,具体表现在:  M( d0 ]& [+ Z. V7 }* I

2 q! u6 _# l1 y4 P: c1 s- A% D当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。& K0 B- @0 Z/ A0 i
当坐标更大时,轨道甚至会出现扭曲的情况。! p- H- Q+ n( J
作为对照,原版的生物不会受到任何影响。
. a' H- z9 \: K' i! z/ u6 E版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug6 S1 ?4 v3 @. x. ]$ ^( T! L* P. {
6 u. T6 R7 W, D: p2 _
  N" t$ ^- L! W. }1 o

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了
, e0 g6 W+ e. r& Y% y9 B' ^; T建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
% m* S( W* O& y) L, ]* Y换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54& V3 ^/ ^: ?  b0 ]% P# ?
肯定是溢出了,估计是算曲线算出上限了1 _0 W, `2 F/ {) P* y& V
建议边算边取模(下意识

+ i* m5 C4 H  C5 c' ^) Z2 N! D; ?这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。) Q1 H$ C8 P& I5 @: [% n
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
. V/ V, N* v* i5 q( [这就使计算出的结果与应有的精确值产生误差,让它偏离位置。
* T: Q" I3 V  @2 i! y* u. F) \& P
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
0 X8 C( Y! C6 y5 f. S
Zbx1425 发表于 2022-12-19 12:58
4 u% V1 o5 T8 v, ]5 o  [MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
; V1 e% `. Y* u+ O+ R0 E' c- x3 I换成 64 位浮点数能让这些现象出现的位置更远 ...
# W. z+ q' \6 ?4 T# z- f, J
既然MTR换成64位浮点数这个bug就会得到修复,
, N0 b- V4 h5 ?- Z! H' L* T! I5 j/ {minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
0 A" K! R) x1 l: M
玩不到第三章汉化导致的
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01$ ]! R& t3 x5 |  P
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
6 j% {% n) Z$ T( s9 X4 Y8 v举例来说,如在十进制中,只能使用四位有 ...

0 z0 f: D1 u2 x" r: d# ~(为什么我回忆的概念都是小数精度损失是溢出的一种呢6 m$ a0 M* n" c6 t0 _2 i
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:409 |$ L7 @. [1 R) b; j6 |/ `
既然MTR换成64位浮点数这个bug就会得到修复,# b' l4 x2 K( e( k0 K- Q( A
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...

9 f/ K9 C4 x3 M- a# s6 \3 m正确
5 J: I( v. b; \1 p8 Z3 a, k* f5 Z但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅0 y1 E, S# H$ M" b: `
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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