其他

我的世界1.8.8版本实体碰撞箱探究问题

蛇科普***Lv.1 新手上路 发表于 昨天 22:54 IP:广东省 83 0
《我的世界》1.8.8版本方块碰撞箱性能问题探究
摘要
《我的世界》Java版1.8.8是红石生电玩家常用的经典版本,该版本存在一处知名底层性能缺陷:复合结构方块(普通箱子、陷阱箱、漏斗、活塞等)采用多段分离式碰撞盒实现判定。当玩家实体靠近这类方块时,游戏每游戏刻会执行多次碰撞AABB检测,造成额外运算开销,在浏览器Eaglercraft网页端等性能受限环境下卡顿现象会被显著放大。本文对该现象、成因、表现、规避方案进行整理分析。
关键词:Minecraft 1.8.8;碰撞箱;AABB;性能bug;Eaglercraft
一、现象描述
在Minecraft Java 1.8.8中,玩家靠近箱子、陷阱箱、漏斗、伸出活塞、楼梯等方块时,帧率明显下降,紧贴方块移动时卡顿感最强。
双格大箱子卡顿程度高于单个小箱子;密集连片摆放大量箱子、漏斗存储站时,卡顿会持续加重。
在Eaglercraft网页版环境中该问题尤为突出,网页WebGL运行环境算力有限,更容易直观感受到掉帧、画面滞涩。
同时附带衍生现象:贴着箱子移动会出现“粘脚”、轻微卡滞、实体位移不流畅的情况。
二、原理分析
普通完整方块(石头、泥土等)仅有单个1×1×1碰撞盒,碰撞检测计算简单。
箱子这类方块为实现开盖动画,被拆分为箱身、箱盖两套独立碰撞盒;合并大箱子之后碰撞盒数量翻倍。
1.8.8版本碰撞检测循环逻辑存在缺陷(对应官方工单MC-73302),实体进入方块判定范围后,游戏每tick反复遍历全部碰撞盒做AABB相交判断,带来大量重复计算。
漏斗会持续进行物品传输+容器读取,漏斗搭配箱子密集布置时,红石逻辑运算与碰撞检测开销叠加,卡顿进一步恶化。
该bug在1.9版本Mojang重写方块碰撞判定代码后被修复,新版本不存在该性能问题。
三、测试环境说明
游戏版本:Minecraft Java 1.8.8
运行环境:Eaglercraft网页端
测试对象:单箱子、双格大箱子、多组连片存储分类机(漏斗+箱子组合)
四、工程规避方案(红石存储站适用)
存储站不要一次性连续摆放大量大箱子,分组布局,组与组之间预留间隔,减少同一视野内复合方块数量。
网页端调低渲染距离(推荐4~6区块),降低同时加载、参与碰撞计算的方块总量。
减少不必要的紧贴堆叠漏斗,合理规划分类单元排布,不要过度密集。
尽量避免在高频使用、玩家长期站立的位置,大面积堆砌箱子阵列。
五、结论
1.8.8箱子等方块贴实体卡顿不是设备问题,是版本原生代码缺陷。该缺陷只存在于旧版碰撞检测系统,网页运行环境会放大卡顿效果。搭建红石存储、物品分类机的时候,通过分散布局、控制方块密度,可以有效缓解这个性能问题。

大家,由于我玩的是网页版,很明显太明显了。
(内容仅供参考,玩家自行探究,非官方论文!)
您需要登录后才可以回帖 登录 | 立即注册
本版积分规则