Minecraft 为什么要限制地图高度? - 知乎

文章推薦指數: 80 %
投票人數:10人

这个问题得怪mc自己的一些机制上的问题。

首先,排除一些其他原因,比如早期(至少1.0时期)天空高度限制是128,后来改到256,但是这只是建筑高度,玩家可以飞得更高( ... Minecraft(游戏《我的世界》)Minecraft:BedrockEdition(《我的世界》基岩版)ModsForMinecraft(《我的世界》模组)我的世界地图MinecraftServer(我的世界服务器)Minecraft为什么要限制地图高度?这题当归属于编程大佬们显示全部​关注者76被浏览215,126关注问题​写回答​邀请回答​好问题5​4条评论​分享​27个回答默认排序熊孩子​Minceraft/三国闪/BRAINISEMPTY362人赞同了该回答这个问题得怪mc自己的一些机制上的问题。

首先,排除一些其他原因,比如早期(至少1.0时期)天空高度限制是128,后来改到256,但是这只是建筑高度,玩家可以飞得更高(至于是TNT炸上去还是鞘翅飞上去还是一根2147483647级的激流直接上天就看个人意愿了),至少表明y坐标限制并不是不能突破(区别于x/z=±30000000的世界界限,那真的是改坐标都出不去)。

那么问题出在哪儿?存档机制本身是一个威胁。

mc的存档每个.mca记录32x32共1024个chunk(@海东喵所以面积上好像真的是512*512?),分成1024个存储对应区块内全部信息的Chunk[x.z]文件,每一个里用Sections这个Tag_List记录这个区块内存档的方块信息,包含共计16个Tag_Compound,每一个复合标签由一个“Y”值标记其存档的信息的所属位置(这个即所谓的subchunk的由来),Y:0表示y轴区间0~15,Y:1表示16~31……[1]。

经验表明,主世界通常平均会用到大约7个subchunk(实际上Oceans及变种最少,只用到4个,一般的平原森林在5个左右,带hills能到6个左右,mountains、plateaus以及有大树的那些比如giant_tree_taiga、jungle等一般在7~9个,特例是shattered_savanna及其plateaus变种,最平的时候5个,最高16个)。

换句话说如果y轴高度提高的话,很可能需要同步提高一下各个生物群系的比例,这可能导致存档变得非常大。

但是,如果一个subchunk里面没有一个方块(哪怕曾经)被填充为不是空气的方块的话,这个subchunk就根本不会计入存档。

此外,subchunk的Y并不一定非得连续。

删区块存档信息的经验表明Y:6后面是真的可以直接Y:8的,这也就意味着只要生成世界的时候DepthBaseSize(貌似叫基准深度大小?)[2]这东西不怎么变的话,大量空闲空间其实根本不占存档;区块加载机制是另一个威胁。

mc对区块的加载是(除通过技术手段强制加载区域外)以每一个玩家为中心视距为半径加载里面所有区块,但是每个区块均是直接全部加载完,这就导致如果区块的y轴能不断建筑上去的话,每个区块的加载负担就会越来越大,毕竟承载的光照计算和实体动作也越来越多(其实这也是曾经的farlands(边境之地)特别卡的原因之一[3],虽然不是主要原因)。

顺便一说,记忆中多年前贴吧就有讨论过是否可能让y轴变得跟xz一样大范围存在,或者直接把整个世界立过来。

当时的结论是其实是也不是不行,只要y轴也跟xz轴一样区域性加载就行了。

所以,最主要的问题可能还是出在Mojang上,毕竟是Mojang,不懂mc,懒得要死,负优化,还经常制造bug。

如果mojang愿意正优化下各种机制的话y轴再拉高一些也不是做不到。

参考^https://minecraft.gamepedia.com/Chunk_format^https://minecraft.gamepedia.com/Customized^https://minecraft.gamepedia.com/Farlands编辑于2019-12-2119:55​赞同362​​60条评论​分享​收藏​喜欢收起​MineCommanderThink,Create,Play65人赞同了该回答1.过高的高度会影响游戏运行的性能,因为增加了需要处理和渲染的空间。

2.多出来的空间也会保存在地图文件中从而增加储存负担。

我至今玩过最大的存档有1.4gb(不包含datapacks)3.多出来的空间也没有意义,除非是特殊的cb研究(写bug)或是世纪伟大工程,用到的y轴空间很少超过200。

编辑于2019-12-2320:43​赞同65​​6条评论​分享​收藏​喜欢收起​



請為這篇文章評分?