<!-- title: 《tower_game》一根手指，盖楼上头 -->
<!-- domain: games -->
<!-- repo: iamkun/tower_game -->

# 《tower_game》一根手指，盖楼上头

## 仓库档案

对想做游戏变现的个人开发者来说，这类仓库的价值不在"抄它的代码"，而在它是一个**完整的商业最小样本**：一个玩法、一个按钮、一个循环，全部设计决策都摆在千行级别的代码里，每一行都能读懂为什么。

## 这游戏是什么：一根手指的 Timing 游戏

一句话说清：**吊车吊着一层楼左右摆动，你在它摆到正下方时点击放手，楼层落在楼下那层上；对齐就继续往上盖，有偏差就切掉多余的部分让楼变窄，完全错过就整层坠落、游戏结束。**

没了，这就是全部玩法。单指操作，一局一两分钟，失败了立刻想再来。它的核心循环画出来是这样的：

```mermaid
flowchart TD
    A["点击屏幕：放下摆动的楼层"] --> B{"与楼下那层对齐了吗？"}
    B -->|"完美对齐 Perfect"| C["连击 +1，楼层不变窄"]
    B -->|"有偏差"| D["超出部分被切掉，楼变窄一点"]
    B -->|"完全没搭上"| E["整层坠落，游戏结束"]
    C --> F["摆动速度加快，难度升级"]
    D --> F
    F --> G["即时反馈：天际线长高、分数上涨"]
    G --> A
    E --> H["结算：本局分数 vs 历史最高"]
    H -->|"不服，再来一局"| A
    H -->|"广告复活续命（变现位）"| A
```

注意这个循环里三个关键角色：**玩家每回合只做一个决策（什么时候放手）**；**系统每回合给三重反馈（楼层变没变窄、分数涨了多少、速度变快没有）**；**驱动"再来一局"的钩子是"差一点就破纪录"**——因为楼越盖越高、楼面越切越窄，死亡几乎总是发生在你觉得自己状态正好的时候。

这个玩法的原型是当年风靡诺基亚时代的 Tower Bloxx（疯狂盖楼），tower_game 用几百行前端代码把它还原成了网页版，并且只保留了最纯粹的那一个机制：Timing。没有金币、没有道具、没有关卡地图，砍到不能再砍。

## 为什么上头：把"差一点"做成武器

很多人觉得休闲小游戏的上头靠运气内容（抽卡、随机掉落），tower_game 恰恰相反，它是**纯技巧型上头**的教科书。拆开看，它踩中了五个机制设计点，每一条都能对应到你自己的项目里：

**1. 单按钮门槛：学习成本为零。** 整个游戏只有一个输入——点。玩家不需要教程，不需要看说明，第一秒就能开始。这意味着你的获客漏斗里不存在"新手引导流失"这一层。对所有想做小游戏出海或微信小游戏的人来说，"一个输入"是选品的第一条硬标准。

**2. 即时且可视的惩罚：切楼。** 你手慢了，惩罚不是扣分，而是**你的楼肉眼可见地变窄了**。剩余资源直接长在游戏画面上，玩家一眼就知道自己还剩多少容错。这种"资源可视化"比任何 UI 上的血条都狠——它把抽象的失败概率变成了具体的空间焦虑。

**3. Perfect 连击：给高手留的炫技层。** 完全对齐时楼层不变窄，还会叠加连击。普通玩家玩的是"别掉"，高手玩的是"全 Perfect"。一个机制同时服务两种水平的玩家，这是休闲游戏拉长生命周期的经典手法，学自街机音游的判定设计。

**4. 难度曲线内嵌于玩法本身：楼越高越难。** 摆动速度随高度增加，楼面随失误变窄——难度提升不需要任何额外设计，它是玩家自己每一次失误的结果。玩家无法抱怨"这关设计得不公平"，因为杀死他的是他自己 earlier 留下的窄楼面。**让玩家为自己的失误买单，且买单过程可见**，这是roguelike和超休闲游戏共通的公平感来源。

