你所不知道的Minecraft——Minecraft科普知识整理

前言

作为游戏玩家,在Minecraft(简称MC)的世界里我简直是菜鸟中的菜鸟,但是MC超高的自由度还是让我沉迷其中。而MC的魅力不仅仅在于游戏本身,对我来说游戏之外的MC也同样精彩。我敬佩于原开发者Notch(Markus Alexej Persson,中文:马库斯·阿列克谢·泊松)是怎样的脑洞在工作之余够构思出这么一款神奇的游戏,惊讶于在这个动不动就是4k级画质游戏的今天它仅仅靠着一堆粗糙的像素块就赢得如此多玩家的心,更加感慨无数的mod开发者的共同努力造就了今天Minecraft的辉煌。因此我怀着浓厚的兴趣和崇高的敬意在网上查找着MC的资料,整理成这篇科普性的文章,所以实际上本文的标题也许应该修改为《我所不知道的Minecraft——Minecraft科普知识整理》。

Minecraft

Minecraft的前生今世

Minecraft,中文名:我的世界,是由Mojang AB(创始人Notch)开发的高自由度的沙盒游戏,2009年发布,仅仅过了5年的时间,Minecraft就成为史上最畅销的PC游戏。

Minecraft的开发始于2009年5月10日,《矮人要塞》、《模拟乐园》、《地城守护者》和《Infiniminer》等几款游戏的启发,Notch创作了Minecraft。当时Notch为了专注于独立开发最,开始还维持在Jablum网站的全职工作,后来就该做兼职了,随后他索性就辞去了工作,并建立了Mojang AB公司全力开发Minecraft。

Notch

2011年8月16日,使适用于索尼Xperia Play的便携版本发布,随后适用于所有Android版本也于10月7号发布,iOS版本则于11月17号发布。

2011年11月18,Minecraft的官方正式版发布。

2012年5月5日Minecraft登陆Xbox,短短数小时内就回收了开发成本开始盈利。

2013年2月11日,树莓派版发布,其为树莓派独占,其基于携带版本开发,开放源代码。树莓派版本意在故意编程者学习编程,使用其API修改游戏代码。

2014年9月15日,微软以25亿美元收购Mojang工作室,收购后Mojang,Notch本人、公司CEO Carl Manneh和联合创始人Jakob Porser将会离开公司,至此游戏史上一段传奇的经历终于告一段落,Minecraft终归微软的门下。

Minecraft迷人的原因

作为一个没有接触Minecraft的人,看到其他人如此痴迷于一个粗糙画质的游戏里时候,总是会非常好奇,到底是怎样的魅力让Minecraft能够吸引如此多的玩家?在我个人主要原因有如下几点:

  1. 自由、可交互

    自由是Minecraft最大的特点,在Minecraft那近乎无限大的地图空间里,你可以做任何事情,你也可以任何事情也你不做。正如其中文名“我的世界”那样,在游戏里你会觉得整个世界就是你的。

    另外可交互也是Minecraft拥有极高的可玩性的原因。由于Minecraft是方块组成的世界,而这些方块被赋予了各种各样的属性,因此Mincraft中所有物体都是“实实在在”的物体,而不是和其他游戏那样仅仅是一张视觉上的贴图。所以在Minecraft里你可以砍树、可以挖矿、可以种田,你可以破坏任意看起来像边界样的东西(当然基岩除外~~),你也可以用方块创造任何一样东西。

    玩家在MC中的设计
    玩家在MC中设计的建筑

  2. 红石系统

    直到现在,我都觉得红石系统真Minecraft中天才的设定,它的出现使得在游戏中实现自动化成为了可能。玩家们因此也乐此不疲地充分发挥自己的想象力,各种自动农场、自动刷怪楼、自动养鸡场、红石音乐、红石武器层出不穷。不过我想即使是Notch和Mojang AB也可能会难以想到,竟然有玩家借助红石系统实现各种电路器件,更有甚者直接在游戏中直接做出了一台计算机!真是脑洞有多大,世界就有多大!我也许永远也料不到那些高端玩家们,下一刻会用Minecraft玩出什么新花样出来。

    红石实现电路的逻辑门

  3. 分享与创作

    尽管Minecraft是自身就是一款非常优秀的游戏了,但是Minecraft能在短时间里流行的原因很太程度上在于玩家们互动和分享,而在游戏制作之初官方几乎是没做什么宣传和推广。创建服务器后,Minecraft就是一个MMORPG,能够让更多的人一起在游戏的世界里探险、竞技或是创作,同时不少玩家将他们玩游戏的经历录制成视屏发到视屏网上分享给更多的人。

    而在此之上插件和MOD的出现,又让Minecraft的可玩性又上升一个等级。插件和MOD都是利用开发者们从Minecraft中提取出来的API,对原始游戏进行修改的二次开发的程序包。因此在Minecraft里,你可以不仅仅是一个玩家,还可以是个开发者。由于MojangAB对MOD开发者们的友好的态度,所以基于Minecraft官方版本的各种第三方MOD就不断涌现出来,而这些MOD是集合了全世界玩家的脑洞与智慧的。于是大家都调侃道,换一个MOD,或者仅仅是换一个材质包,你会发现你们玩的根本不是同一个游戏。

    GTA5风格的MOD
    射击类MOD

  4. 商业模式

    商业模式上的成功,我是不怎么懂得,但是仍然是得益于Minecraft极强的可塑性,让不少Minecraft各种大型服务器的兴起,由于通过插件或Mod,这些服务器的管理员能够有足够的权限自己Minecraft服务器中定制自己的游戏玩法和游戏规则以及付费特权等级,而Minecraft超高的人气也让这群人,能够从普通玩家哪里收获不少的回报。

    但是也正是由于某些服务器的收费太过火,导致Mojang不得不出台EULA规定来强制限制,不过这也导致了后面Minecraft服务器的衰退。

