<!-- title: 《Ordinary Puzzles》点点连线，禅到上头 -->
<!-- domain: games -->
<!-- repo: mmazzarolo/ordinary-puzzles-app -->

一个意大利程序员，用下班时间养了一个“点点连线”的谜题游戏七年：代码全开源、全平台免费、没有一条广告，App Store 和 Google Play 加网页版三个入口同时在线。它没有新手引导、没有充值弹窗、没有体力条，却让一堆人天天蹲在地铁上画线画到坐过站。今天拆的仓库是 mmazzarolo/ordinary-puzzles-app——它可能是“个人开发者做小而美游戏”这个命题下最干净的一份参考答案。

## 仓库档案

- 仓库：mmazzarolo/ordinary-puzzles-app
- ⭐ 509（2026-10-05 数据）
- 语言：TypeScript；License：MIT
- 作者：Mehdi Mazzarolo，个人开发者，React Native 圈子的熟面孔，写过不少 RN 生态的开源库
- 时间线：2019 年 12 月创建，最近一次推送 2026 年 8 月——七年长更，仓库至今活跃
- 玩法入口：官网 ordinarypuzzles.com 直接网页开玩，Google Play 和 App Store 均有上架
- 协作姿态：README 写明不直接收 PR，想法请走 issues——典型的一人一城项目

## 这游戏是什么

一句话：在一个点阵网格上画一条线，把所有带点的格子串成一个闭合回路，规则只有两条——白点必须被直线穿过，黑点必须转弯。

这就是纸笔谜题 Masyu（真珠）的数字化版本，Masyu 本身出自日本谜题出版社 Nikoli（数独的娘家）的看家题库。Ordinary Puzzles 把它做成了极简 App：开局给一张空网格和若干黑白点，你用手指拖出一条线，画对的格子亮起，成环瞬间整个棋盘涨满颜色，然后自动进入下一关。除 Masyu 外还内置了“Ordinary Variants”规则变体，同一套画线操作，规则字典多翻几页。

核心循环长这样：

```mermaid
flowchart LR
    A[开局：程序生成新谜题] --> B[读规则：白点直行 黑点转弯]
    B --> C[拖拽画线]
    C --> D{系统即时校验}
    D -- 断线/交叉/漏点 --> E[红光反馈 立刻重画]
    E --> C
    D -- 成环通关 --> F[全盘点亮 + 解锁下一关]
    F --> G[难度阶梯升级]
    G --> A
```

整个循环里没有随机掉落，没有等待时间，玩家每一秒的操作都有反馈，系统每一秒的反馈都指向下一步操作——这是最古典也最耐用的谜题循环。

## 为什么上头

拆开看，它的“上头”不靠多巴胺轰炸，靠的是五件反直觉的小事：

**1. 反馈延迟小于一秒。** 手指划过的格子立刻变色，走错立刻给出断线提示。谜题游戏最怕的是“我画完一大段才知道错哪了”，它把纠错粒度压到了每一格，错的感觉是“我马上就能修好”，而不是“我又失败了”。

**2. 完美信息，零随机惩罚。** 没有暴击、没有抽卡、没有概率。卡住只可能怪自己，于是“再来一局”的心理动力是不服气而不是赌徒心理。不服气驱动的留存比赌博驱动的留存长得多——这是 Masyu 这类 Nikoli 系谜题能卖四十年的底层原因。

**3. 程序生成的平滑难度阶梯。** 谜题不是手搓的，仓库问答里写了生成方案：程序化出题加唯一解校验。网格从最小几格一路涨到几十格，生成器保证每关“跳一跳够得着”。玩家永远处在心流区边缘，这是手写题库做不到的供给量。

**4. 单局极短，成瘾单位是“关”而不是“局”。** 一关十秒到一分钟，通关动画和下一关的加载之间没有任何广告或过场插队。真正的钩子是“下一关点起来的手感”——禅意游戏的成瘾单位切得很细。

**5. 无失败的禅学包装。** 没有计时器、没有 Game Over 画面、没有音乐突变的死亡音效。焦虑感被刻意拿掉之后，玩家反而愿意待更久——高压玩法（Flappy Bird 式）涨爆发，低压玩法涨时长，这款选了后者。

它也确实有短板：没有每日一题、没有连胜、没有好友排行，留存上限被设计者的“反成瘾审美”人为压住了。而这恰恰是后来者最好抄的空位。

