🔥手机输入,格式靠emoji见谅。
🔥这两天研究mc的区块加载机制。
😯发现在1.18加入模拟距离更新后,许多科普区块的文章和视频都讲不明白了,没有涉及我需要了解的细节。Wiki也看了点,但是没抓住要点!
🐴这些细节又是我认为的基础的一部分,正好整理出来问下大伙
🧐🧐🧐nerd预警。
测试版本:1.20.1
🐧声明,我用tweakeroo灵魂出窍来查看区块渲染状况。
👇问题:👇
1. 👀确认:“这样理解可以吗”:
「渲染距离」是[方块+实体]状态的渲染画面呈现,而「模拟距离」对应了[实体]状态的计算,因此,游戏默认情况下两者相等,但两者可以不一致---
🤯渲染距离更大,那么将看到差值区间的区块有方块的渲染,实体不更新
🤯模拟距离更大,那么就是玩家只看到渲染距离内的方块,以及一部分更新中的实体,就像“人在雾中”,雾外是差值区间的区块,区块里的实体在更新,但看不见。
2. 两种距离覆盖范围的“形状”:
2.2 小问题😅:我不知道怎么查看模拟距离的范围,用什么工具可以查看?
🧐实测发现,1.20.1 渲染距离是球形,半径为渲染距离
1.17却是方形,(边长-1)的一半为渲染距离
我还却碰到一个细节:设置值和实际不是一直都是对应的,好像出区块方向会少1距离,反向会多1距离(不是重点)
✨那么✨,是不是
🧐1.18以前,两种距离都是一种,渲染距离🟩模拟距离🟦正方体,比如5x5 chunk那就有25个区块被模拟并渲染
🧐1.18之后,渲染距离是🟢圆形,模拟距离为🟦正方形?两者相等,则方形切内圆,更进一步,圆形切内方则是渲染到所有更新实体,这就需要渲染距离为模拟距离的√2倍?
3.👀确认:
1.18后的语境是不是把“加载”区块或者“Load”Chunk默认狭义上➕指向“模拟距离”对应的“实体更新”范围?
广义上➕则认为两者是一致的时候的模拟距离范围(或者1.18前的仅渲染距离情况下的渲染距离范围)?
🧐这个问题是为了确认理解。我认为渲染只负责图像,模拟负责实体计算,模拟之后渲染,或者不模拟直接渲染,或者直接模拟不渲染,或者不模拟不渲染。
4. 服务端的渲染距离,服务器的模拟距离,客户端的渲染距离,客户端的模拟距离...“可以...这样理解吗?👇”🤯🤯🤯
🐴服务端server.properties下面确实也有这两种距离的设置,但服务端端是命令行控制台,我想不需要渲染什么图形吧,所以我认为
🤯服渲染距离为 客渲染距离的父集,不影响太多性能?
🤯服模拟距离为 客模拟距离的父集,影响很多性能?
🧐也就是说假设玩家a电脑好,想渲染32区块那么远,也需要服务器允许你渲染到那么远
🧐或者想模拟很远的运算,也需要服务器本身模拟距离比他的高,否则如果客模拟设置很高,大于服模拟,多出的部分也是空运算?
🧐反之,我电脑差,我只渲染2区块,模拟5区块,也是取了服务端提供的渲染/模拟资源的子集?
因此理想的服务端可以设置中高渲染距离,中低模拟距离,以适应高配玩家的需求?