开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑 - }% r! \9 @- ^: I

! Y0 O8 W1 ?& ^1 s, F这个bug类似于旧版本边境之地的方块抖动,具体表现在:' \1 A4 \. a; o5 W8 k  O( v1 V
! p; T8 O. _2 ?0 m; H
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。$ F: z* Q5 ^. }8 S8 D6 Q1 x
当坐标更大时,轨道甚至会出现扭曲的情况。4 h7 Q% C! s5 y% b; L" J- ~, d+ z. q" ~
作为对照,原版的生物不会受到任何影响。
2 z, Q9 K6 q1 r版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug; @9 x5 m0 j: [( o% [

: D6 J7 M- t+ S  q) L  f
5 l7 m8 o0 |4 b: s1 V7 w' x

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了# `+ r: v, z' t9 B  x. [
建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。
5 ]" d- ]9 Y% n/ Q换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
" V) b/ k7 G; L" ]  g肯定是溢出了,估计是算曲线算出上限了9 N8 B9 }0 J. R4 z
建议边算边取模(下意识

6 D9 E  v7 c! [. d5 c6 i这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。7 s7 |. n. T: `( @5 l" D
举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。1 r) `5 b# K( J, W  r- u1 e; J
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。& i! b7 _9 M8 A4 k" M
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
0 U9 s. U2 D1 {3 M
Zbx1425 发表于 2022-12-19 12:58: j# C2 n/ n7 c# t
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。7 i1 t# ^3 a. f& V
换成 64 位浮点数能让这些现象出现的位置更远 ...

6 C/ H# ?2 T$ e: W( ~* ^0 U既然MTR换成64位浮点数这个bug就会得到修复,
( y8 j/ Q1 K8 c: C" \! f' ?- Lminecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?
+ T$ l& X+ C) x* E; Z
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01( e7 J: d+ C) A# ^" s  x$ f9 Z
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
6 P. T4 g1 k* a( M举例来说,如在十进制中,只能使用四位有 ...

) F- d2 r* W* c4 a( Z(为什么我回忆的概念都是小数精度损失是溢出的一种呢, B: A) ]: |+ D
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
- `/ }; {) {+ H* ?/ K% r既然MTR换成64位浮点数这个bug就会得到修复,) U- `  H8 i+ @! s- \
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
: x# S/ }1 |1 F
正确
* Z/ r5 z4 H6 a7 Z6 ~$ p# O但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅
, v3 b7 K$ a. w0 ?; {- W- l9 K
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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