<!-- title: 《A Dark Room》点把火，烧上付费榜 -->
<!-- domain: games -->
<!-- repo: doublespeakgames/adarkroom -->

# 《A Dark Room》点把火，烧上付费榜

## 仓库档案

| 项目 | 内容 |
|---|---|
| 仓库 | [doublespeakgames/adarkroom](https://github.com/doublespeakgames/adarkroom) |
| 作者 | Michael Townsend（Doublespeak Games，个人开发者） |
| Star | 约 7k+（据仓库页面，实时数据以 GitHub 为准） |
| 语言 | JavaScript（原生 + jQuery，无框架） |
| License | MPL 2.0（据仓库页面） |
| 首发时间 | 2013 年 |
| 维护状态 | 多年持续小修小补，社区翻译长期在合（据仓库页面） |
| 在线试玩 | adarkroom.doublespeakgames.com（自带中文） |

先说清楚这个仓库的分量：它不是某个教程 demo，也不是什么 framework，它是一个**完整上线、有续作、有主机版、登过 App Store 付费总榜第一**的商业游戏，源码全部摊开在 GitHub 上。作者是一个人，代码总量不大，纯前端，clone 下来双击 `index.html` 就能玩。对想入局游戏变现的个人开发者来说，这是教科书级别的“拆开看看人家怎么赚钱”的样本。

## 这游戏是什么

一句话：**开局只有“生火”和“添柴”两个按钮的文字放置游戏，火越烧越旺，世界越烧越大，最后把你烧上一艘离开地球的飞船。**

2013 年，Michael Townsend 受 Candy Box 启发做了这个网页小游戏。没有美术，没有音效堆砌，没有新手引导，第一屏就是黑底白字的几行英文和一个火堆。玩家口口相传，社区自发把它翻译成十几种语言（含中文），一路长到今天。

玩法结构大概三层：前期是独居小屋的生存（添柴、捡水、吃肉）；中期陌生人进村，变成村庄经营（小屋、陷阱、制革坊、教堂，资源链一层套一层）；后期造飞船离开地球，进入 New Game+ 带加成重开。全程没有一张图片，所有世界都靠文字在你脑子里渲染。

核心循环长这样：

```mermaid
flowchart TD
    A[生火 / 添柴] --> B[资源自动产出]
    B --> C[解锁新建筑 新按钮]
    C --> D[随机事件带选择]
    D --> E[新名词 新悬念]
    E --> F[好奇心 + 进度感]
    F -->|就再看一会儿| A
    B -.离线也在涨.-> G[关掉网页也惦记]
    G --> A
```

注意这条循环里最狠的一环：**资源在你关掉网页的时候也在涨**。系统在你不在场时持续给你发奖励，你“回来”这个动作本身就是开盲盒。

## 为什么上头

把它拆开看，几乎每个机制都是冲着“再来一会儿”设计的。

**1. 信息差开局：好奇心就是引擎。**
游戏不解释任何东西。你看到的第一个反馈是"the room is freezing"，然后是"the fire is dead"，你点添柴，变成"the fire is roaring"。三行文案教会了基础操作，同时埋下一个问题：这游戏到底是个啥？没人告诉你，所以你只能继续点。零成本教程，全靠玩家自己的好奇心驱动，这是文字游戏最聪明的一面。

**2. 分层解锁：先给名词，再给功能。**
陌生人进村，先躺墙角不省人事；你添几轮柴，她醒了，自称 builder；再过一会儿，她提出第一单生意——造辆推车。然后是陷阱、小屋，小屋越盖越多，村庄成型。注意节奏：**每个新系统都是“延迟到货”的**。builder 躺墙角的那几分钟，你满脑子都是“她醒了会干嘛”。这种悬念不需要任何剧情功底，只需要把解锁顺序拉开时间——免费的钩子。

**3. 冷却按钮：游戏的心跳。**
所有行动按钮都带一个冷却转圈动画。这个设计一石三鸟：视觉上给你“世界活着”的即时反馈；操作上限被天然限频，防肝防炸；转圈结束那一刻的“可点击”状态，本身就是一个微小的多巴胺点。你等的那 15 秒不是惩罚，是预告。

**4. 随机事件：30 字一发的叙事钩子。**
旅人讨水、神秘商人、野兽夜袭、陌生人带Weapon来访……每个事件就两三句话加一两个选项，做成纯数据配置。单独看平淡无奇，但架不住频率和随机性——玩家永远不知道下一秒会掉什么，这就是最原始的随机奖励机制。

**5. 挫败与重开：损失厌恶反向锁人。**
火会熄、村会被袭、人口会掉。有损失，玩家才会“我得回去看看”。纯躺平收益的游戏留不住人，ADR 早就懂。

**6. 终局与 NG+：给长线一个理由。**
飞船升空那一下，前面几十小时的所有资源链全部兑现意义。NG+ 带加成重开，收集欲和成就系统接棒，循环再转一圈。

你会发现 ADR 没有用任何一项高级技术，它只是把**即时反馈、进度感、随机奖励、收集欲**四个开关全拧到了适合的位置。这是设计功力，不是技术功力——也正是个人开发者最该抄的部分。

## 技术拆解

这套代码的可爱之处在于“原始”：原生 JavaScript + jQuery，没有构建工具，没有 npm 依赖地狱，没有状态管理库。2013 年的写作风格放今天依然能跑，而且**正因为简单，才适合当模板抄**。

几个值得细看的模块：

- **冷却按钮系统**（engine 目录）：每个按钮一个 cooldown 参数，用百分比动画画转圈。这是放置游戏的通用基建，直接可以搬走。
- **随机事件调度器**（events 相关代码）：事件本体是数据（文案 + 按钮 + 前置条件 + 权重），引擎只管按条件捞出来弹窗。加一个新事件 = 加一段配置，不改逻辑代码。你后续做任何“每日随机”玩法，都是这个结构。
- **解锁树**：建筑、物品、地点各一张表，带 unlock 条件字段，状态变化时统一检查。极简版的科技树。
- **存档**：localStorage 全量快照 + 自动保存，核心就几十行。别小看它——多少新手死在“存档怎么设计”上，这里给了一个“先存下来再说”的标准答案。
- **i18n**：语言包就是纯对象映射，中文包是社区翻译的。你做中文题材游戏，这套结构照搬即可。

全局就是一个大 State 对象加 get/set，没有任何框架。它会提醒你一件事：**MVP 阶段的状态管理，购物车级别的就够了**。真正难的是上面那层“内容节奏”的设计，而那不需要写代码。

可复用清单：冷却按钮、事件调度、解锁条件表、放置产出 tick、localStorage 存档。这五件套拼起来，换个皮就是一个新游戏的地基。

## 变现观察

这才是这个仓库最值得写进你商业计划书的部分，因为它有一条完整的、被验证过的变现链路。

**原版网页：免费 + 开源，本身不挣钱。** 无广告、无内购、无注册。它挣的是另一样东西——口碑和分发。开源让社区自发翻译、自发传播、自发维护，等于**零预算买量**，全世界玩家帮它做本地化。

**真正收钱的地方在下游。** 2014 年，iOS 开发者 Amir Rajan 把它移植上 App Store，定价 0.99 美元付费下载，随后一路冲到**美区付费总榜第一**（据当年多家媒体公开报道）。之后顺水推舟：续作 The Ensign 上线，游戏本体还登陆了 Switch、PS4、Xbox，主机版继续收费。一个 2013 年的免费网页游戏，靠“移植 + 多平台发行”收割了多年。

把这条链路抽象一下：

```
网页免费开源版（获客 + 口碑 + 天然试玩 Demo）
    ↓ 导流
移动端付费下载 / 去广告内购（主要收入）
    ↓ 放大
主机版 / 续作（二次收割）
```

**开源不但不挡财路，反而是最便宜的发行策略。** 很多人不敢开源自己的游戏，怕被抄——ADR 给出的答案是：玩法被抄不走的，是内容和节奏；而开源换来的传播，是你一个人根本买不起的量。

同类旁证也够硬：放置/增量品类是网页广告变现的头部选手，Poki、CrazyGames 上 idle 类靠广告分成活得很好；微信小游戏里文字放置（开铺子、修仙挂机那一批）靠激励视频广告跑出过不少月流水案例；itch.io 上 Candy Box 系的打赏制也成立。**这个品类天然适合“低成本 + 高留存 + 广告变现”的个人开发者模型。**

## 给我的灵感

**① 中文换皮：《开炉记》——修仙炼丹放置。**
照抄 ADR 三屏结构：丹炉（对应火堆）、洞府（对应村庄）、事件弹窗。“打坐”代替添柴，灵石代替木材，筑基/金丹代替小屋/教堂，随机事件写成“师门来信”。事件 30 条、建筑 15 个即可开服，MVP 两周量级。变现走微信小游戏，激励视频“加速炼丹”，这是被验证过的组合。

**② 融合款：文字村庄 + 自动探索小队。**
村庄照 ADR 挂机，另派一支小队自动出圈探索，每次回来生成一份 roguelike 风格的**文字战报**（“你派出的猎人在第 3 层遭遇狼群，损失 2 肉 1 人”）。战报做成可分享的图片卡片，自带传播属性。MVP 三到四周，变现用 IAP 加速 + 分享落地页广告。

**③ 加一层钩子：每日来信。**
把随机事件系统绑上真实日历：每天一封信推进一条长剧情，错过就要等（或看广告补读）。在 ADR 现成的事件系统上包一层日期判断就行，MVP 一周。真实时间驱动 + 推送召回，是放置游戏提留存的便宜大招。

## 上手

- 仓库：https://github.com/doublespeakgames/adarkroom
- 在线试玩（免费、有中文）：https://adarkroom.doublespeakgames.com
- iOS 付费版：App Store 搜 "A Dark Room"（Amir Rajan 移植版）

建议的打开方式：先玩 20 分钟，重点感受前 10 分钟“两个按钮抓人”的节奏；再打开源码，把冷却按钮和事件系统各读一遍。玩和读加起来一个晚上，你手里就多了一套放置游戏的全套骨架——剩下的问题只是：你的火堆，烧什么题材。

> [!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)
