<!-- title: 《rRootage》弹幕写成XML，BOSS自己长出来 -->
<!-- domain: games -->
<!-- repo: abagames/rrootage -->

2003年3月，Windows 98 还是主流系统，一个日本独立开发者 Kenta Cho（网名 ABA Games）往个人网站丢了一个几 MB 的压缩包：rRootage，ver 0.1。没有发行商、没有引擎授权费、源码随便下。二十多年后，这个游戏被搬上了 GitHub——仓库 2018 年 1 月才建，最后一次 push 停在 2022 年 4 月，⭐81，C++，17 个 fork，License 一栏写着"Other"。星数平平无奇，但它踩中的三个设计点——**数据驱动弹幕、程序化 BOSS、一条命短循环**——今天依然是 roguelite 和弹幕手游的标配。想入局小游戏变现的人，这个仓库值得当教科书读一遍。

## 仓库档案

- **名称**：rRootage——仓库描述只有一句话：Defeat autocreated huge battleships（击坠自动生成的巨型战舰）
- **数据**：⭐81，17 fork，主语言 C++，社区补了 cmake 分支（PR #8）支持 Visual Studio 构建
- **License**：Other（自定义自由分发条款，非标准开源协议——2000 年代日本 freeware 圈的典型做法）
- **作者**：abagames，个人账号，单人开发，无组织背书
- **时间线**：游戏本体 2003 年 3 月首版；2018 年 1 月更新 ver 0.24，那次更新只干了一件事——换新版 SDL，让这份 Win98 时代的代码能在现代机器上重新编译。十五年后一个 commit 就完成复活，这个依赖管理的功力，比游戏本身更值得细品。

## 这游戏是什么

一句话说清：**BOSS 战纯享版弹幕射击**。没有杂兵、没有关卡推进，开局直接面对一艘巨型战舰，躲弹、贴脸、激光输出，打爆换下一艘，弹幕一波比一波密。你的全部操作就两个键：方向键走位，Z 键激光。

```mermaid
flowchart TD
    A[选择 BOSS 与模式] --> B[战舰展开弹幕]
    B --> C{走位决策}
    C -->|贴到 BOSS 脸上| D[高风险 激光伤害更高]
    C -->|退到安全区| E[低风险 输出拖时间]
    D --> F{在时限内击破?}
    E --> F
    F -->|是| G[得分 延长机奖励]
    G --> H[下一艘战舰 弹幕升级]
    H --> B
    F -->|否| I[机毁 几秒内重开]
    I --> B
    G --> J[换模式 = 同批弹幕换新规则]
    J --> A
```

这个循环最狠的一点是**没有任何前置内容**：传统 STG 要打过三关杂兵才见到 BOSS，rRootage 把爽点间隔直接压到零。而且它给了你四套规则皮肤，同一批弹幕库换四种玩法：

- **Normal**：按住激光键机速变慢——弹幕游戏经典的“专注键”；X 键放雷清屏，右下角数余雷
- **PSY**：擦弹（graze）积攒计量表，攒满短暂无敌——把最危险的走位变成了资源
- **IKA**：机体有黑白两种属性，同色子弹碰到会被吸收并自动转成你的激光，按键随时换色——这个极性玩法只比 Treasure 的《斑鸠》（2001）晚两年
- **GW**：展开反射镜把周围子弹弹回去，按住消耗计量表，表上显示 OK 才能发动

再记两个数字：20 万分奖一条命，之后每 50 万分再奖；BOSS 会变形，变形期间计时暂停——**血条就是倒计时**，逼你放弃安全区、贴脸赌命。

## 为什么上头

**1. 短循环 + 零延迟重开。** 一局就是一场 BOSS 战，死了几秒内重来。心理学的即时反馈原理被用到了极限：行动（走位）→反馈（子弹擦身而过的擦弹音效）→奖励（击破）之间的链条被压到最短。对比之下，多少独立游戏死在“死亡惩罚太重，玩家摔键盘退游”。

**2. 程序化弹幕制造新鲜感。** "autocreated"不是修辞——BOSS 的弹幕由 BulletML 数据自动生成，组合千变万化。玩家背板的价值被降低，“随机应变”的价值被拉高。传统弹幕游戏练一个 BOSS 要死几十次背版面，rRootage 每次都逼你当场读题。这是把 roguelike 的“随机性对抗肌肉记忆”思想，提前二十年装进了 STG。

**3. 每个模式都在教同一件事：风险可以折现。** Normal 里贴脸输出伤害更高；PSY 里擦弹换无敌；IKA 里换色吸收是把“躲子弹”重构成“吃子弹”；GW 里反射镜要求你按住不放赌一个时机。四套规则是同一枚硬币的四个面——**奖励和危险永远指向同一个方向**。玩家大脑里那台“再贪一点”的小机器被四个模式轮流上发条，这就是“再来一局”的发动机。

**4. 分数即进度条。** 延长线设在 20 万和每 50 万一个，玩家永远能算出“再撑一分钟就有一条命”。收集欲和攀比心在单机弹幕里没有皮肤和段位可依，就全押在分数上——这套朴素设计至今还在 Vampire Survivors 类游戏里发光。

