从 Infiniminer 到 Cave Game
Infiniminer 发布不到一个月就弃坑开源,它的「克隆」却成了史上最畅销的游戏。本章沿可破坏空间的前史往下挖,看 Cave Game 丢掉了什么,又如何靠「未完成」活成产品。
本章命题:Cave Game 对 Infiniminer 做的关键改动是减法——去掉比赛目标、去掉过重的模拟、去掉现成关卡,只留下一个任何人都能挖开的方块世界。「抄了什么」解释不了它后来变成什么,「丢了什么」才解释得了。
1问题
2009 年 4 月 29 日,Zach Barth 发布了一款叫 Infiniminer 的多人挖矿游戏。它活了不到一个月:源码被人反编译传开,Barth 干脆将其开源、停止开发。两周后的 5 月 13 日,一个瑞典程序员在自己的 YouTube 频道上传了一段视频,标题里大大方方写着:「这是我正在做的 Infiniminer 克隆的一个很早期的测试。」1
那个「克隆」当时叫 Cave Game,几天后改名 Minecraft。往后的事不必复述:它成了人类历史上销量最高的电子游戏,后来还变成了一个品类、一门产业和一整代人的共同记忆。而 Infiniminer 停留在绝大多数人的词汇表之外。
如果「克隆」两个字就能解释这个故事,事情反而简单:抄得早不如抄得好。麻烦在于,同一个时间点手握 Infiniminer 开源代码的不止 Notch 一个人。后来跟着做的项目大多原样保留了比赛、队伍和比分,然后停在「一场更精致的挖矿比赛」附近,没有一个变成后来那个东西。可见成败的关键不在抄没抄,而在抄了之后动了哪一刀。
所以这一章要回答两个问题:它从哪些形式里来?又丢掉了什么?第二个问题的答案,比第一个重要。
2「抄了 Infiniminer」为何解释力不够
先看被抄的那个。Infiniminer 用 C# 写成,整个游戏只有 1.45 MB:红蓝两队,四种职业——矿工、勘探员、工程师、工兵——在程序生成的地形里挖金矿和钻石矿,把矿石运回地表给队伍积分,先达到分数线的队获胜。方块可以挖掉,也可以垒上去;垒墙用的方块多半是队伍颜色的,主要当工事用,不负责好看。2
这份规则表里最耐人寻味的是一条没写出来的规则:垒方块不加分。 设计者把建造当手段——堵路、架桥、护矿。玩家不这么想。开服没多久,就有人把比赛晾在一边,专心在地图上垒自己想垒的东西。玩家用行为投了票:这个空间里最好玩的事不是赢,是改。
Notch 就是这时候撞上来的。按后来官方传记的记载,他试玩 Infiniminer 时「差点从椅子上摔下来」,心想「哦我的天,这才是天才」。他的过人之处不在手速,在翻译:玩家偷偷垒方块这个行为,Barth 没有去解释它的含义——他有更急的事要处理;而 Notch 把它读成了需求本身。既然玩家最想干的是垒东西,那就把比分砍掉,让垒方块从违规变成正事。1
于是「抄了 Infiniminer」是一笔不完整的账。它只记录了进账:第一人称、方块、挖和放。没记录销账:比赛、队伍、职业、比分、胜负,全部不要了。只看进账,Cave Game 是个劣化的 Infiniminer——没有比分,没有职业,可用的方块一只手数得过来;把销账也算上,它才是 Minecraft。
顺便记下 Barth 的态度。他后来没有把 Notch 称作小偷,只说「借用想法本来就是创作过程的一部分」。这话不完全是客气:Infiniminer 自己脚下也踩着别人的影子,Barth 自述的灵感来源是《军团要塞2》和挖矿游戏 Motherload。2 真正的分岔不在道德上,在设计判断上——同一个「玩家不按规则玩」的现象,一个作者放下了它,另一个作者把它捡起来当成了产品。
3前史:可破坏的空间早就有,只是都绑着目标
Infiniminer 不是从石头缝里蹦出来的,Cave Game 也不是。2009 年之前,「可以拆掉也可以搭起来的空间」在游戏里已经出现过很多次。Notch 亲口认过的几位前辈,每一位都提供了这种空间,也每一位都把一个明确的目标牢牢绑在上面。1
Dwarf Fortress(2006)。Tarn Adams 一个人的作品,血统上是 roguelike:程序生成、网格、失败很疼。它把世界当一台几乎不肯停的机器来模拟——地质、水体、每个矮人的脾气和需求。可破坏、可建造都在,但目标很硬:让要塞活下去。深度来自模拟器本身,玩家要花几百个小时才能读懂这台机器。社区名言「losing is fun」(输了也好玩)说的就是它:失败故事是内容。Minecraft 拿走了「世界自己会出事」这个方向——黑暗、岩浆、夜晚后来都是它的薄版本——但没有拿走模拟的重量。Notch 对 Dwarf Fortress 的态度有据可查:他试过做一个「亲民版的 Dwarf Fortress」,就是那个后来搁置的 RubyDung。3
Dungeon Keeper(1997)。Bullfrog 的地下城经营游戏:你挖地道、盖房间、养怪物,英雄会闯进来。按传记的说法,它给 Notch 的是氛围——火把、黑暗、往地底越走越深的那种不安。Minecraft 洞穴的气质跟它沾亲。1
RollerCoaster Tycoon(1999)。Chris Sawyer 的乐园经营游戏。Notch 喜欢的是两件事:很快建起一座像样的东西,以及看着自己的造物被(游戏里的小人)使用。1
Wurm Online。严格说不是前辈,是 Notch 自己的旧作。他和 Rolf Jansson 一起做的持久世界网游:地形可以真的被改造成型,几乎没有内置任务,但要磨技能、熬时间。2007 年春 Notch 退出。1 它证明他早就知道「能住进去的世界」长什么样——也知道它的重量。
| 形式 | 空间给你什么 | 目标绑在哪 |
|---|---|---|
| Infiniminer(2009) | 可挖可垒的赛场 | 矿石换积分,比分定胜负 |
| Dwarf Fortress(2006) | 会自己出事的世界 | 要塞活下去,失败也算内容 |
| Dungeon Keeper(1997) | 可开凿的地下城 | 经营地下帝国,抵御英雄 |
| RollerCoaster Tycoon(1999) | 可拆改的乐园 | 游客满意,公园赚钱 |
| Wurm Online(2006) | 可改造的持久大陆 | 技能研磨与领地经营 |
这些形式共享同一个句式:空间是手段,目标是目的。 可破坏的空间不新鲜,新鲜的是把句式的后半句删掉。Cave Game 做的就是这个删法。
4Notch 的工作方式
这一节只取对起源有用的三点,不做传记。
工具顺手优先。 他当时在斯德哥尔摩有份正职,Minecraft 头几个月是下班后的项目。选 Java 不是美学判断,是工期判断:那是他能在最短时间内交出一个能跑的 3D 程序的语言,LWJGL 库把窗口、输入和 OpenGL 接到手边。后来有人把 Java 说成 Minecraft 的命运,那是把 2009 年的方便写成了本质——这笔记账,卷四再来拆。
小盘快跑。 他常参加 Java 4K 比赛:整个游戏要塞进 4 KB 代码。2009 年他的参赛作品 Left 4K Dead 拿了金奖——把《求生之路》这样的丧尸射击压成 4 KB 的俯视角小游戏。4 这种比赛训练一种特定的肌肉:先让一个最小循环完整转起来,别的以后再说。Cave Game 的节奏一模一样——从动工到放出技术测试,大约两天。5
没做完的旧项目是仓库。 RubyDung 是他 2009 年 2 月前后立项的「亲民版 Dwarf Fortress」:等距视角、斜坡地形、目标同样是让玩家经营一块领地。项目很快搁置;他试着切换到第一人称视角,又嫌贴图凑近了发糊。看到 Infiniminer 之后,问题瞬间解开——方块根本不需要「贴图凑近不发糊」,方块天生就是第一人称的形状。于是他回到 RubyDung 的代码上接着改:最早期 Minecraft 的版本号前缀是 rd-(RubyDung 的缩写),内部工程名当时还叫 RubyDung,草方块和圆石的贴图直接沿用 RubyDung 的旧文件。35 你今天熟悉的草方块,模板来自一个弃坑游戏的贴图文件夹。
把这几样摆在一起,起源更像拼装而不是顿悟:手感和动词来自 Infiniminer,氛围来自 Dungeon Keeper 和 Dwarf Fortress,「造东西看它被使用」来自 RollerCoaster Tycoon,「住进去」的执念来自 Wurm Online,代码和贴图来自 RubyDung。最贵的一味料是「没有」——它不来自任何一处,来自删。
5Cave Game:挖、放、看
2009 年 5 月 13 日,视频上传,游戏当时叫 Cave Game。次日他给游戏想了个全名 Minecraft: Order of the Stone——这个名字只活了一天左右——随后定成 Minecraft。整个 pre-Classic 阶段不到一周,有记录可查的玩家只有两个人:Notch 自己,和一个论坛 ID 叫 ez 的人。5
那个技术测试里能玩到的东西少得惊人:
- 方块六种:草、土、石、圆石、木板、树苗;
- 地图上乱走的人形生物,模型和贴图是从他另一个搁置的项目 Zombie Town 里复用的——它们后来成了玩家角色自己的模型。严格说,你在 Minecraft 里扮演的是一个 2009 年弃坑游戏里的「僵尸」;5
- 按 G 键可以凭空刷出一个人;
- 鼠标左键放方块,右键挖方块,和今天正好相反。玩惯了现在的版本回去,会顺手拆掉半栋自己刚盖的房子;5
- 挖掉的方块直接消失,没有掉落物。
最后一条值得停一下,因为它说明这个测试版的循环还缺一环。当时能玩到的是三个动词:挖——地形按你的意愿开口子;放——手里的方块回到世界;看——第一人称下,空间既是风景又是可以动手的对象。但挖掉的方块凭空蒸发,放上的方块凭空而来,世界和你手里的东西还不是同一种账本。「世界即库存」——你背包里的方块和山体里的方块是同一种东西的两个位置——要到 Survival Test 补上掉落物之后才字面成立。那是下一章的事;这里只需记下:三个动词是骨架,库存和掉落是后来长上的第一块肉。
角色的透明倒是从一开始就定了:没有技能树,没有等级,没有属性。你变强的唯一方式,是你改过这片地形。这套「方块是度量衡、动词是杠杆」的分析框架,卷二第 1、2 章会展开;起源处它还不是理论,只是已经能玩。
6它丢掉了什么
把上面几节收拢,Cave Game 丢掉的是三样东西,每一样都值得单独点名。
丢掉了目标。 Infiniminer 的比分、Dwarf Fortress 的要塞存亡、roguelike 的「下到最深」、乐园的盈亏——一个都没带。后果是单向的:这个游戏从此不能「通关」,也不能「输」,它只能被住。玩家后来确实给自己立了目标——活下去、盖房子、挖到深处见基岩——但那是玩家发的任务,不是游戏发的。这件事有个顺手的检验:那些原样保留比分的 Infiniminer 克隆,玩家赢下一局之后没有理由不走;而 Minecraft 的玩家没有「赢完」这回事,所以不走。
丢掉了过重的模拟。 Dwarf Fortress 的深度来自模拟器,玩家要读懂那台机器才能玩好。Cave Game 反过来:只留几条一周就能摸透的规则——方块大多不受重力,水会流,天会黑,黑了会有东西。规则少,才记得全;记得全,才可能被玩出规则外的东西。深度不住在模拟器里,住在玩家对少量规则的滥用上。这条线索后来长成红石,机制分析在卷二第 7 章;起源处只有一句话:规则是故意留得这么少的。
丢掉了作者关卡。 生成器给的是地形和洞穴,不是关卡:没有设计好的行进路线,没有藏在某处等着被找到的出口。世界先是空着的。空着的世界有一个常被忽略的性质——它没法被「消费完」。2009 年主流游戏的完成单位是「打穿了」,而一个空世界没有打穿这个动作。这是 Cave Game 和同时代所有游戏最深的区别。
三次减法指向同一件事:游戏拒绝回答「你该干什么」。
留下空间,不配剧本
游戏不回答「你该干什么」,是三次减法共同的落点。它让 Cave Game 在 2009 年看起来像半成品,也让 Minecraft 在十几年后依然没有「通关」这个动作。拿掉这条,创造模式、红石、服务器文化都失去生长的空地——卷四讨论「什么必须保留」时,它是第一块基石。
7「未完成」是产品策略
按 2009 年「一个游戏该有什么」的清单打分,Cave Game 缺得多:结局、关卡、任务、成长曲线、胜负条件,一样没有。按清单它是废件;按循环它是成品——三件事闭环,玩起来已经有意思了。
Notch 后来解释过为什么把半成品直接扔出门:「我知道自己永远也不会觉得它好到可以标价,所以我一开始就收费。」以及更直白的一句:「我这么早发布,是因为不这样我永远做不完它。」1 前半句属于下一章的商业故事,后半句在这里就已经成立:公开的半成品会招来玩家,玩家会往空规则里填上自己要的目标。Infiniminer 玩家在服务器里擅自垒方块,是这件事的第一次预演;Cave Game 把预演变成了制度。
「未完成是策略」这句话也可以被证伪:如果空白只是没做完的缺陷,那把它填上的时候,玩家应该松一口气。事实相反——饥饿条、进度系统、末影龙,每一次「补完」都伴随一部分老玩家的抗议,措辞出奇一致:「这不是原来那个游戏了。」如果空白只是空窗期,填上它不该有人有意见。抗议本身证明:空白被玩家当成了游戏的一部分。
8这一章留下什么
- 爱好者:游戏从来没告诉你该干什么——不是它忘了写,是它在起源那两周里亲手把这句话删掉了。你「只好自己找事做」的习惯,就是这个删除动作的遗产。
- 开发者:能抄走的是减法清单——砍目标、砍重模拟、砍作者关卡,并且每砍一样都要有兜底:可破坏的空间、够少的规则、公开的开发过程。抄不走的是时机:一个刚开源的死游戏、一个没人争夺的空白品类、一个还容得下下班做实验的行业。看清「玩家在越轨的地方排队」,才是从 Infiniminer 里真正该学的那一刀。
注释
-
Linus Larsson、Daniel Goldberg,《Minecraft: The Unlikely Tale of Markus "Notch" Persson and the Game That Changed Everything》,Bookmark,2011;引文出自 Wired 刊载的书摘(2013 年 11 月),https://www.wired.com/2013/11/minecraft-book/ ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7
-
Minecraft Wiki,《Infiniminer》,检索于 2026-09-16,https://minecraft.wiki/w/Infiniminer ↩ ↩2
-
Minecraft Wiki,《RubyDung》,检索于 2026-09-16,https://minecraft.wiki/w/RubyDung(其中转引 Notch 2009 年 10 月 30 日的博客文章《The Origins of Minecraft》) ↩ ↩2
-
Wikipedia,《Java 4K Game Programming Contest》,检索于 2026-09-16,https://en.wikipedia.org/wiki/Java_4K_Game_Programming_Contest ↩
-
Minecraft Wiki,《Java Edition pre-Classic》,检索于 2026-09-16,https://minecraft.wiki/w/Java_Edition_pre-Classic ↩ ↩2 ↩3 ↩4 ↩5