**5. 短局 + 破纪录钩子：一局 90 秒，死在 49 层。** 每局结束立刻展示分数和历史最高，而你的死亡现场——那栋歪歪扭扭的高楼——就在屏幕上。重开一局的按钮离你的拇指不超过三厘米。整个"死→不服→重开"的回路的路径长度被压到了极限。所谓"再来一局"，本质是**把重开成本降为零**。

还有一个隐性设计值得点出来：游戏结果完全由玩家操作决定，没有任何随机数。这意味着玩家会把失败 100% 归因于自己，而"我下次一定能过"的自我归因，正是技巧型游戏成瘾心理的核心引擎——它和抽卡游戏的"下次必出金"用的是同一条多巴胺通路，只是一个是技术幻觉，一个是概率幻觉。

## 技术拆解：一个 Canvas 打天下

对开发者来说，这个仓库最值钱的是它的"薄"。整个项目证明了：**一个有完整手感反馈的游戏，不需要引擎。**

**技术栈：** 纯 JavaScript + HTML5 Canvas + 原生 DOM 事件。没有 Phaser，没有 PixiJS，没有 webpack。直接双击 index.html 就能跑，部署就是静态文件扔任何 CDN 或 GitHub Pages。

**架构上值得看的几个点：**

- **游戏循环的写法。** 它用 requestAnimationFrame 驱动主循环，每帧更新楼层的摆动位置再重绘。摆动本身就是一个三角函数：楼层的横坐标随时间做正弦运动，玩家按下的瞬间取当前横坐标，和下一层楼面做矩形交集计算——交集就是新楼面，没交集就坠落。整个"物理引擎"就是高中数学。
- **状态机极简。** 等待、摆动、下落、结算，几个状态的切换用一个简单变量管理，没有引入任何状态库。对个人项目来说这反而是最佳实践：状态少的时候，显式的 if-else 比状态机库更可读。
- **移动端适配。** 触屏事件和点击事件统一处理，画布随窗口自适应缩放。这个仓库 2018 年就是按"手机浏览器一指玩"设计的，天然适合今天打包成微信小游戏或嵌进任何 WebView。
- **切楼算法可复用。** "两个矩形的交集就是幸存部分"这个判定逻辑，可以原封不动搬到任何叠加类玩法：叠汉堡、叠杠铃、叠积木、叠字母塔。这是这个仓库最值得"偷"的一段代码。

**可直接复用的组件清单：** Canvas 自适应缩放、触屏输入封装、三角函数往复运动、矩形碰撞/交集判定、分数与最高分存档（localStorage）。这五样凑在一起，就是所有 Timing 类小游戏的完整地基，总量千行级别，一个周末能吃透。

顺带说一句作者背景的启示：iamkun 能把 Day.js 做到数万星，靠的是"API 设计克制 + 极小体积"这套审美，tower_game 是同一套审美在游戏上的复用——**功能做减法，反馈做加法**。这个思路比代码本身更值得抄。

## 变现观察：小游戏的 Cash Cow 路线

先说这个仓库本身：**没有任何变现痕迹**。没有广告 SDK、没有付费点、README 里也没有打赏入口，是一个纯粹的作品型开源项目。但正因为它把"产品"做到了零负担，它特别适合拿来推演变现路径——你拿到的每一分钱都是纯利。

这类单指 Timing 游戏的真实变现路径，按门槛从低到高：

**1. 微信小游戏 + 激励视频广告（最现实的路线）。** 把代码移植成微信小游戏（Canvas API 高度同源，工作量主要是接 wx.createCanvas 和触屏接口），接微信的激励视频广告。变现点天然存在：死亡瞬间弹"看广告原地复活一次，楼层恢复到切窄前"——这正是 tower_game 循环图里那个"广告复活"位置。超休闲游戏行业的通行结构就是"失败点 = 广告点"，因为失败那一刻玩家的续命意愿最高。整个生态里，休闲单机小游戏的主要收入就是激励视频 + 插屏广告，这是被大量个人开发者跑通过的模式。

