开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
4 G: Y" ^, f; n- U( `' Q9 Z! C5 L5 @0 J1 t) e
这个bug类似于旧版本边境之地的方块抖动,具体表现在:( s4 u1 M) ^- l
+ z# g7 Z' ~# E3 u, ]& T2 V
当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。$ s  N/ K+ f% Y; v  d
当坐标更大时,轨道甚至会出现扭曲的情况。7 x/ H* Z! y% ^+ c
作为对照,原版的生物不会受到任何影响。1 G+ ?1 T+ G$ b/ T4 y
版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug, h) v. T$ n7 n5 S4 Q# _7 b

: `) {2 B- y' B) _: C6 G1 P4 E+ O# y: w

本帖子中包含更多资源

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

×
头像被屏蔽
XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了
$ b$ p6 c6 g) W, t9 q; \. A建议边算边取模(下意识
签名被屏蔽
Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。9 o4 J7 N! v3 L! G/ S
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54$ ]( W# L( \, g# H8 @
肯定是溢出了,估计是算曲线算出上限了# M1 p5 n8 ^4 e+ S
建议边算边取模(下意识
; f" {, I6 G  p+ R6 Q5 v6 x- @* H1 b
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
7 Q/ N$ _1 u2 ]: A0 o# ]举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。9 ]8 d! T- m9 h- L3 X. }4 D
这就使计算出的结果与应有的精确值产生误差,让它偏离位置。8 G9 S, [* Y2 W/ ~
大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
我贺知章一样       B站大宝剑呀404
HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
6 ]9 H" {: l1 c2 E8 L: n
Zbx1425 发表于 2022-12-19 12:58) E( q. u) Y  `2 g- Q5 E! E5 P
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。6 R0 q! k. o4 [! I* Q+ r) P, A
换成 64 位浮点数能让这些现象出现的位置更远 ...

4 s4 A6 r( s7 c* {: y既然MTR换成64位浮点数这个bug就会得到修复,) {3 p0 L/ p% E" x2 Z
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?1 e0 E* q( {0 F! z( L
这到底我滴妈是什么鬼东西我的妈啊我妈这到底是什么鬼东西我的妈我这是怎么什么我的天这到底是什么我的妈这到底是什么什么鬼东西我的天啊我去这到底我的妈啊我这到底是什么鬼东西我这去这到底是什么啊的妈妈咪我去我到底我滴妈是什么鬼东西我的妈啊我妈这到底是什么鬼东西我的妈我去这是什么我的天这是到底是什么我的妈这到底是什么什么鬼东西我的天啊我去这到底我的妈啊我我的天啊不是这到底是什么鬼东西,我去我的妈妈啊我的天啊这到底是什么我去我妈啊这到底是什么我的妈啊这到底是什么鬼我的我的天啊不是这到底什么鬼东西我去是时候🤪
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01' e# Q7 w3 I0 m) Y% n+ E
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
- |6 C7 ^( }& Z3 b& o. V" q3 _举例来说,如在十进制中,只能使用四位有 ...

- E0 }" F0 B! Q' s8 @* s(为什么我回忆的概念都是小数精度损失是溢出的一种呢+ Y2 Y9 ^$ ]; U$ g3 F- `
可否像Farlands一样直接热替换呢
签名被屏蔽
头像被屏蔽
XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40
- B- `! |# s( M3 y6 u4 d既然MTR换成64位浮点数这个bug就会得到修复,5 y' T* H* Y# L) c+ P3 M: q
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
- u' R+ u! D+ F* w
正确0 `+ V3 I& n  V* q# ]" U
但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
签名被屏蔽
yuxihe 2022-12-19 15:15:02
1919(警撅% @2 b; G5 z* ]$ z: u9 P+ [5 V& K
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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