首页 › games › 《Craft》几千行C,装下一座世界

《Craft》几千行C,装下一座世界

每个想入局游戏变现的个人开发者,心里都藏着一个Minecraft梦,然后马上被吓退:10年开发、无数人力、几亿行代码。但GitHub上有个叫 Craft 的仓库告诉你:把"Minecraft"这个名字拆掉,只留下“方块世界”这个内核,一个人用几千行C语言就够了。它不打算复刻Minecraft——没有生物、没有合成表、没有红石——它只回答一个问题:一个由数学生成的、可以随意挖掘和建造的方块世界,最少要多少代码?

答案是:少到你能一口气读完。

一、仓库档案

项目 情况
仓库 fogleman/Craft
Star 约1万(据仓库页面)
语言 C(渲染用 OpenGL,据仓库页面)
License MIT(据仓库页面)
作者 Michael Fogleman,个人开发者
状态 老牌项目,近年基本停更,属于“写完就成名”型仓库

作者 Michael Fogleman 是GitHub上著名的“周末项目狂魔”,图形学方向的仓库几乎被他做成了个人系列:软件光追器、NES模拟器、2D绘图库……Craft 是其中最有名的一个。注意他是纯个人开发者,没有公司背景、没有团队页,这正是这批“小而美”仓库最值得研究的地方——一个人,一个编译器,一个让你玩了一下午的世界。

二、这游戏是什么

一句话:按下按钮,噪声函数长出一座有山有树有洞穴的岛屿;左键挖、右键放,从零盖出你想要的一切,还能局域网联机给朋友看(据仓库README)。

它的核心循环画出来是这样的:

flowchart TD
    A[输入一颗种子] --> B[噪声函数生成地形<br>山脉·洞穴·树木·水]
    B --> C[落地探索<br>爬上山顶 / 钻进矿洞]
    C --> D[左键挖 · 右键放<br>方块进背包 又变成墙]
    D --> E[设计建造<br>小屋 / 高塔 / 地下基地]
    E --> F[昼夜更替 光影流转<br>退后三步看自己的作品]
    F --> G{满意吗?}
    G -->|想换个风景| H[换一颗新种子]
    H --> B
    G -->|想盖得更大| C
    G -->|喊朋友来看| I[局域网联机<br>同一座世界一起盖]
    I --> C

这个循环的精妙之处在于没有终点。传统的游戏循环是“目标→达成→结算→再来一局”,而Craft这类沙盒的循环是“生成→改造→欣赏→再生成”——系统从不告诉你该干什么,但每一颗新种子都自动帮你清空存档、重置欲望。地形是数学算出来的,意味着世界的供给是无限的,而你手里的工具(挖和放)永远只有两个。极简的操作,配无限的内容,这就是沙盒品类七十亿美元的底层配方。

三、为什么上头

别看它代码简陋,上头机制一个不少,而且每一条都能对应到具体实现:

1. 即时反馈:一次点击,世界永久改变。 左键点下去,方块消失、露出一块新面;右键点下去,方块出现、挡住一段视线。没有任何冷却、任何判定延迟。行为心理学里最强化行为的,就是“动作→结果”间隔最短的那类反馈——Craft把间隔压到了一帧以内。

2. 进度感:从平地到城堡,全是你自己。 新世界给不了你任何东西(背包几乎是空的),但挖三分钟你就有了一堆土,堆半小时就有了挡风的小屋,玩一天就有了带瞭望塔的基地。这套进度不靠系统发奖励,靠世界的物理残留——你挖过的坑、盖过的墙都留在那里,进度是可视化的,这比任何经验条都直观。

3. 随机奖励:每颗种子都是一张盲盒。 同样的噪声参数,换一颗种子,山形、矿洞分布、水岸线全变。你永远不知道下一颗种子长什么样——翻过这座山后面是平原还是峡谷?这就是最原始的“开箱”心理,只不过开的是地形。很多人玩Craft的真实行为是:连续生成几十个世界,只为了找一块“看着舒服”的地,游戏还没开始,乐趣已经发生。

4. 策略深度:约束来自地形本身。 没有敌人,但地形就是谜题:在悬崖上盖房子要先解决“怎么上去”,在湖边盖要解决“怎么不漏水”。挖矿洞要考虑塌方式的挖掘顺序。系统没给你出题,是世界结构本身在出题——这是沙盒品类最高明的设计转嫁。

5. 社交攀比:联机一小步,欲望放大器。 据仓库README,Craft自带简单的联机模式——起个服务器,朋友连进来,同一座世界一起挖一起盖。一个人的建造是自我表达,两个人的建造就有了比较:“你这塔怎么歪了”“看我这个地下宫殿”。分享欲是沙盒游戏二次传播的发动机,Minecraft当年在YouTube上的病毒式传播,烧的正是这把火。

四、技术拆解

这个仓库对开发者的价值,比游戏本身大得多。它相当于一本摊开的“体素引擎入门”教材,每个模块都小到能单独抄走:

1. 噪声地形生成(最值得抄的模块)。 整个世界的山脉,来自经典的Perlin噪声——一个连续的伪随机函数,输入坐标(x,z),输出一个高度值。相邻坐标的输出是连续的,所以地形是连绵的山而不是刺猬;同一个种子算出的结果处处相同,所以世界可以“要用再算”,不必存整个世界,只存一颗种子。这一招对任何需要随机地图的游戏都通用:横版关卡、爬塔地图、roguelike房间布局,都可以换成“种子+函数”。

2. 区块(Chunk)管理。 世界不是一整块,而是切成了一个个立方区块,玩家走到哪,哪附近的区块才被生成、被渲染。这是所有体素游戏的地基,也是“无限世界”能在几千行代码里成立的唯一原因——世界无限,内存有限,靠的是按需生成。

3. 射线拾取:你“摸到”的方块是怎么找的。 从相机位置沿视线方向一步一步采样,碰到第一个非空方块就算选中。没有物理引擎,没有碰撞体,一段循环就搞定了“准星指着哪块”的问题。任何3D拾取交互(编辑器、建筑工具)都能用这个思路。

4. 手写渲染管线。 Craft没有用任何游戏引擎,直接对着OpenGL写:着色器、顶点缓冲、纹理图集。光照是简化过的环境光遮蔽思路,配合昼夜循环做时间流逝的氛围。想学“游戏到底是怎么画出来的”,比啃图形学教材直观十倍——因为每一行代码都在为一个“能玩”的目标服务。

5. 极简联机。 据仓库README,它带了多人模式的示例和服务器端的启动方式。规模当然不能跟真正的联机服务比,但“多人在同一张地图上改方块、改动同步给所有人”这个骨架是完整的。你做任何小型联机游戏(答题对战、你画我猜、合作解谜)都可以从这个量级起步,而不是上来就啃网络同步的深水区。

6. 存档即种子。 最优雅的一点:世界的“存档”本质上是种子加玩家改动。新玩家进世界的成本被压到了一个字符串。这个“状态极小化”的思路,放到网页游戏里就是URL里带个参数就能分享你的关卡——零服务器成本的分享机制。

可直接复用的组件清单:噪声地形生成器(换语言都能抄)、区块管理系统、射线拾取函数、“种子即存档”的存档设计。这套东西拼起来,就是任何“方块类”或“程序生成类”项目的地基。

五、变现观察

先说实话:Craft本身没有任何变现痕迹——README里没有广告、没有众筹链接、没有商店页。它是典型的“技术名片”型开源项目,作者赚的是声誉和行业机会,不是现金流。但对想变现的你,这个品类周边的路径反而是所有品类里被验证最充分的:

一句话总结路径:仓库学技术 → 网页版试水(打赏/广告)→ 移动端换皮(广告+内购)→ 有独到设计就上Steam卖深度。

六、给我的灵感

灵感一:网页版“一口世界”,MVP约1-2周。 用Three.js做一座16×16的悬浮小岛:噪声生成地形、左键挖右键放、localStorage自动存档、按钮一键换种子。砍掉联机、砍掉昼夜、方块控制在五六种。这就是一条可以直接发itch.io和朋友圈的玩具,主打“通勤路上盖个小岛”。变现走免费+打赏,火了再挂轻量广告。Craft证明这个玩法的最小可行规模是几千行,你用现成3D库只会更少。

灵感二:每日种子挑战——把Wordle的钩子嫁接到沙盒上,MVP在灵感一基础上加约1周。 全网每天同一颗种子、同一个目标:“今天的地图里,10分钟内谁能挖到最深?”“谁能盖出最高的塔?”结束后生成一张可分享的成绩卡(几行表情+数字,Wordle同款传播机制)。这一层改动极小,却同时吃到了随机奖励(每日新种子)和社交攀比(成绩卡刷屏)两个上头引擎,天然适合移动端:插屏广告+去广告内购,跑的是被扫雷类、数字类小游戏验证了无数遍的模式。

灵感三:把“挖和放”塞进别的骨架,MVP约3-6周。 Craft最值得抄的不是方块,是“玩家用两个动作对抗一个随机生成的世界”这个句式。套进别的品类:挖方块+塔防(白天挖矿造墙,夜里守怪潮);挖方块+爬塔roguelike(每一层的房间要自己挖出来才能通过,挖法决定难度);甚至挖方块+文字放置(离线时你的矿工替你挖,回来收获——接上放置品类的长线留存)。设计上多一个维度,就有资格上Steam抢先体验或者itch付费档,这是从“换皮”往“作品”走的路线。

七、上手

结语

Craft的启示不是“你也能做个Minecraft”,而是:一个好玩的世界,内核小得惊人——一个噪声函数、两种操作、一个会变化的光源。个人开发者最容易犯的错,是把力气花在复刻大游戏的完整度上,而不是找到那个几百行就能跑起来的“上头内核”。先把内核跑起来,玩家自然会替你把游戏玩成一千种样子。

下一次打开Craft,别急着挖矿——先按住那个换种子的按钮,看十座不同的山从噪声里长出来。那是这个仓库真正想卖给你的东西:无限的世界,和一个属于你的起点。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入