开启左侧

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

[复制链接]
-DKZ4- 作者认证 2022-12-19 12:43:09
本帖最后由 -DKZ4- 于 2022-12-19 12:46 编辑
( n: x3 ?4 A7 T8 i2 E( z; I9 U2 O( N9 \6 b/ N# l$ f9 {
这个bug类似于旧版本边境之地的方块抖动,具体表现在:
: ?9 K; O2 ^6 H- W9 l
9 \. \: h" f1 S0 i# \7 G当坐标大于100000格时,MTR列车、轨道会在移动视角时产生轻微抖动。
9 j8 @& [; M9 X3 }7 k7 \+ a8 ~4 B当坐标更大时,轨道甚至会出现扭曲的情况。
# B, e/ X- b, C& T: z作为对照,原版的生物不会受到任何影响。
$ C! \% Y, u8 ^! `) B版本1.18.2 Fabric,在服务器和单人存档均测试过,都会有bug
3 \; ]2 K' Y2 ^8 y) I, @, b, t# O

; s0 w7 V" M, L

本帖子中包含更多资源

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

×
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 12:54:33
肯定是溢出了,估计是算曲线算出上限了
  i2 r8 R3 }+ d0 q* s. n: V建议边算边取模(下意识
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

Zbx1425 作者认证 2022-12-19 12:58:08
MTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。" L/ B2 T( v, K/ l; M# ?' d5 d3 Y# V9 H
换成 64 位浮点数能让这些现象出现的位置更远些,但这就要进行很多的改动。考虑到不常有人有需求建造如此大规模的系统,或许不太值得做。

评分

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

查看全部评分

回复

使用道具 举报

Zbx1425 作者认证 2022-12-19 13:01:53
XHG78999 发表于 2022-12-19 12:54
3 a6 u- V7 u3 F0 P, Z" L+ h肯定是溢出了,估计是算曲线算出上限了
# W9 u* V- R$ x$ I' t建议边算边取模(下意识

, b1 Z$ d0 @/ o% |. |) @( f这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。
; ?) O3 f1 b  I+ g  A" x6 J举例来说,如在十进制中,只能使用四位有效数字的情况下,可以正常表示 1.4 和 1.5;但 1234.4 和 1234.5 就无法区分,只能退而求其次都成为 1234。
+ k. }# K- `; q* V这就使计算出的结果与应有的精确值产生误差,让它偏离位置。
! w7 x2 P2 }) g/ O# N
回复

使用道具 举报

大宝剑呀 2022-12-19 13:34:34
竟然还有这种bug
*ููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็新喷射字符                                  *←已绝版的喷射字符
欢迎使用大宝剑的实用工具模组     B站:大宝剑呀404
回复

使用道具 举报

HXD3 作者认证 2022-12-19 13:40:00
本帖最后由 mtrrtrain 于 2022-12-19 13:59 编辑
4 G$ M! |5 L$ n- n" |+ D
Zbx1425 发表于 2022-12-19 12:58
# @2 n: H) F' N: W! I4 _0 vMTR 内部大部分计算现使用 32 位浮点数,所以会有精度误差。$ S6 p% Q% z' c, v% y4 P" q
换成 64 位浮点数能让这些现象出现的位置更远 ...
' A  l. v- |8 c4 s
既然MTR换成64位浮点数这个bug就会得到修复,! h' R# k8 ~; v+ A5 r$ o
minecraft老版本的边境之地bug之所以被修复是不是因为把32位浮点数,换成了64位的?6 Q9 r. i* g0 ~- \# z
hokoubengclaft
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:30:33
Zbx1425 发表于 2022-12-19 13:01' r% O# k) u5 u) y5 L' I) l
这个不是溢出,是浮点数有效数字有限使得它不能准确表示大数字。8 C2 Y! O, f- k: Q! W1 G
举例来说,如在十进制中,只能使用四位有 ...

9 Z% a3 q4 v8 R; O' s+ K) M5 {(为什么我回忆的概念都是小数精度损失是溢出的一种呢% C7 c+ L! J0 n
可否像Farlands一样直接热替换呢
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

XHG78999 作者认证 2022-12-19 14:31:26
mtrrtrain 发表于 2022-12-19 13:40  H: ]! a. |" T+ s" Z$ h
既然MTR换成64位浮点数这个bug就会得到修复,- F. Z, \& F* T: i/ X( s
minecraft老版本的边境之地bug之所以被修复是不是因为把32位 ...
, y0 s" r" U9 O1 {! `, m
正确
+ m; {1 H) A6 ~5 J但是如果你用热替换把64位强制改成BigInteger然后突破边墙就可以复现边境之地
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
回复

使用道具 举报

yuxihe 2022-12-19 15:15:02
1919(警撅+ b3 u9 f& i  |7 a( v! c
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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