先说一个反常识的事实:市面上教你“游戏为什么上头”的书和课一抓一大把,核心循环、可变奖励、进度感、损失厌恶,术语背完你还是不会设计。而有个人反着干了一件事——他直接把“上头”本身做成了游戏。你扮演的不是勇者,是一个瘾君子;你追逐的不是宝藏,是下一剂。这个游戏叫 Dose Response,仓库在 tryjumping/dose-response,纯 Rust 写的传统 roguelike,一百来个 Star,AGPL 开源,却在 itch.io 上挂着三个平台的免费下载包。单人开发,零素材成本,单局五到十分钟。
对想入局游戏变现的个人开发者来说,这个仓库的价值不在“抄它赚钱”——它自己一分钱没收。价值在于:它是一份成瘾循环的活体标本,把所有让玩家停不下来的机制拆开摊平了给你看。你看懂它,就等于看懂了超休闲游戏、放置游戏、甚至拼多多式签到玩法背后的同一套骨架。
| 项目 | 内容 |
|---|---|
| 仓库 | 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 页面,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 就是嗑药——清空你周围的怪物,同时扩大你的视野;看清楚这套循环了吗?把它画出来是这样的:
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。这个网站按随机参数合成 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”——恰恰是最近几年被反复验证过能赚钱的赛道:
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 遥控模式抄走。 给自己的数值驱动游戏加一个“无头 + 远程控制”的编译开关,用脚本跑一万局统计存活曲线,调平衡的效率完全不是一个量级。这个工程实践比游戏本身更值钱。
DEVELOPER-NOTES.md,Linux 下装好 ALSA 开发库,cargo run 即可玩之前记住 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 等场景全覆盖。
