当前位置:首页 > 知识

我的世界漏洞

《我的世洞世界》Java版1.7.10有个著名的刷铁轨漏洞。玩家在铁轨旁边放一个活塞,界漏通上红石信号,世洞活塞推动铁轨的界漏瞬间用特定角度放置新铁轨,系统会判定铁轨被复制了。世洞这个操作需要精确到游戏刻——也就是界漏0.05秒的窗口期。我第一次成功的世洞时候,盯着屏幕上多出来的界漏那截铁轨愣了三秒,然后笑出声来。世洞这不是界漏什么官方彩蛋,纯粹是世洞代码没写严谨留下的后门。

漏洞这东西在MC里分好几种。界漏一种是世洞逻辑漏洞,比如刷物品、界漏刷经验,世洞本质上是游戏机制之间的交互没考虑周全。另一种是代码层面的,比如区块加载错误导致的地形撕裂,或者实体数量溢出引发的崩溃。还有一种是玩家故意触发的,比如利用船和地毯的碰撞箱做出来的“电梯”,严格来说不算漏洞,但利用了物理引擎的边界情况。

我记得有个版本叫1.8,那时候有个“地狱门刷沙机”的漏洞。具体原理是利用地狱门传送实体时的坐标计算误差,让沙子在下界和主世界之间反复传送,每次传送都会复制一份。这个漏洞后来被Mojang修了,但修的方式很粗暴——直接让沙子不能通过地狱门传送。结果玩家又找到了新方法,用矿车装着沙子过门,照样刷。这种猫鼠游戏在MC社区里持续了好多年。

说到区块加载,1.12版本有个特别离谱的漏洞。如果你在服务器里快速移动,比如骑猪或者用鞘翅飞,客户端会请求加载前方的区块,但服务器有时候来不及响应。这时候你看到的区块是空的,走过去会掉进虚空。但如果你在掉下去的瞬间断线重连,人物会卡在区块边界上,然后被弹到高空。我亲眼见过一个玩家用这个方法从基岩层直接弹到了建筑高度限制之上,整个过程不到两秒。

漏洞对游戏的影响其实挺矛盾的。一方面,Mojang每次更新都要修一堆漏洞,修完又冒出新的一批。另一方面,很多玩家就是靠这些漏洞活着的。比如空岛生存,没有刷石机漏洞你连圆石都拿不到。再比如技术向的服务器,红石大佬们研究出来的“无延迟电路”本质上就是利用活塞更新顺序的漏洞。你要是把这些全修了,游戏反而变得无趣。

我印象最深的是一个叫“末影珍珠加载”的漏洞。在1.14之前,你往一个未加载的区块扔末影珍珠,珍珠会强制加载那个区块,但加载出来的地形是默认状态——没有你之前建的东西,也没有你挖的矿。有人利用这个漏洞在服务器里复制基地,把主基地的东西通过末影珍珠传到“影子区块”里,再传回来,东西就翻倍了。后来Mojang改了区块加载逻辑,这个漏洞就没了。

有时候漏洞会变成官方特性。比如“爬行者炸毁地形掉落所有方块”这个机制,最早就是个漏洞——爆炸本该只掉落部分方块。但玩家觉得这样很爽,Mojang就没改,反而把它写进了游戏规则。还有“床炸末影龙”,本来是床在下界爆炸的代码没写好,结果成了速通玩家的标准操作。Notch当年接受采访时说过一句话:“如果玩家喜欢,那它就不是漏洞。”这话听着挺随意,但确实代表了MC的开发哲学。

现在1.20版本漏洞少了很多。Mojang用了更严格的代码审查,还引入了“漏洞赏金”计划,玩家报告漏洞能拿钱。但社区里还是有人怀念以前那种“到处都是漏洞”的日子。那时候你随便挖个矿都能碰到奇怪的事情,比如矿车突然加速、水流方向错乱、僵尸卡在墙里。这些漏洞让游戏显得不那么完美,但也更有生命力。

我到现在还留着1.7.10的整合包,就为了偶尔回去刷刷铁轨。那个漏洞早就被修了,但每次打开那个存档,看到活塞旁边整整齐齐码着的铁轨,还是会想起当年熬夜研究红石信号的样子。漏洞这东西,修不修是官方的事,用不用是玩家的事。而《我的世界》最迷人的地方,恰恰是它允许你在规则边缘反复试探。

分享到: