<!-- title: 《Underrun》一首歌的大小，打穿一座基地 -->
<!-- domain: games -->
<!-- repo: phoboslab/Underrun -->

# 一首歌有多大？大概3MB。而《Underrun》整个游戏——代码、地图、美术、配乐全算上——只有13KB。

今天挖的仓库是 `phoboslab/Underrun`。它不是什么明星项目，星标千级（据仓库页面，未实时核对），代码多年前就收官了。但它是那种“看完就想打开编辑器”的仓库：一个人、一个13KB的硬约束、一款完完整整能玩的动作射击游戏。对想靠小游戏搞副业的开发者来说，它演示了一件事——**限制不是创意的敌人，限制本身就是产品卖点**。

## 仓库档案

- **仓库**：[phoboslab/Underrun](https://github.com/phoboslab/Underrun)
- **作者**：Dominic Szablewski，德国独立开发者，网名 phoboslab。这名字在HTML5游戏圈有分量——他是 Impact.js 的作者，HTML5 早期少有的商业授权游戏引擎，当年按许可证收费卖，养活了不少商用H5游戏。
- **语言**：JavaScript（WebGL + WebAudio，无游戏引擎、无第三方库依赖）
- **出身**：js13kGames 2015 参赛作品。这个比赛的规则只有一条：整个游戏打成zip不超过13KB，超一个字节就出局。
- **状态**：早已完结，多年没有大更新（据仓库页面），但这不重要——它是一件完成品，不是长期项目。
- **试玩**：作者博客提供在线版（phoboslab.org/underrun，据仓库README），js13kGames 官网也有参赛条目，浏览器点开即玩，免费。

## 这游戏是什么

一句话：**你孤身一人闯进一座断电的地下基地，视野只有枪口的光，杀穿机器虫群，推上电闸，活着走出去。**

俯视角动作射击。屏幕大部分时候是黑的，你的光照范围就是安全区；机器虫从黑暗里扑出来，枪口的火光照一秒，又缩回黑暗。找到发电机、恢复电力、抵达出口，一局打下来十分钟左右。没有教程、没有弹窗、没有商城，打开就是玩，死了立刻重开。

核心循环长这样：

```mermaid
flowchart TD
    A[开局：黑基地一把枪] --> B[黑暗中摸索<br/>光照就是视野]
    B --> C[机器虫从暗处扑来]
    C --> D{走位加扫射}
    D -- 打赢了 --> E[清场喘口气<br/>找发电机和出口]
    D -- 贪快失误 --> F[血条见底]
    E --> B
    F --> G[秒速重开<br/>这次我知道雷在哪]
    G --> A
    E --> H[推上电闸逃出基地]
    H --> I[通关不到十分钟]
    I --> G
```

注意最后那个圈：通关之后箭头又指回“重开”。这是街机时代的老手艺——一局短、死亡快、重开零成本，玩家不是被内容留住的，是被“这把能打得更好”留住的。

## 为什么上头

拆开看，Underrun的上头感几乎全是设计出来的，而且成本低得离谱：

**1. 黑暗是最便宜的恐惧制造机。** 画面大部分是黑的，你只能看见光照范围内的东西。信息一稀缺，玩家的想象力就开始自动补怪——黑暗里那团黑影是箱子还是虫子？这种“看不清”带来的紧张感，比堆一百个怪物模型都管用。技术实现上它只是几层光源叠加，成本几乎为零，心理收益拉满。

**2. 一局十分钟，死亡零惩罚。** 死了不用回主菜单，不用看加载页，瞬间重开。这直接命中“再来一局”的钩子：失败的挫败感还没落地，新一轮已经开打。对比很多独立游戏“死了回档五分钟”，Underrun的做法让玩家根本来不及退出。

**3. 反馈全在耳朵和光斑上。** 枪声、脚步、虫群的动静，配乐压着情绪走。没有物资掉落、没有经验条、没有连击计数，它的即时反馈完全靠视听节奏——这反而是小团队能抄的方案：你做不起数值系统，但做得起音效。

**4. 通关短到可以“刷”。** 十分钟通关意味着玩家第二次进来玩的就是速通：哪条路安全、哪里虫子密、发电机先推哪个。内容量一次就消费完了，但“跑得更快”的念头能再消费十次。小体量游戏想留人，这是最现实的路径。

## 技术拆解

这个仓库最大的技术看点不是“写得好”，而是“敢删”。13KB的约束下，每个字节都要挣饭吃：

- **零外部资源。** 没有图片文件、没有音频文件、没有字体文件。纹理以二进制形式内联在代码里，加载时现解现用；配乐音效同样随代码打包，运行时解码播放。作者在博客里拆过这套做法，值得通读。
- **WebGL直出。** 不走DOM、不上Canvas 2D，直接手写WebGL。渲染管线薄到极致，代码量小到能一个下午读完——这是它比大多数“游戏仓库”更值得抄的地方：你能看到完整的渲染、输入、实体、音频全链路，没有任何框架黑盒。
- **体积纪律可迁移。** 压缩、内联、运行时生成、砍掉一切“以后可能用到”的代码——这套纪律放到今天的微信小游戏、H5投放页、加载敏感的场景里，全是硬通货。
- **可以直接搬走的点子**：黑暗+动态光源的氛围方案（视觉成本极低）；WebAudio运行时合成音效（省掉素材采购）；“逻辑短局+秒速重开”的状态机（几行代码，留存立涨）。

要说局限也直说：代码是2015年的风格，没有构建工具链、没有TypeScript、多年没维护。抄思路，别抄工程结构。

## 变现观察

先泼冷水：**这个仓库本身没有一分钱变现痕迹。** 游戏免费、无广告、无内购，js13k的比赛作品按惯例就是开源炫技。

但作者的账本值得细看。Szablewski真正的生意是 **Impact.js**——HTML5还是荒地的年代，他按商业授权卖游戏引擎，这是一门真实收过钱、跑通过闭环的生意。后来拿下无数奖项、登上主机、卖得很好的商业游戏《CrossCode》，最早就是跑在他的引擎上的。Underrun这类比赛作品，本质上是他技术信用的持续存款：作品集即简历，社区曝光即获客渠道，而真正收银的，是他名下的引擎授权和委托项目。

对个人开发者，这条路径翻译过来就是三层：

1. **直接变现**：这类体量的网页游戏，现实出路是游戏门户（Poki、CrazyGames这类）的广告分成，或itch.io上自由定价加打赏。单靠这个发不了财，但覆盖服务器成本绰绰有余。
2. **间接变现**：极限作品是最好的名片。一个13KB能跑的完整游戏，比十页简历更能让客户相信你“会做东西”。
3. **生态变现**：给玩法配套的工具、模板、教程，往往比游戏本身好卖——Impact.js的故事已经验证过一次。

## 给我的灵感

**点子一：黑暗玩法换皮，做中文题材的“夜班求生”。** 黑暗+光圈+清怪+夺路而逃，这套骨架换皮空间极大：凌晨停电的便利店、夜巡的古镇保安、地下车库找车。美术需求极低——反正大部分屏幕是黑的。MVP两到三周，网页版投游戏门户吃广告分成， Stein级简化版可以挂itch.io测试付费意愿。

**点子二：给已有项目做“十分钟街机化”改造。** 如果你手上有个拖沓的长流程小游戏，切一条“十分钟一局+死亡秒重开”的支线模式出来，再把加载页砍到零。这个改造一周内能做完，但它直接改变留存曲线——短局游戏的可玩次数，是长流程游戏的十倍，广告eCPM跟着局数走。

**点子三：办一场中文圈的“13KB挑战”。** 把js13k的规则搬过来做一个月度小赛：13KB内做出能玩的东西，社区投票。你不一定赚钱，但你一定收获一批高水平开发者的人气和投稿内容——内容即流量，流量即后续变现的地基。工作量主要是赛事页面和评审机制，两三周。

## 上手

- 仓库：https://github.com/phoboslab/Underrun
- 在线试玩：phoboslab.org/underrun（据仓库README，另有js13kGames官网参赛页可玩）
- 建议动线：先玩一局（十分钟）→ 通读源码（一个下午）→ 读作者的配套博客拆解 → 挑上面任一点子动手。

一个14年前就有了雏形、13KB的小游戏，到今天还能给开发者上三堂课：氛围比美术便宜，短局比长流程留人，作品比简历值钱。这就是小而美的全部秘密。

> [!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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
