卖出1.76亿份后 这款史上销量最高的游戏还在继续创造奇迹 上个月,《Minecraft》,也就是《我的世界》官方,宣布这款游戏已经卖出了1.76亿份。 这个数字除了能让人感慨一声“卖得真多”之外,还有着更重大的意义——它代表《Minecraft》终于超越了售出1.7亿份的《俄罗斯方块》,成为了有史以来最畅销的电子游戏。就在去年10月,官方宣布的销售数字还只是1.56亿份。也就是说,过去半年里,《Minecraft》又卖了2000万份,而这款游戏距它最初公布已经有十年之久了。 关于《Minecraft》为何能有如此长久的生命力,公认最重要的原因当然是“超高的自由度”。自由度在《Minecraft》里意味着很多东西——有人在这里和朋友一起放牧、耕种、狩猎、建设家园,日出而作日落而息,仿佛在游戏中再活了一次;有人在这里大兴土木,把现实中的种种宏伟建筑原样复制到游戏中——故宫、金字塔、卢浮宫……时至今日,几乎所有世界知名建筑都在《Minecraft》里被玩家造出来过。 《Minecraft》版故宫的俯检视,一共用掉了一亿个方块 这些玩法大多已经广为人知。但《Minecraft》的自由度不仅仅限于这些,十年里,玩家们在这款游戏里还创造了更多的奇迹。 超越光速 如果问一名普通的《Minecraft》玩家,他在游戏中怎么样去旅行到远方,得到的答案多半是步行、骑马或者修建铁轨然后做矿车去,如果他再资深一点,可能会提到鞘翅火箭这种航天工具。大部分时候,这些在现实世界里也有的常规旅行方式足以满足玩家的旅行需求了。 然而不管是航天还是陆运,这些交通工具似乎都有些无聊,还在游戏开发者预想的框架下。玩家们当然没有满足于这些正常的旅行方式,他们想找到能打破游戏中物理规律的办法。 和现实世界的光速(约等于30万千米每秒)限制类似,在《Minecraft》中,物体的理论速度是有上限的。游戏以一刻(0.05秒)为最小的时间单位,开发者规定了每个生物一刻只能穿过一个区块(16米),换句话说,《Minecraft》中的光速是320米每秒。 玩家们曾经多次触及光速上限。最开始是利用Bug,知名技术专家Panda4994在某个版本发现可以伸缩推动物体的活塞方块有某种判断漏洞,利用巧妙的装置可以让玩家不断加速,直到达到320米每秒的理论极限。 他用这个Bug修建了光速推进器,这是《Minecraft》中玩家第一次达到光速。
利用Bug的光速电梯
这个Bug很快被修复了,玩家们也失去了光速移动能力。但不久之后,另一位玩家就做出了不利用Bug的稳定光速电梯。他发现游戏中的耕地在变回普通土地的一瞬间,会把上面的物体弹开,不断叠加这个效果就能实现光速爬升。
光速电梯的慢速原理图
最后,连光速也没能拦住玩家们——几年前,有玩家建造出了可以超越光速移动的“珍珠炮”。
这一技术的原理并不复杂。游戏中有一种名为“末影珍珠”的物品,玩家将珍珠扔出去后就会瞬间传送至珍珠落下的地点,因此,把玩家手上的珍珠打得越远,移动的距离也就越长。
最开始玩家们只能用最原始的爆破发射:在即将爆炸的一瞬间把珍珠扔到上面,爆炸会把珍珠炸到很远的地方。这种方法既没法控制最后到达的位置,实际上也飞不了太远。
简陋的驱动珍珠炮
为了改进珍珠炮,玩家们动用了Minecraft宇宙中几乎每条已知的物理规则——用活塞取消珍珠的不稳定动量、把上千个压缩到一格以增加爆炸强度……再加上反复的实验和大量的计算,他们为了这个专案几乎从头建立了《Minecraft》物理学,有重力公式、惯性公式和全套的计算方法和单位。最终,超越光速的完全体珍珠炮诞生了。
珍珠炮全景
末影珍珠从大炮底部进入,被活塞装置推到顶端,以消除所有不稳定的力。在珍珠登顶的那一瞬间,上千个同时被引爆,巨大的爆炸冲击波把珍珠送到几万米之外——它飞往哪个方向,会飞过多少米,最终落在哪里,都可以被精准计算出来——玩家会在珍珠落地的瞬间被传送到万里之外。
珍珠炮的计算公式
理论上来说,珍珠炮的速度是没有上限的。只要扩大装置,填充更多的,就能无限制地增加传送的距离。完成这一奇迹的SciCraft团队把解说视讯释出到了Youtube后,有人在视讯下评论:“在游戏里,你们征服了爱因斯坦没能做到的事”。
一格水能浇灌多少土地?
在《Minecraft》里,只有受到灌溉的湿润耕地才能种植作物。这要求耕地附近必须有水源——具体来说,是周围水平4格内必须有水源。
那么一格水能浇灌多少土地?最标准的答案是80格:以水为中心,一个9×9的正方形,减去水本身,正好80格。
最常见的农田设计
然而,如果答案就是这么简单,那《Minecraft》也就没有那么吸引人了。很快就有人提出,水是可以无限向下流动的——因此一格水其实不只能灌溉同平面的耕地,还可以往下灌溉。
那么在一个正常255格高度Minecraft世界里,一格水能灌溉多少土地?
最开始,有玩家把平面的农田方案套到立体农田上,算出答案是80×255=20400。这个答案很快被否定,因为“第0层可以额外流出8格水”,进行微调后, 20776格耕地。讨论在这一步停滞了很久,大家为了第0层的问题纠结了很久,加加减减,总是脱不出2万这个数字。
直到有玩家发现,没有人规定水只能垂直流动。
这让问题的性质完全不同了。玩家们发现自己之前陷入了思考盲区,一格水可以在平面上延伸8格,这8格距离改变了一切。
一位玩家简单设计了新的立体农田——说简单,其实也引入了曼哈顿距离这种比较复杂的几何概念。他总结,想让水在一个水平面传播得最广,最后一定会被剔成+++++的结构,整个田地应该是菱形的。但他没能计算出具体的答案,只得出“一桶水能灌溉好多耕地”的结论。
不过他的设计启发了其他玩家,有更多人真的开始动手实验并计算结果。一位玩家从最基础的垂直水流出发,逐步改进自己的方案——让水走之字形、把一格水变成多条水柱,最后得出了一个金字塔形的结构,算出一格水最多能浇灌5000万耕地。
来自知乎使用者“荆哲”的设计方案
然而这仍然不是正确的答案。另一名玩家指出这种金字塔设计“把每一层空间利用得太绝了”,反而导致纵向空间的利用率“减少了一倍。”他在每层牺牲了2格,成倍复制了之前的金字塔结构,构建了一个“塔型结构”,最后用一个有3层括号的复杂式子(∑(m=0~127){∑(n=1~2m+1) [128n+16(n-1)+16x2n]+64(2m+1)+16}=248292352)计算出结果是2亿4千多万。他还用Excel表格做了一个原理图,不过恐怕还是没几个人能看懂。
2亿4千万方案的原理图,来自知乎使用者“熊孩子”
这个方案也不是最终结果。很快又有人从边缘和堆叠挤出了3000万格,把答案增加到了2亿7千万。更多的玩家猜测,这也不是最终答案……
奇妙的是,如果问题变成“两格水能灌溉多少耕地”,答案就变得异常简单:无限格,因为在《Minecraft》两格水就可以制作出无限水源。
手机、计算机以及更多的……
红石是Minecraft中最为奇特的存在。普通玩家几乎完全用不到它,而真正会用它的人能把Minecraft变成完全不同的另一个游戏。
简单来说,红石是Minecraft中的电源。玩家可以通过红石火把、红石粉把电源接出来使用,就像电线和电线杆一样,再加上红石中继器、红石脉冲等物品,可以组成最基本的逻辑电路。
红石遵循着和现实里电路一样的规则,这就够了。计算机无非就是由电路组成,逻辑单元、储存器、输出输入装置,这些都可以用红石做到——而Minecraft玩家的一大特点是,只要能做到,他们就一定会做。
早在2014年,就有国内玩家造出了能进行加减乘除、三角函式和矩阵运算的计算机。这位名为季文瀚的玩家从已有的16bit红石整数计算器出发,改造出了可以执行复杂计算的微。他用了一年多的时间,最终把微完善成了现代意义的计算机。
季文瀚的Minecraft计算机结构图
两年之后,又有人用红石电路做出了4核8执行绪的多执行绪CPU。这个Minecraft CPU能完成现实中CPU能完成的几乎所有指令;虽然主频很慢(只有0.043Hz),但它已经支援多核并行技术,这是超级计算机最主要的核心技术。CPU的开发团队称“这意味着有一天,在Minecraft内部也可以出现超级计算机”。
实际上,如果不仅限于纯净的原版游戏,而是允许加入mod,红石能实现的东西就更多了。有国外玩家造出了能实现游戏内外沟通的手机,让自己和Minecraft中的自己完成了对话。
为什么Minecraft的玩家们要在一款游戏中花费巨大的时间精力做出这些奇迹,对此,造出超光速珍珠炮的SciCraft团队中的一名成员有一个简单的回答:“因为我们能”。