Minecraft 设计思想
卷四 · 重写重写之前先界定问题

我们到底在重写什么

「重写 Minecraft」装着四件互相不可替代的事。本章拆出原版体验、模组平台、服务器平台、创作工具,分清兼容与继承两条路,并声明:本卷出考题,不出答案。

本章命题:「重写 Minecraft」至少是四个互相不可替代的目标;说不清自己在重写哪一个的重写,还没动工就已经失败。

1问题

前三卷做完了理解:卷一讲它从哪里来,卷二讲它为什么好玩,卷三讲它如何被实现。但理解与动手之间,隔着一道必须先厘清的边界。这道边界经常被一句话掩盖——「重写 Minecraft」。

这句话至少有四种意思。想要一个更稳的服务器软件,是重写服务端实现;想要模组装得更轻快,是重写模组平台;想要一个自己的体素引擎,是重写引擎;只是怀念第一次空手撸树的那个下午——这第四种,谁也重写不出来。四种意思对应四种产品,服务四群用户,彼此顶替不了。

所以本章回答的问题很窄:这四种产品能否互相替代?「兼容 Minecraft」与「继承其思想」为什么是两条路?克隆为什么是失败样本?以及一个立场声明:为什么本卷是考试,不是开工令。

2先禁止「再做一遍 Minecraft」

本卷导读里有一句提醒:网上每隔几个月出现一篇「重写 Minecraft」的技术方案,通常活不过评论区。它们的死因很少是技术不够,多半是第一句话就没说清要重写什么。所以本卷先立一条禁令:不许说「再做一遍 Minecraft」。禁的不是雄心,是含糊。

「Minecraft」在这句话里是四个产品的合称,下一节拆开。合称导致三种具体的失败。

验收标准变成「像」。「像」没有刻度。官方每发一个版本,及格线自己往前挪一格,追赶者永远在重做刚做完的事。卷一第 12 章看过这批产品的下场:它们不是输给了某个对手,是输给了一条会自己移动的及格线。

**力气被摊薄。**四个产品各分到四分之一的投入,每一个都做不到「让人换过来」的程度。而替代之所以成立,恰恰要求在同一层做到明显更好。

**没有自己的用户。**四行产品各有一群活着的用户;「再做一遍」的产品一行都没占。它的用户只是「想要原版、但希望更便宜或更好」的影子——这群人打开它的第一件事,是想起来原版还在。

这条禁令不禁止任何人做体素游戏——它只要求你先写完一句话:四个产品里,你重写哪一个。

3四产品矩阵

把合称拆开。今天挂在「Minecraft」名下的再开发空间,至少有四种产品,它们的资产、用户与可替代性各不相同:

产品核心资产主要用户可替代性
原版体验动词、约束、手感——玩家直接游玩的那个游戏全体玩家不可被其余三行替代;它是其余三行的宿主
模组平台加载器、映射、模组接口(Java 版)模组作者与模组玩家同层可换,跨层不可替
服务器平台服务端实现、插件接口与运维生态服主与插件开发者同层可换,跨层不可替
创作工具数据包、资源包、命令与配套编辑器地图作者与内容创作者同层可换代,跨层不可替

四行合起来念一遍:**同层可换,跨层不可替。**逐行看。

原版体验是宿主。玩家买的是它,卷二分析的一切——动词、约束、涌现——都在这一层。模组、插件、数据包,全部以「这个游戏值得被改造」为前提;替代它不叫重写,叫做一个新游戏。

模组平台层换过血:Forge 与 Fabric 争的从来不是「谁是更好的游戏」,而是「谁让模组装得更稳、跟版本跟得更快」。玩家装加载器,是为了玩被改造之后的原版,不是为了离开原版。

服务器平台层更早就换了人:如今多数大型服务器跑在第三方服务端上,在线的服务器以十万计1(见《服务端与规模》)。插件改的是「这一台服务器上的法律」,不是游戏本身;服主换掉服务端,多数玩家根本察觉不到。

创作工具层换代最频繁:数据包让作者不动程序就能改世界规则,工具好坏决定创作门槛的高低。但门槛再低,产出的玩法仍要被原版规则接住;工具替代不了游戏,正如笔替代不了小说。

再做一个拆桥测试:拿掉任何一行,其余三行站不住。没有原版体验,模组平台没有宿主;没有服务器平台,大型多人玩法塌回局域网;没有模组平台,十几年攒下的第二作者群蒸发;没有创作工具,地图作者退回第三方编辑器的灰色地带。四行是互相寄生的整体,不是可以挑着买的套餐。

怎样算这张表错了:如果出现一个产品,用同一套资产同时满足四行用户,且每一行都不打折,「互相不可替代」就错了。到今天没有出现过——卷一第 12 章里最接近的对照物 Roblox,也只占了工具与分发两层,代价是它不再是一个游戏。

四行互相不可替代