**2. 出海 H5 + 广告联盟。** 同样的代码包一层，挂 Google AdSense 或 AdMob 的 H5 广告，投到游戏聚合平台（CrazyGames、Poki 这类平台接受个人开发者提交，按广告分成）。零买量成本，吃自然流量，适合当组合拳里的一张牌。

**3. itch.io 付费/打赏。** 加关卡、换美术、做成"完整版"标 2-3 美元挂 itch.io。Timing 类游戏在 itch.io 上不是主流付费品类，单靠它收入有限，但 itch.io 对个人开发者最友好，适合当作品集和试金石。

**4. 打包 App 上架。** 加成就系统、排行榜、去广告内购（6 元买断），打包成 iOS/Android 应用。门槛在开发者账号和审核，收入天花板比小游戏高，但买量成本也真实存在——没有自然流量的把握不建议先走这条。

同类游戏确实跑通过：Tower Bloxx 本身就是当年下载榜常客，它的各种换皮版本至今仍在各大小游戏平台收广告费。这个品类被验证过近二十年，缺的从来不是商业模型，是你的那一点差异化。

## 给我的灵感：三个可以直接抄的作业

**点子一：直接复刻 + 小游戏化 + 广告复活（MVP：1-2 周）。**
clone tower_game，读懂它，然后自己重写一遍（别直接抄码，MIT 也建议重写练手），移植到微信小游戏。加上三样东西：激励视频复活、插屏广告（每 3 局一次）、简单的历史最高分云同步。美术可以整套换皮——赛博天际线、中式古建筑、太空电梯，换皮素材用 AI 生图一晚上搞定。变现：激励视频为主。这是三个点子里唯一"零创意、纯执行"的路线，适合先跑通整个上架-接广告-看报表的完整流程，把基建踩熟。

**点子二：盖楼 × Roguelike 三选一（MVP：2-4 周）。**
在原玩法上加一层：每盖 10 层，弹出三选一强化——"磁力层：容错范围扩大 20%""宽楼层：下一层楼面加宽""风之祝福：摆速降低但分数 ×1.5"。每次失误的切楼仍然生效，但 buff 给玩家构建感的空间。这一改动把纯技巧游戏变成了"技巧 + 构筑"的混合体，单局时长拉到 5 分钟，广告位从一个（复活）变成三个（复活、换 buff、开局选难度）。变现：激励视频 + 插屏组合。参考爆款逻辑，这类"微 roguelike 化"是这两年超休闲游戏续命的标准操作。

**点子三：盖楼 × 放置（MVP：3-4 周，差异化最大）。**
盖好的楼不只是一根柱子，每层楼是真实的功能房间：住宅层产出居民、商业层产出金币、观景台提升金币系数。盖楼是主动玩法，楼层经营是被动收益——离线也在涨钱，回来花钱买"更宽的初始楼面""更多 Perfect 判定窗口"。这就把一次性的 Timing 游戏变成了有留存曲线的放置游戏，而放置品类的广告变现效率（激励视频看广告加速、离线收益翻倍）是所有休闲品类里最成熟的。变现：重度依赖激励视频，可加"去广告 + 金币加成"的小额内购。工作量比前两个大，但它是唯一能做出"次留"的方案，适合当正经产品做。

三个点子的共同底座都是 tower_game 那五样可复用组件。换句话说：**这个仓库给你的是地基，上面盖什么房子，决定你能收多少钱。**

## 上手

- 仓库：<https://github.com/iamkun/tower_game>
- 在线试玩：iamkun.github.io/tower_game（GitHub Pages，据仓库页面）
- 建议路径：先在线玩 5 局，重点感受第 30 层以后的"窄楼面焦虑"→ 花一晚上读完全部源码（确实不大）→ 从点子一开始动手，两周内见到自己的第一份广告报表。

一个提醒：仓库热度高但更新不频繁，属于"作品已完成"的稳定开源项目，别期待活跃的社区答疑，遇到问题直接读源码——反正它短到没有读不懂的资格。

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