## 技术拆解

技术栈：C++ + SDL 1.2 + OpenGL + SDL_mixer + Ogg Vorbis，Windows 平台，README 构建指引走 MSYS2 + pacman 装 gcc，进 src 目录 make。想读代码的人门槛不高——单人项目，无构建系统炼丹。

真正的主角是 **BulletML**。这是 Kenta Cho 自己设计的一门 XML 方言，专门描述弹幕：发射方向、弹速、增速、分裂、子母弹层级……弹幕从此不再是硬编码的 if-else，而是一份可以手写、可以程序生成的数据文件。仓库里自带的 libBulletML 就是解析器本体，后来被社区移植到 Python、JavaScript 等一票语言，堪称弹幕世界的"Markdown"。你今天在任何游戏引擎里见到的“配置驱动技能/波次表”，思路和它一模一样——**把美术问题变成数据问题，个人开发者才有产能跟团队拼**。

三个可以直接抄的工程决策：

- **随机数用 Mersenne Twister（梅森旋转算法）**——同一种子同一弹幕，天然可复现。放到今天就是“每日挑战”功能的地基，零成本接入排行榜。
- **四模式共享引擎**——Normal/PSY/IKA/GW 只动规则层，渲染、碰撞、BOSS 状态机全部复用。内容量×4 的成本却只多写了规则判断。独立开发者做“模式”而不是做“续作”，这是最划算的扩张路径。
- **BOSS 变形状态机 + 计时暂停**——把 DPS 检查做成视觉演出，变形即换阶段，一艘战舰塞进三场战斗。

可复用组件清单：libBulletML（含各语言移植版）、弹幕数据文件、擦弹计量逻辑、BOSS 阶段状态机。这套东西拼一拼，一个弹幕游戏骨架 weekend 就能立起来。

## 变现观察

作者本人是变现意义上的“反面教材”——完全免费、源码公开，典型的日本 freeware 文化，回报是行业地位而非收入：BulletML 成了弹幕游戏的事实标准，他本人被写进无数 STG 的致谢名单。但接力棒有人接得住：

- 他更早的作品《TUMIKI Fighters》（吸积木飞机变大）后来被 Majesco 改编成 Wii 商业游戏《Blast Works》——freeware 素材被发行商 commercialize 的经典路径；
- 同时代单人弹幕游戏的天花板是 ZUN 的东方 Project：一人社团，Comiket 实体销售 + Steam 数字版双轨，卖了二十多年——证明弹幕品类的付费意愿真实存在；
- 同期的《Warning Forever》用“自动生成 BOSS”做卖点同样立住了脚，说明这个钩子当年就不是孤例。

落到今天的机会窗口：Steam 上 bullet hell 是常青利基 tag，受众稳定不追热点；网页版可以走 itch.io 付费/打赏 + 广告；移动端单指弹幕 + 广告复活是被国内小游戏市场反复验证的模式。rRootage 自己一分钱没赚，但它的设计模板每一层都能变现。

## 给我的灵感

**1. 《60 秒 BOSS》网页版。** 单 BOSS、一局 60 秒、JSON 配置弹幕（BulletML 思想的现代简化）、每日种子 + 全球排行榜。Canvas + TypeScript，一到两周 MVP。变现：itch.io 定价 2–3 美元，或免费 + 网页广告，排行榜截图天然带传播性。关键设计就抄 rRootage：死了立刻重开，单局成本趋近于零。

**2. 弹幕游乐场（UGC 向）。** 做一个可视化节点编辑器，玩家拖拽节点生成弹幕，产出分享码，别人导入挑战“谁的 BOSS 更变态”。本质是把 BulletML 从手写 XML 升级成现代交互——数据驱动的骨架不变。工作量三到四周。变现：编辑器免费引流，付费 BOSS 包或订阅制精选榜单。这是四个方向里天花板最高的，UGC 内容飞轮一旦转起来，产能不再是你的瓶颈。

**3. 竖屏单指弹幕 + 放置。** 自动开火，玩家只管走位；擦弹自动积攒无敌，离线也在攒——把 PSY 模式的擦弹表和放置游戏的挂机收益焊在一起。IKA 的黑白吸收可以做成左右手双区操作，天然适配竖屏。变现：广告复活 + 看广告双倍擦弹收益。中度工作量，适合先做微信/抖音小游戏试水。

## 上手

- 仓库：https://github.com/abagames/rrootage
- README 附 rr0_24.zip 直链，解压跑 `rr.exe`（Win98 or later，需要 OpenGL）；读代码进 src 目录 make，VS 用户切 cmake 分支
- 没有官方网页试玩版——注意，这本身就是一个机会：一个 2003 年的经典，全网居然没有一个能点开就玩的网页复刻

81 星的小仓库，教给你的是最值钱的那类思维：把“画画式的内容生产”改造成“数据式的内容生产”。弹幕是 XML，BOSS 是数据，模式是规则皮肤——内容于是在一个人手里翻了四倍。这套账，放到你下一个项目里照样算得通。

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