<!-- title: 《Dose Response》他把毒瘾做成了玩法 -->
<!-- domain: games -->
<!-- repo: tryjumping/dose-response -->

# 《Dose Response》他把毒瘾做成了玩法

先说一个反常识的事实：市面上教你“游戏为什么上头”的书和课一抓一大把，核心循环、可变奖励、进度感、损失厌恶，术语背完你还是不会设计。而有个人反着干了一件事——他直接把“上头”本身做成了游戏。你扮演的不是勇者，是一个瘾君子；你追逐的不是宝藏，是下一剂。这个游戏叫 **Dose Response**，仓库在 [tryjumping/dose-response](https://github.com/tryjumping/dose-response)，纯 Rust 写的传统 roguelike，一百来个 Star，AGPL 开源，却在 itch.io 上挂着三个平台的免费下载包。单人开发，零素材成本，单局五到十分钟。

对想入局游戏变现的个人开发者来说，这个仓库的价值不在“抄它赚钱”——它自己一分钱没收。价值在于：它是一份**成瘾循环的活体标本**，把所有让玩家停不下来的机制拆开摊平了给你看。你看懂它，就等于看懂了超休闲游戏、放置游戏、甚至拼多多式签到玩法背后的同一套骨架。

## 仓库档案

| 项目 | 内容 |
|------|------|
| 仓库 | [tryjumping/dose-response](https://github.com/tryjumping/dose-response) |
| Star / Fork | 约 113 ⭐ / 6 fork |
| 语言 | Rust（2018 edition） |
| License | AGPL v3+ |
| 作者 | Try Jumping（Tomas Sedovic），个人开发者，GitHub 上只有这一个仓库 |
| 最近更新 | 2026 年 10 月上旬仍有提交，版权声明从 2013 一路写到 2024 |
| 试玩 | [itch.io 页面](https://tryjumping.itch.io/dose-response)，Windows / macOS / Linux 免费下载，安装包 1-2 MB |

作者是个老手：Tomas Sedovic，推特账号 @tryjumpingdev，个人网站 tryjumping.com，做了十多年游戏开发。Dose Response 从版权行看是 2013 年的项目，十几年间多次重写，2018 年前后用 Rust 重构，现在 master 分支已经把 SDL2 换成了纯 Rust 的窗口库。这种“一个人、一个游戏、养十几年”的长期主义，本身就是独立开发里值得研究的现象。

## 这游戏是什么

一句话：**开放式地图的 ASCII roguelike，你在城市里游荡，一边躲避威胁心智和身体的危险，一边拼命找下一剂。**

画面是纯字符：你就是那个 `@`，`%` 是食物，`i` 是一剂药，怪物是各种字符，视野之外全是黑的。键盘八方向移动，小键盘、方向键加 Ctrl/Shift、vi 键三套方案任选。没有合成系统，没有等待机制，没有兽人——itch 页面上作者专门写了一句 "No crafting, no waiting, no orcs!"，意思是把传统 roguelike 里所有劝退的复杂度全砍了，普通人捡起来就能玩，单局五到十分钟。

规则表面积很小，小到一屏就能写完：

- 你控制 `@` 在地图上走，踩到 `%` 捡食物，可以存着以后吃；
- 踩到 `i` 就是嗑药——**清空你周围的怪物，同时扩大你的视野**；
- 药劲过去，你进入**戒断状态**，疲劳值开始上涨，疲劳爆表就输；
- 吃东西或者再来一剂，都能压住戒断反应；
- 但每一剂都在堆**耐受度**：同样的剂量越来越不管用，你得嗑更多、或者找更猛的货；
- 剂量的**纯度随机**：有时候踩到水货，有时候直接“炸弹”，开局就过量致死非常容易；
- 仓库 README 的快速指南最后一条是这么写的："It is possible to win the game"——**这游戏是可以赢的**。怎么赢、赢意味着什么，游戏不说，你自己走过去看。

看清楚这套循环了吗？把它画出来是这样的：

```mermaid
flowchart LR
    A["踩到 i：来一剂"] --> B["怪物清场 + 视野扩大"]
    B --> C["药劲过去：进入戒断"]
    C --> D["疲劳值持续上涨"]
    D --> E{"吃食物压住<br>还是再来一剂？"}
    E -- "吃 %" --> F["续命成功<br>但耐受度没变"]
    E -- "再嗑" --> G["耐受度上升<br>下次需要更强"]
    F --> H["纯度随机：<br>水货或者猛料"]
    G --> H
    H --> A
    D -- "疲劳爆表" --> I["倒地，开新局"]
```

这就是全部。一个地图，两三种资源，四条状态规则。但它内嵌的结构，和一切让人上头的东西一模一样。

## 为什么上头

把 Dose Response 的机制逐条拆开，你会发现教科书里的每个“成瘾设计”术语，在这里都有肉身。

**一、即时反馈：一剂下去，世界亮了。** 嗑药的瞬间给你两个正反馈：周围怪物直接蒸发，黑色迷雾往外推一圈，看得见的格子变多。传统 roguelike 里这两件事要靠升级、靠装备、靠探索慢慢攒，这里一步就给你。这个“一步登天”的手感是故意的——它模拟的就是嗑药那一刻。玩家第一次嗑完的反应通常是“哇”，第二次开始变成“我还想要”。

**二、随机奖励：纯度是抽奖。** 每一剂的强度随机，README 原话是 "sometimes you come across a weak one and other times it's the bomb"。这是标准的可变比率强化：奖励不确定时，重复行为的频率最高。你没法只靠踩一格就稳赢，于是每一步移动都带着一点开箱的期待感。同一套机制在手游里叫“抽卡”，在 Dose Response 里叫“今天的货怎么样”。

**三、进度感的反噬：耐受度是递增的成本曲线。** 大多数游戏给你的进度是正向的——等级涨、数值涨、你变强。Dose Response 把这条曲线拧了个方向：**是你的需求在涨**。同样的剂量，第一次是神药，第十次只是维持。玩家为了追回第一次嗑药时的那种“世界变亮”，只能加大剂量。这就是所有成瘾物的核心数学：快感恒定，成本指数上升。很少有游戏敢把这个做成核心机制，因为对玩家太残酷——但正因为它残酷，它才诚实，才让人过目不忘。

**四、损失厌恶：戒断是一个看不见的倒计时。** 药劲一过，疲劳就开始爬，爬满就死。这个设计妙在它不是显式计时器，你看不到“还剩 30 秒”，只看到疲劳数字在涨。于是每走一步都在权衡：先找食物续命，还是赌一把前面有 `i`？这是经典的“双 chores 设计”——两个都不舒服的选项之间反复横跳，玩家反而停不下来，因为停下来就等于认输。

**五、单局短到没有心理负担。** 五到十分钟一局，死了立刻开新局。开局还专门提示“前期非常容易过量致死”——也就是说你的第一局大概率死于嗑太多。这个失败是设计好的第一课：它教你的不是“别嗑”，而是“别一次嗑那么多”。从第二局开始你就在优化剂量管理，一个原本关于挣扎的故事，被玩家自己玩成了资源规划游戏——这种“我以为我在戒，其实我在精算”的错位感，是这个游戏最高级的地方。

**六、留白：胜利条件的谜题化。** "It is possible to win the game"，但怎么赢没人告诉你。开放式地图没有明确终点线，你只能一路往深处走。对一个十分钟的 roguelike 来说，这个悬念就是“再来一局”的钩子：我不是来嗑药的，我是来看结局的。

## 技术拆解

技术栈对个人开发者相当友好，处处是“怎么用最小成本把游戏做出来”的示范。

**纯 Rust，依赖极少。** 代码用 Rust 2018 edition，发布版 1.0/1.1 用 SDL2 渲染，master 分支已经换成纯 Rust 的窗口库，渲染走 glium 后端。构建只需要装一个 ALSA 开发库（Linux 下 `libasound2-dev`），没有引擎、没有资源管线，`cargo run` 直接起。整个游戏打包出来 1-2 MB——对习惯了几百 MB 安装包的玩家来说，“下载只要一秒”本身就是留存优势。

**音效全部用 jsfxr 生成，素材成本为零。** DEVELOPER-NOTES 里明说：所有音效（移动、攻击）来自 [sfxr.me](https://sfxr.me/)。这个网站按随机参数合成 8-bit 音效，点几下就能导出。个人开发者最头疼的“没有美术没有音频”，这个项目给出了标准答案：ASCII 字符 + 程序化音效，美术预算 0 元。

**内置宣传片管线。** 游戏能逐帧把画面存成图片，配合 ffmpeg 合成视频，回放系统（replay log）也能直接跑。作者甚至把发版流程写成了清单：改版权年份、改版本号、构建、录视频。个人开发者做宣发最缺的就是游戏录像素材，这条“游戏自带录制功能”的思路可以直接抄——尤其你要发抖音/B站短视频引流时。

**ZeroMQ 无头模式做自动化测试。** 编译时开 `--features=remote`，游戏可以被外部程序通过 ZeroMQ 遥控，专门用来做测试。roguelike 的平衡性调参（耐受度涨多快、纯度分布怎么摆）靠人肉玩是很慢的，把游戏变成可编程的沙盒跑模拟，这个工程思路对所有数值驱动的游戏都适用。

**回放日志里藏了个小设计。** 日志格式里有一种定时消息框：`{"ShowMessageBox":{"ttl":{"secs":5},"message":"Hello, world!"}}`——回放暂停五秒弹一句话。教学提示、剧情演出、死亡结算，全都能走这套日志系统，等于把“游戏叙事”也做成了可录制、可回放的数据。

**License 是唯一要小心的地方：AGPL v3+。** 这意味着它的**代码**不能直接搬进闭源商业产品（连网络服务使用都要求开源），但它的**设计**——耐受度曲线、戒断倒计时、纯度随机——不受版权保护，放心学。想用代码也行：你的衍生作品同样 AGPL 开源即可。

## 变现观察

先说结论：这个仓库本身没有变现动作，而且看起来作者就没打算变现。itch.io 页面免费下载，三个平台，没有付费墙、没有内购、没有打赏按钮的迹象；GitHub 一个仓库、AGPL 开源、更新了十几年。对一个职业游戏开发者来说，这更像作品集里的概念之作——用来证明“我能用机制讲故事”，顺便吸引同行和策划圈的注意。这条路径本身就是一种变现：**开源作品是独立开发者最硬的简历**，接外包、进大厂、拉合作，都从这里来。

但它的品类——“单局五到十分钟的极简 roguelike”——恰恰是最近几年被反复验证过能赚钱的赛道：

- **Balatro** 的故事大家都听过了：一个人、扑克牌 roguelike、2024 年卖爆，“上头循环 + 单局短 + 纯 2D”这个配方商业上限极高；
- itch.io 和 7DRL（七天 roguelike 挑战）社区里，大量类似体量的作品走“免费攒声望 → 出续作或重制版上架 Steam → 定价 3-10 美元”的三段式；
- 网页端的话，同类极简循环适合塞广告：死亡结算页插屏广告、看激励视频复活或加成一个开局 buff，这个模式在 H5 小游戏平台已经跑通。

Dose Response 的 ASCII 美术决定了它的受众天花板，但反过来这也是机会：**留给你换皮的空间是全量的**。它的机制骨架配任何题材都成立，而“换皮 + 变现层”正是个人开发者最该干的事。

## 给我的灵感

**点子一：把这套循环搬进微信小游戏——做“咖啡续命模拟器”。** 职场题材天然接地气：`@` 是打工人，`i` 是咖啡，`%` 是外卖，戒断是“下午三点的困意”，耐受度是“喝越多越不管用”，视野扩张是“灵感爆发连清三个需求”。机制一行不用改，换文案就成立。MVP 工作量：用 Godot 或者干脆照它的机制用 JS 写，两到三周。变现：死亡结算插屏广告 + 看广告领“浓缩咖啡”（加强版的一剂），这一层广告位是天然的——因为“再来一剂”本来就是游戏的核心动作。

**点子二：极简 roguelike 三件套，直接抄成 checklist。** 作者的减法清单值得裱起来：no crafting、no waiting、no orcs。翻译过来就是——砍合成系统、砍回合等待、砍无关怪物种类，只留核心循环 + 五到十分钟单局 + 可以赢的悬念。你用这个清单审视任何游戏点子，砍完剩下的就是 MVP。技术栈照抄它的也行：Rust 或者 JS + 字符渲染，音效 jsfxr 生成，一周出可玩版本，先挂 itch.io 免费收反馈，数据好看再上 Steam 定价 4.99 美元。

**点子三：把毒瘾机制反转成正向产品。** 这套循环反过来用就是行为设计：耐受度曲线 = 学习/健身 App 里“难度自适应”，戒断倒计时 = “连续打卡将中断”的损失厌恶，纯度随机 = “今日奖励盲盒”。做一个“戒咖啡因挑战”或“戒烟陪跑”的小工具，把 Dose Response 的机制原样搬进来，只是把循环的方向拧成正向——熬过戒断就点亮一天。这类产品适合上 Kickstarter 或者找健康类 B 端合作，也可以作为公益项目拿赞助。工作量：复用点子一的代码，改数值方向，一周。

**点子四（给技术人的彩蛋）：把 ZeroMQ 遥控模式抄走。** 给自己的数值驱动游戏加一个“无头 + 远程控制”的编译开关，用脚本跑一万局统计存活曲线，调平衡的效率完全不是一个量级。这个工程实践比游戏本身更值钱。

## 上手

- 仓库：[https://github.com/tryjumping/dose-response](https://github.com/tryjumping/dose-response)
- 免费试玩：[https://tryjumping.itch.io/dose-response](https://tryjumping.itch.io/dose-response)（Windows / macOS / Linux，安装包 1-2 MB）
- 构建指引看仓库里的 `DEVELOPER-NOTES.md`，Linux 下装好 ALSA 开发库，`cargo run` 即可
- 操作是纯键盘：小键盘八方向最顺手，没小键盘用方向键加 Ctrl/Shift，vim 玩家直接 vi 键

玩之前记住 README 那句话：开局很容易过量致死。第一局死于嗑太多不是你菜，是游戏在给你上课——所有让人上头的东西，第一口都是免费的。

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