<!-- title: 《Slay the Web》一副牌，爬塔爬到天亮 -->
<!-- domain: games -->
<!-- repo: oskarrough/slaytheweb -->

## 仓库档案

先说清楚它是什么、不是什么：它不是教程、不是框架，是一个能完整通关的成品游戏——有血条、有能量、有 Boss、有死亡和重开；同时它把全部源码摊开了，你可以边玩边翻。对想入局卡牌品类的个人开发者来说，这份样本的含金量在于：它是一个人、用浏览器技术、不带游戏引擎做出来的，整条路径你都能走一遍。

## 这游戏是什么

一句话：你抓着一副牌，在浏览器里一路打怪、捡牌、捡遗物，爬到塔顶打死 Boss；死了，从头再来。

每回合的节奏是这样转的：

```mermaid
flowchart TD
    A[新回合 抽5张牌 + 3点能量] --> B[看敌人意图做决策<br>他下回合要打8 我挡还是拼]
    B --> C[出牌<br>攻击飘掉血数字 格挡亮盾]
    C --> D{能量用完了吗}
    D -->|还有能量| B
    D -->|结束回合| E[敌人结算<br>你掉血 他也可能掉血]
    E --> F{谁先倒}
    F -->|你死了| G[结算一局<br>复盘哪张牌选错了]
    G -->|心有不甘 再来一局| A
    F -->|敌人倒了| H[发奖励<br>新卡三选一 或捡遗物金币]
    H --> I{塔爬完了吗}
    I -->|下一层 怪更硬| A
    I -->|Boss倒下| J[通关爽感<br>换个套路再爬一次]
```

玩过《杀戮尖塔》的人三十秒上手：你有一条血，每回合抽五张牌，手里三点能量；牌分攻击（砍怪掉血）、格挡（这一回合少掉血）、技能（回血、抽牌、上状态这类效果）。敌人不是黑箱——它头顶明明白白写着“下回合要打你 8 点”，于是每个回合都变成一道小谜题：这三点能量，是全砸输出抢血线，还是留两点挡住下一刀？

打赢一场，新卡三选一；路过营火，回血或者删掉一张烂牌给卡组瘦身；捡到的遗物是被动效果，负责滚雪球。地图是一条节点链：战斗、宝箱、营火、精英怪，最后 Boss。一局半小时上下，死了从头来，死亡惩罚为零。

整个游戏没有引导弹窗、没有签到、没有体力条，就是“打—拿牌—变强—再打”这一根筋。这正是它值得拆的原因：钩子全在规则内部，一点不靠运营手段硬拽。

## 为什么上头

拆成五个开关，一个一个对着玩法说：

**1. 信息透明制造的“差一步”感。** 敌人意图摆在明面上，你永远觉得“这局我能算清楚”。输了不怪运气，只会怪自己上一回合少挡了两点——这种复盘冲动是重开一局的最强燃料。纯运气游戏输了会让人摔手机，这种游戏输了会让人想报仇。锅甩给了你，你就不服。

**2. 三选一的随机奖励。** 战斗结束掉新卡，是整个游戏的心跳。你不知道下一张来什么，但每次都期待“来张跟我套路配的”。这就是变率强化（variable-ratio reinforcement），和抽卡同一个心理原理——但它把“抽卡”包进了玩法循环里，不需要你额外掏钱，免费玩家照样吃满这口糖。这一点对做免费游戏的人极有参考价值：随机奖励不一定要跟付费绑死，它首先是留存工具。

**3. 卡与卡的化学反应。** 单独一张普通牌平平无奇，两张组合可能起飞：一张“每获得格挡就加攻击力”，配一摞纯防御牌，就玩成铁刺猬流。玩家自己“发明”套路的那一刻，爽感不是系统施舍的，是自己挣的——这种成就感留存极深，也是玩家愿意写攻略、录视频、发帖晒卡组的根本原因，你的传播素材就是这么来的。

**4. 单局成本低到可以“再来一把”。** 一局三十分钟，死亡零惩罚——没有账号进度要心疼，没有体力要等。死在 Boss 面前，手指已经自己按下重开。移动端同类还会把单局压到十分钟以内，循环更凶。

**5. 轻收集加轻攀比。** 卡牌和遗物给收藏欲一个出口；“我用什么套路通的塔”天然适合截图发出去，是社交货币。卡组构筑类游戏的社区生态，一半是靠晒卡组撑起来的。

## 技术拆解

这套代码最值得抄的一点：它证明了卡牌游戏根本不需要游戏引擎。