地基目标写成合称 → 每层都做不透 → 工程无法收敛
任何重写提案里,「整个 Minecraft」都不该作为宾语出现。评审的第一个问题不是「怎么做」,是「你删哪三行」。

4兼容 vs 继承:两条路

分清了重写哪一个,下一个岔路口是:与旧世界的关系怎么定。两条路都正当,但它们是两条路。

兼容路:新实现,旧定义

协议、存档格式、模组与插件接口、玩家可感的行为,逐项与现有生态对齐;目标是让旧存档照开、旧模组照装、旧客户端照连。收益是第一天就继承全部下游生态;账单是别人十几年的偶然也得照单全收——某个旧版本的存档、某个已被玩法依赖的缺陷,都自动成为你的「需求」。适合你的目标用户本来就住在旧生态里、你想换的只是实现的场合。Paper 走的是这条路。

继承路:旧思想,新实现

带走可以迁移的原则——动词要少、约束要咬合、目标外包给玩家——放下实现、资产与事故。收益是没有历史包袱,第一格方块就可以和 2009 年不一样;账单是生态清零,用户、模组、教程全部从头积累。适合你要的东西在旧生态里没有位置的场合。Luanti 走的是这条路。

继承路上还有一个必须回答的问题:继承什么?卷二第 16 章的《可迁移原则清单》开的是方法清单;如果继承落到引擎,卷三第 18 章的《可被模组的引擎才是完整产品》给了五条门槛——一本账、一座钟、一个裁判、一张表单、几道活门。五条少一条,产品就少一层活路:没有账本,世界不再是玩家的财产;没有确定性的钟,玩家工程失去地基;没有权威的裁判,单人与多人分叉成两个产品;没有带承诺的表单,创作塌向极客垄断或商城附庸;没有几道活门,任何一层的进步都要等整体大版本。

两条路的致命错误是混走。宣称兼容,却在玩家可感的行为上悄悄偏航,存档与模组迟早翻车;宣称继承,却偷偷搬运资产与事故,等于给一张没打算付的账单签了字。判别只需要一句问话:你的用户,现在住在哪个生态里?住在里面,兼容路才有意义;不住在里面,继承是唯一诚实的路。

怎样算「两条路」这个说法错了:若有一个项目对一部分用户兼容、对另一部分继承,两边同时成立,两条路就并成了一条。已知的样本里没有做到的;为什么难,本卷后面讲兼容性策略的一章会专门交代。

5失败样本

卷一第 12 章交付过本节的主结论:整体复刻选定的竞争维度是「像」,而在「像」这个维度上,原版不可能被超过——你的方块越像,玩家越会想,既然一样,为什么不玩原版?复刻做得越好,越是在替原版打广告(见《竞争、模仿与产业影响》)。本节用本章的话把它重讲一遍,因为矩阵让死因看得更清楚。

克隆的第一处死因,是它没有回答本章的问题。四行里它声称全要,实际做法是把第一行抄一遍玩法清单,然后发现后三行——加载器、服务端、创作工具所连着的生态与作者——一样也抄不来。四行里它其实一行都没占。

第二处,是它抄结果不抄原因。卷二讲过,好玩来自约束系统的互相咬合:光照限制催生建筑与刷怪塔的学问,方块更新顺序养出一整门红石工程(见《约束即深度》)。克隆抄得走动词清单,抄不走约束之间十几年互相校准出来的默契;至于「缺陷被玩法收编」的那部分历史,更是无从抄起——那是玩家与官方十几年互不追究攒下的合谋。

第三处,是验收标准会自己移动,上一节说过,不再重复。三处合起来,克隆暴露的不是工程能力不足,而是问题没有被回答:工程可以返工,没回答的问题没法返工。对照同样出现在卷一第 12 章的谱系成员——Terraria 取走循环,Vintage Story 取走拟真,Luanti 取走引擎——没有一个靠「更像」活下来。失败的从来不是「重写」这件事,是拒绝回答「重写什么」的重写。

怎样算本节错了:若有一款整体复刻靠「更像」夺走原版的主体玩家群,本节连同卷一第 12 章一起作废。判据沿用原章:到目前为止,这件事没有发生。

6局部重写已经发生

如果「重写 Minecraft」注定艰难,下面三个项目本不该存在。它们不仅存在,而且各自活得很好。共同点是:每一个都只重写了矩阵的一行。

**Paper 重写了服务器平台。**它 2014 年 6 月从 Spigot 分叉——当时 Spigot 拒收了社区贡献——以补丁的方式修改官方服务端程序,向上提供插件接口1。它没有动客户端,没有动玩法,只是把「服务器这一层」从官方实现里独立出来重写。到 2025 年年中,在线运行它的服务器超过十三万台,占这个生态的大头1。大型服务器的整套世界——经济、领地、小游戏——都长在这一层上。玩家换到这样的服务器几乎无感,直到熔炉不再慢半拍。