## 技术拆解

- **一套代码三端发布**：React Native + Expo + MobX + TypeScript，同一个仓库产出 iOS、Android、Web 三个版本。对副业开发者来说这是性价比最高的技术栈——网页版当试玩 Demo 吸量，原生版接商店流量。
- **状态管理极简**：棋盘状态、关卡进度、设置全部走 MobX 的 observable store，没有引入重框架。游戏逻辑（画线、校验、成环判定）是纯函数式的规则引擎，和渲染层解耦，换皮成本极低。
- **谜题生成器是核心资产**：随机生成 + 唯一解验证，保证无限关卡供给。这个生成器加校验器加起来几百行的量级，是整个仓库最值得直接复用的模块。
- **零后端架构**：进度存本地，没有任何账号体系和服务器。运行成本约等于零，网页版挂在静态托管上就能活——这是“独立游戏先不欠服务器钱”的标准姿势。
- **素材策略清晰**：代码 MIT 随便拿，但 README 的 FAQ 里明确写了美术和音效素材不可复用；音效来自 freesound.org 的素材库。开源代码、护住美术，这是个人开发者保护自己作品辨识度的聪明做法。

## 变现观察

有意思的是，这个仓库本身就是一份“反向变现样本”：作者在 README 里明说，做它的动机是玩技术、找乐趣，它不是一门 side business；游戏完全免费、无广告，未来会不会加付费功能“可能会有，但不承诺”。

但同类赛道是真实跑通过钱的：

- **Flow Free 模式**：同样是画线谜题，免费下载 + 关卡包内购 + 卡关看广告拿提示，常年挂在休闲解谜榜单上，是“简单规则吃一辈子”的教科书案例。
- **禅意解谜品类的买断与去广告**：App Store 上 Zen 风格解谜（比如 Hexcells 一系、Monument Valley 一系）靠一次性买断或“去除广告”内购活得体面，用户对这类产品的付费意愿明显高于硬核品类——为审美付钱。
- **H5 谜题的网页广告**：Poki、CrazyGames 这类网页游戏联盟对 puzzle 类目分红稳定，网页版零成本上线就能接，适合当作第一个变现试验田。
- **Nikoli 老本行**：谜题本身能卖——纸质谜题书、订阅制每日谜题（Nikoli 自己和《纽约时报》小游戏都在验证这个模式）。

这个仓库给你的真实启示是：先把作品做成“值得被信任的免费品”，个人品牌、GitHub 星标、商店评分都是复利资产，变现层后加不迟。

## 给我的灵感

**1. 换皮移植：把 Masyu 搬进中式题材（MVP 约 1-2 周）**
生成器和校验器思路照抄，题材换成糖画、算盘珠、地铁环线、长城烽火台——“画一条闭环穿过所有糖画签子”天然成立。变现走微信小游戏激励视频或网页广告。核心工作量就是生成器（几百行）加画线交互，美术用 AI 出图压到一周内。

**2. 补上它没做的每日钩子（在复刻基础上加一周）**
每日一题 + 连胜计数 + 与好友比步数，是 Wordle 验证过的留存铁三角，而 Ordinary Puzzles 恰好一样都没做。技术上只需要一个 Cloudflare Workers 级别的轻后端发题，客户端拿日期做种子即可。变现路径直接对齐《纽约时报》小游戏：订阅制题库或去广告内购。

**3. 把生成器抽成“卖铲子”生意（几乎零额外开发）**
谜题生成器加唯一解校验，就是儿童逻辑教辅、谜题书出版、教育 App 的内容流水线。把它包装成 SDK 或按量出题的 API，卖给需要海量合规谜题内容的下游——当年合成大西瓜全网疯传时卖铲子的人闷声赚钱，这条路反过来走也通。

## 上手

- 仓库：https://github.com/mmazzarolo/ordinary-puzzles-app
- 网页试玩：https://www.ordinarypuzzles.com/
- 移动端：Google Play、App Store 搜 Ordinary Puzzles

建议动线：先网页版画三关感受“成环那一秒”的反馈设计，再克隆仓库看 puzzle 生成器和画线校验的实现——如果你正想找一个“规则单一、代码可读、三端可发”的第一练手项目，这份 TypeScript 作业值得从第一行读起。

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