- **渲染就是 React 组件。** 没有 Canvas，没有物理引擎。每张卡是一个组件，每个敌人是一个组件，血条就是 CSS。卡牌游戏的本质是“表格和按钮”，DOM 完全够用，还白送响应式和无障碍。你唯一需要动画的地方——出牌、掉血飘字——CSS transition 就接住了。
- **游戏状态是一棵纯数据树。** 出牌、抽牌、敌人行动，全是操作这棵树的函数，reducer 风格，每一步状态都可打印、可回放。卡牌不是 class，是数据对象：名字、费用、伤害/格挡数值、效果，再加一个小函数负责执行。加一张新卡，多数时候只是往配置表里加一个对象——这正是《杀戮尖塔》 Mod 生态能火的同款设计：数据驱动，规则外置。
- **敌人意图 AI 只有几行。** 从该敌人的招式表里加权随机挑一个动作，作为下回合预告显示出来。成本极低，体验收益极大——“看见自己要挨打”这一个信息，把回合制从填表变成了读局。
- **存档走 localStorage，部署纯静态。** 扔到 Netlify 或 Cloudflare Pages 白嫖托管，没有任何后端。断线、刷新、隔天继续爬，玩家无感。
- **构建是 Vite。** 改一行热更新秒到，对“调数值—刷新—再打一遍”这种卡牌调参工作流极其友好。

可以直接搬走复用的件：卡牌数据结构与效果结算、能量/格挡/状态的回合结算器、敌人意图生成、节点地图生成、localStorage 断点续玩。这一套凑齐，你就有了卡牌肉鸽的骨架库，换皮只差美术和文案。

顺带一节免费的选题课：它的卡池和内容量刻意做得比《杀戮尖塔》小得多——这是单人开发的自觉。三十张卡、六种敌人、一个 Boss，照样能构成完整的心流循环。小而美不是妥协，是这个品类单人 MVP 的正确颗粒度。

## 变现观察

仓库本身没有变现痕迹：无广告、无内购、无付费墙，作者更像是拿它练手、自娱兼教学——他在个人博客写过不少开发笔记，把卡牌实现细节摊开讲（据仓库页面）。对你这是好事：一份免费的、能跑通全流程的类型样板，商用地基现成。

看这个类型被验证过的钱在哪：

- **Steam 买断。** Deckbuilder 的主场。《杀戮尖塔》是两人团队 MegaCrit 做的，卖了数百万份；2024 年现象级的《小丑牌》（Balatro）更极端，基本是一个人写出来的，同样数百万份量级。这个品类买家认玩法不认美术体积，个人开发者胜率天然偏高。
- **移动端。** 国产《月圆之夜》证明了单机卡牌肉鸽在手机上能靠“本体买断 + DLC 内购”活得很好；超休闲容器里则走“看广告复活、看广告抽卡”。
- **网页广告。** CrazyGames、Poki 这类平台专门收“一局短、重开快”的卡牌肉鸽，流量换广告分成，零门槛上架。
- **itch.io。** PWYW（随便给）上架，攒愿望单和邮件列表，给下一部作品导流。

顺序建议：网页版免费挂广告验证留存 → 数据好再包一层上 Steam 或移动端。协议宽松（MIT，据仓库页面），商用改造合法，但换个名字、换套美术，别直接用原作者的素材和标识。

## 给我的灵感

三个可执行方向，工作量都控制在一到两周：

**1. 中文题材爬塔（最推荐）。** 骨架照抄：能量/格挡/意图系统一个不改，把卡牌整体换成武侠招式——“金钟罩”是格挡、“破军式”是重击、“吸星大法”是吸血，敌人改成木人巷、十八铜人、藏经阁扫地僧，关卡命名用“少林七十二绝技”。中文玩家对这套语汇有天然亲切感，而 Steam 上中文题材卡牌肉鸽的供给仍然稀缺，题材本身就是买量素材。MVP：三十张卡、六种敌人、一个 Boss，两周。变现：Steam 买断，18~30 元档。

**2. 极简手游版。** 往死里砍：只留十五张牌、去掉遗物、单局五分钟，套进微信小游戏或 H5 容器，钩子全押在“看广告复活一次 + 每日挑战”上。单局越短，广告位插得越自然。MVP：一周——骨架是现成的，主要时间花在数值和美术皮肤上。变现：激励视频广告。

**3. 每日一塔 + 排行榜。** 加一个“今天的塔”：固定随机种子，全世界玩家爬同一张地图，死亡层数上传排行榜。这是《Hello Wordl》“一天一题”传播模型的直接移植——每天一个共同话题驱动分享，分享带来新玩家。后端只要一个 KV 存排行榜，几乎零成本。变现：网页广告加打赏，主要吃流量。

三选一的话：先用方向 1 打样，接入方向 3 的每日挑战做冷启动，方向 2 留给国内渠道跑通后再上。

## 上手

- 仓库：https://github.com/oskarrough/slaytheweb
- 在线试玩：slaytheweb.com（据仓库页面 README）
- 建议动线：先玩两局，找到让你“再来一把”的那个瞬间 → 打开源码里的卡牌配置表，改一张牌的数值 → 再打一局，感受这点数值对手感的影响 → 到这一步，你就已经有把握开自己的坑了。

爬塔这个品类的天花板还在被一个人一次一次抬高，而它的地基，已经有人用纯前端技术替你趟平了一遍。你缺的不是机会，是那三十张卡的第一次 commit。

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