**Fabric 重写了加载与映射。**它 2018 年 12 月发布,定位是模块化的轻量加载器,配套社区维护的开放映射集2。它解决的问题不是「游戏好不好玩」,而是「模组怎样跟上每一次官方更新」——卷三写过,每个大版本对模组作者都是一次末日。Fabric 把这一层做轻,让模组作者追赶版本的成本降下来。它没有重写游戏,也没有碰服务端插件那一河。

**Luanti 重写了引擎。**2010 年 10 月,芬兰程序员 Perttu Ahola 发起 Minetest;2024 年 10 月,项目更名为 Luanti3。它走的是上一节说的纯粹的继承路:体素、可修改、开源,一样不少;存档、协议、官方资产,一样不要。改名的原因很诚实:项目方担心新玩家把它误认成 Minecraft 克隆,而它是一个引擎——官方发行版甚至不附带默认玩法,一切内容来自社区。用矩阵的话说,它重写的是最底下那层地基,然后把名字从「某个游戏」改成了「一种引擎」。

三个样本合起来,才构成对「重写可行」的完整验证。

其一,每一层都可以被独立重写。服务端、加载、引擎,三行各有人做成了,没有一行要求「全部推倒」作为前提——「先重写整个游戏」从来不是任何一层成功的条件。

其二,每个成功者都只服务一行的用户。Paper 的用户是服主,Fabric 的用户是模组作者,Luanti 的用户是想要引擎的人。三者中没有一个跨行成功:Paper 没有替你换加载器,Fabric 没有让服务器多撑一千人,Luanti 从一开始就没打算抢原版玩家。

其三,它们的存在反过来坐实了「不可替代」那一列。三个项目各自做到了本层出色,也都没有补齐其余三行——不是不想,是那三行各有各的资产与用户,一行顶替不了另一行。可行性与不可替代性,在同样的三个事实里各证了一遍。

三个样本都长在 Java 版一边;Bedrock 的扩展走附加包与官方商店那一套,是另一条已经分叉的河,卷一第 8 章与卷三分别讲过。

7本卷是考试,不是开工令

最后交代本卷的性质。前面各卷在讲「它是怎样的」,本卷在讲「如果是你,你会怎样」——这是设计评审,不是立项书,更不是开工令。

不出答案,是因为答案依赖两个只属于答卷者的决定:你选四行中的哪一行,走兼容还是继承。同一个「世界表示」问题,兼容路与继承路的正确答案可能相反;不先定这两个前提,任何选型都是背题。本卷能做的,是把题目出对,把评分标准写清。所以后续各章结构固定:先命题,再题目,再「怎样算答错了」。语言、框架、性能方案一概不出现——那些是笔,答卷自备。

考卷有三张。第一张已经发下:本章的四产品矩阵与两条路,是每道题的第一问。第二张是卷二第 16 章的《可迁移原则清单》,方法论评分标准。第三张是卷三第 18 章的《可被模组的引擎才是完整产品》,架构评分标准。接下来两章分别钉住「什么不能动」与「什么可以扔」;此后五道大题——世界表示、模拟调度、脚本与模组、网络与权限、渲染与创作工具——每章一道;最后三章处理兼容、作者席与全卷结语。

回到本章命题。「重写 Minecraft」是四个互相不可替代的目标,说不清自己在重写哪一个的,还没动工就已经失败。如果这句话成立,本卷每一道题都该从同一个问题开始。也把它留给你:你重写的,是四个里的哪一个?

8这一章留下什么

  • 爱好者:下次想说「重写个 Minecraft」,先分辨你要的是四样东西里的哪一样——大多数争论,是四群人在用同一个词说四件事。
  • 开发者:能抄走的是这张矩阵与两条路的判别法;抄不走的是你对自己项目的选择,和随之而来的那张账单。

注释

  1. Wikipedia,《Bukkit》(Spigot 于 2013 年 1 月更名;Paper 于 2014 年 6 月 23 日因 Spigot 拒收社区贡献而分叉;2025 年 6 月 bStats 记录超过 13 万台 Paper 服务器在线、占生态六成以上),维基百科,检索于 2026-09-18;见 https://en.wikipedia.org/wiki/Bukkit ↩ ↩2 ↩3

  2. Wikipedia,《Minecraft modding》(Fabric 于 2018 年 12 月发布,定位为模块化的轻量加载器;Yarn 为开放版权的 Minecraft 映射集,由 FabricMC 维护),维基百科,检索于 2026-09-18;见 https://en.wikipedia.org/wiki/Minecraft_modding ↩

  3. Wikipedia,《Minetest》(Perttu Ahola,网名 celeron55,2010 年 10 月发起的自由开源体素游戏引擎;2024 年 10 月 13 日官宣更名为 Luanti;官方发行版不附带默认游戏),维基百科,检索于 2026-09-18;见 https://en.wikipedia.org/wiki/Minetest ↩

On this page