你所不知道的Minecraft

  1. Minecraft地图多大

    虽然Minecraft的地图足够大,但是还是有边界的,以1.8以后的版本为例,在MC中文Wiki中有说明:

    “在1.8及以后的版本,分布在X/Z 29,999,999以外的假区块将不被渲染,就像在万圣节更新之前的版本中 X/Z 31,999,999 以外的区块不会被渲染。同样的,用于防止玩家进入更远的地方的隐形墙也会被移动并改为新的 世界边界,允许玩家利用”/worldborder center”命令进入X/Z 30,000,000 以外的区域并移动边界。 然而,如果玩家试图越过这道界限,无论是单人游戏还是多人游戏,玩家都会“掉线”,并发送信息显示玩家进入了“非法区域”,当玩家重新进入游戏是,他们会出现在他们越过世界界限之前的位置。值得注意的是,如果玩家利用传送的方式越过边界,那么他会永远的停留在“非法区域”并再也不能玩那个存档。 使用地图编辑器或者“NBT editor”修改玩家所处位置可以弥补这个错误。”

    有玩家按照之前正负32,000,000为边界,每个方块1m来换算参考视屏,那Minecraft的世界足足有8个地球表面那么大,当然这些知识理论的计算。

  2. Minecraft为什么需要启动器

    Minecraft需要启动器的原因只是因为它是Java编写的,而java程序依赖于JVM虚拟机,但是JVM需要传入相应参数才能让java程序正常运行,所以启动器最核心的功能就是完整这个传参的作用。

    对于Minecraft来说,在版本一次次更新后,启动器要完成的任务也越来越多,主要有如下几点:

    1. 设置JVM的运行java程序的环境,如设置JVM内存、垃圾回收机制
    2. 加载各种需要的类库
    3. 管理资源文件
    4. 正版登陆以及验证
    5. 版本管理,让多个MC版本共存并自由切换使用
    6. 依赖管理
  3. Minecraft中MOD和插件的区别

    插件只面向服务器,只能一定程度上修改服务器端的逻辑,往往依赖于一个成熟的API(如Bukkit),不同版本的差异非常小。

    MOD则是基于对Minecraft相对较深的定制,大部分模组客户端和服务器都需要,由于涉及到了比较核心的代码,所以版本之间差异较大一般不兼容,现在MOD使用的API大多是使用forge的。

    由于插件和MOD分布式基于不同的API系统,所以在没有整合前是不能通用的。

  4. 不是开源的Minecraft为什么可以二次开发

    确实Minecraft代码没有开放,但是可以通过反编译得到源码。不过反编译的代码实在太难用了,虽然通过了编译的代码在清晰上肯定还是比不少原始代码,不过这口锅主要还是得由Mojang来背,由于Notch最开始的只是自己玩玩,到了Mojang时也只是以小规模的产品去设计,导致后面可扩展性就是一个坑。

    但是在2010底,一个叫hey0的大神发布了hMod在之前比较混乱的源码之上整理出一套还能够给开发者使用使用的代码,可惜原作者更新了一段时间后就离开了。接下来的任务交给了Dinnerbone,不过Dinnerbone后面决定推倒重来,于是就有了Bukkit计划。对于开发者的我来说,这段历史对我确实很有吸引力,所以这里的信息会收集的详细一点。

    Bukkit计划世界实际分两个部分:Bukkit API 和 CraftBukkit。Bukkit API是抽象接口,CraftBukkit为具体实现,下图为知乎作者 Tiger Tang的原图:

    Bukkit项目

    使用Bukkit API开发的小程序一般就同成为插件(plugin),由于后面各种原因Bukkit的原开发团队核心成员的离去,其开发速率越来越慢,所以许多人私下制作CraftBukkit的优化版本,这其中最有名的是md_5的Spigot,而为了解决多服务器同步和通信问题,md_5和他的团队有共同开发了Bungeecord。

    在另一方面,客户端上,另一群开发者们对Minecraft进行了反混淆,做出了可读的源码包Minecraft Coder Pack(简称MCP),开发者们可以通过MCP来制作MOD。后面为了统一不同开发者对MCP的修改,就出现了各种MOD API,如Forge。

    在一段时间捏,由于Bukkit或Spigot和以MCP为基础的API是不兼容,为了解决这个问题,md_5大神又制作了整合Forge+Spigot+CraftBufkkit的服务端整合包MCPC-Plus,让玩家们同时享受插件和MOD的乐趣。

参考资源

  1. MC中文Wiki:http://minecraft-zh.gamepedia.com
  2. 百度百科、360百科
  3. 知乎 “Minecraft 的多人游戏是如何发展起来的?”: https://www.zhihu.com/question/28323894/answer/40396131
  4. 知乎 “《 Minecraft 》为什么要以启动器的形式启动?”:https://www.zhihu.com/question/49997128
  5. 视屏:http://www.bilibili.com/video/av2715272
Compartir