<!-- title: 《Pokete》一张图都不画，宝可梦照样上头 -->
<!-- domain: games -->
<!-- repo: lxgr-linux/pokete -->

假设有人给你下了个死命令：做一个"宝可梦"，但不许画一张图，不许配一段音频，美术预算为零，运行环境只有一扇黑乎乎的终端窗口。听起来像惩罚，但对开发者来说，这恰恰是把"游戏到底为什么好玩"扒到骨头上的最好实验。德国开发者 lxgr 交出的答卷叫 **Pokete**——一个纯 Python、纯字符的宝可梦式回合制收集 RPG，在 GitHub 上攒起了千星量级的人气（据仓库页面；本次调研外网抓取受限，未取到实时精确值，发稿前建议复核一遍）。它没花一分钱美术，却把过去三十年被反复验证过的那套"上头配方"原样装了进去。

## 一、仓库档案

- **仓库**：[lxgr-linux/pokete](https://github.com/lxgr-linux/pokete)
- **⭐ Star**：千星量级（据仓库页面，本次未抓到实时精确值）
- **语言**：Python——而且是纯标准库的 Python，渲染靠 curses，没有引入任何游戏引擎
- **License**：GPL-3.0（据仓库页面）
- **作者**：lxgr，个人账号，非组织。核心贡献者基本就他一个，社区贡献以修 typo、补翻译、加精灵数据为主，是标准的"一个人养一个游戏"
- **更新状态**：长期活跃维护（据仓库页面，具体提交时间未抓取）
- **形式**：本地终端游戏，Linux/macOS 原生可跑，Windows 需补一个 windows-curses 依赖（据 README 的常规说明）

放在"个人开发者能参考的样本"这个维度看，它的含金量不在星光，而在于：**这是一份把收集类 RPG 的最小可玩骨架完整摊开的源码**。

## 二、这游戏是什么

一句话：你在终端里扮演训练师，走地图、钻草丛、遇怪、打架、扔球捕捉、攒图鉴、打道馆、拿徽章、解锁新区域——宝可梦主线的完整循环，一个不少，全靠字符阵列渲染出来。一百多种精灵（据仓库页面）、上百种技能、十余种属性克制、数个大区域地图、进化链、训练师 NPC、治疗点和商店，全部由数据定义驱动，而不是散落在代码里的硬编码。

它的核心循环画出来长这样：

```mermaid
flowchart TD
    A[在地图上行走] --> B{钻进草丛/水面}
    B -->|概率触发| C[遭遇野生精灵]
    B -->|未触发| A
    C --> D[回合制战斗：选技能或扔精灵球]
    D -->|打赢| E[获得经验与金币]
    D -->|捕捉成功| F[图鉴 +1 新精灵入库]
    D -->|打输| G[回治疗点 几乎零惩罚]
    E --> H[升级 学新技能 逼近进化线]
    F --> I[补图鉴缺口 凑克制体系]
    H --> J[挑战道馆]
    I --> J
    J -->|拿徽章| K[解锁新区域 出现更强野生精灵]
    K -->|更大的图鉴缺口| A
    G --> A
```

注意这个环的关键接口：**"行走"是输入，"随机遭遇"是抽奖，"战斗"是兑现，"图鉴与徽章"是账本**。玩家每一分钟都在这四个接口之间过账，而账本永远差几笔——这就是它让你坐下一局的理由。

## 三、为什么上头

把 Pokete 拆开看，它用的每个钩子都是宝可梦系列三十年前就调好的参数，只是换成了字符皮肤：

**1. 草丛就是斯金纳箱。** 每走一步都可能遇怪，遇什么怪、稀不稀有，全随机。行为心理学里管这叫可变比率强化——奖励什么时候来、来多大，玩家自己说了不算，于是停不下来。对比一下：固定奖励的游戏（打十个怪必掉一件）玩半小时就腻，因为你的大脑把日程表背下来了。草丛的可怕之处在于它永远"下一步也许有"。

**2. 图鉴永远缺几只。** 蔡格尼克效应：人对"未完成"的记忆远强于"已完成"。Pokete 的图鉴界面上，那些灰色的未捕获条目会一直挂在你视野里，像购物车里没结算的东西。捕捉成功率还故意不满——扔球会失败，稀有精灵更是连扔十次都可能溜走。失败本身成了"再来一次"的引信。

**3. 进化是最强的进度条。** 等级到线，精灵当着你的面变形，名字一换、能力一涨、外观重画（在 Pokete 里是字符画重画）。这个"迟到大奖"的反馈周期设计极其毒辣：升级是分钟级的反馈，进化是半小时级的反馈，道馆徽章是小时级的反馈，三层嵌套，你总能在任意时刻感受到"我在变强"。

**4. 属性克制表把学习成本变成护城河。** 火克草、水克火、电克水……十几乘十几的克制矩阵，新手期觉得复杂，学会的那一瞬间就成了优越感的来源——你看，克他了吧。这类"可习得的深度"是回合制游戏留存的核心：上手三分钟，精通三星期。

**5. 回合制等于零手速门槛。** 不需要反应速度，通勤、排队、开会摸鱼（不是）都能玩。Pokete 跑在终端里反而把这个优势放大了：它能在任何一台能开 SSH 的机器上玩，包括你公司那台只装了命令行的服务器。

**6. 打输几乎没有惩罚。** 战败回治疗点，精灵还在、经验还在。宝可梦系列早就算明白了：收集类游戏里，挫败感是收集欲的溶解剂，惩罚要轻到可以忽略，重开循环才转得动。

把这六条写下来你会发现：**全部和画面无关**。这就是 Pokete 这个"零美术实验"最有价值的结论——上头是结构问题，不是渲染问题。

## 四、技术拆解

对想自己做游戏的人来说，这个仓库比大多数教程都值得读，因为它用的是最朴素的材料，把该有的架构一件不落搭齐了：

- **渲染层：curses 字符网格。** 整个游戏世界是一张字符矩阵，地图、精灵、UI 都是预定义的字符画（ASCII/Unicode 字符拼的精灵图案），主循环里只做"清屏-重画"。没有 GPU、没有贴图、没有动画系统，帧率概念被简化成"按键驱动的重绘"——这是理解游戏渲染本质的最好教具。
- **数据驱动实体系统。** 精灵、技能、属性、克制关系、地图、NPC 对话，全部以数据表形式定义（Python dict 组织的数据模块）。加一只新精灵不用碰一行逻辑代码，往表里加一条记录就行。这也是为什么社区能给项目补精灵——**数据即内容，内容众包才有可能**。想做卡牌、武器、关卡编辑器的，这个结构直接抄。
- **回合制战斗状态机。** 我方选择 → 技能结算 → 伤害/异常状态判定 → 敌方回合 → 胜负判定，一个清晰的有限状态机，加上"播报队列"（把战斗过程按顺序打出文字）。所有回合制玩法——卡牌对战、自走棋、文字冒险战斗——都是这个状态机的变体。
- **克制矩阵配置化。** 属性克制是二维表查询，不是 if-else 森林。改一个数值调平衡，不用重新理解代码。新手最容易犯的错就是把规则写死在逻辑里，这个仓库示范了正确姿势。
- **主循环与输入。** 非阻塞键盘读取加定时事件（NPC 游走），没有引入任何事件库，用标准库裸写。想搞明白"游戏循环到底是什么"的人，看这个比看引擎源码友好一百倍。
- **存档。** 本地文件序列化玩家进度，简单粗暴但完备。

体量上，整个项目是几千行 Python 的量级（据仓库页面），没有任何一行代码是"魔法"。它给你的可复用清单非常具体：**战斗状态机、数据驱动实体表、克制矩阵、字符渲染器**——这四件套几乎能组装出市面上一切回合制小游戏的骨架。

## 五、变现观察

先把丑话说完：**Pokete 本身没有任何变现痕迹**。README 里没有赞助链接式的强引导（据仓库页面），它更像一份作品集和一枚简历放大器——但对 lxgr 这种还在读书阶段的个人开发者，这个项目的"变现"其实已经发生在了别处：GitHub 千星、技术社区曝光、求职时的硬通货。这是开源小游戏的第一条真实路径，只是不是今天讨论的重点。

重点是这个**品类**的吸金能力，公开报道里的数据是碾压级的：

- 宝可梦本身是史上累计收入最高的 IP 之一，全口径（游戏、卡牌、影视、授权）Lifetime 收入以千亿美元计（公开报道口径）；
- 手游《Pokémon GO》上线头几年流水几十亿美元级（Sensor Tower 等公开报告口径），证明了"收集+捕捉"在移动端几乎不需要改配方；
- 2024 年初的《Palworld》，一个几十人团队做的"宝可梦like+生存"，上线三天卖出五百万份（公开报道口径）——市场对"换皮收集"的饥渴程度可见一斑；
- 浏览器端的 PokeRogue（宝可梦×肉鸽爬塔）2024 年爆火，Patreon 上做到月入数万美元级（其公开面板可见），说明**网页版+捕捉循环**这个组合在独立开发者手里也能跑通。

变现路径的具体建议：这类回合制收集游戏的天然主场是**移动端小游戏平台**——微信/QQ 小游戏、抖音小游戏，用激励视频广告嵌进循环的三个点位：捕捉成功后"看广告双倍经验"、稀有精灵刷新提示、战败复活。捕捉那一下的多巴胺和"再看一次"的按钮是天作之合。其次才是 itch.io 付费下载和 Steam 走量。Pokete 用 GPL 开源，意味着你不能直接拿它代码做闭源商业版——**抄结构、抄循环、抄数据表设计，代码自己写**，这既是法律边界，也不吃亏：它的价值本来就在架构示范，不在代码本身。

## 六、给我的灵感

**点子一：两周 MVP——网页版字符捉宠。** 完全复刻 Pokete 的结构：精灵表、技能表、克制矩阵、遭遇表四张数据表，加一个回合制战斗状态机，前端用等宽字体+Canvas 或干脆纯 DOM 渲染，不画一张图（这个决定还能顺便做出传播点："零美术宝可梦"本身就是话题）。工作量 2-3 周。变现：微信小游戏+激励视频广告，接入成本低，捕捉场景天然适合"看广告得双倍"。

**点子二：换题材——给程序员做一只"抓 Bug 图鉴"。** 精灵改成 Bug 和异常：NullPointer 幼虫、SegmentationFault 龙、栈溢出蛇，属性克制表做成生态梗（"Java 克 C++"、"注释克祖传代码"）。图鉴叫"故障百科"，捕捉叫"复现"。这个题材在 GitHub、掘金、V2EX、HN 有天然传播势能，写这篇文章的人都想玩。工作量 3-4 周。变现：不急着收钱——用它涨星、涨粉、给付费课程或咨询服务导流，开发者向产品的正确打开顺序。

**点子三：加钩子——收集循环上叠一层肉鸽。** 每局随机初始精灵、随机遭遇路线、战败即重开、局内成长不带走，局外解锁图鉴和初始池。这个组合已被 PokeRogue 用流量验证过，而 Pokete 的数据表结构恰好是肉鸽随机化的理想底座（随机=从表里抽，架构零改动）。工作量：在点子一基础上加 1-2 周。变现：网页广告打底，itch.io 付费版+Patreon 上限更高。

三个点子共用同一句话总结：**宝可梦循环是最不依赖美术的印钞机结构，Pokete 用零张图片证明了这一点，并把骨架图纸免费摊开给了你。**

## 七、上手

- 仓库：https://github.com/lxgr-linux/pokete
- 这是本地终端游戏，没有网页 Demo。README 提供 pip 安装方式（`pip install pokete` 即可开跑，据仓库页面），或克隆源码用 Python 直接运行；Windows 用户需按 README 补装 windows-curses。
- 操作以方向键移动、快捷键呼出菜单/图鉴/背包为主，终端窗口拉大一点，字符画才不糊。
- 建议的阅读顺序（当源码教材用）：先看主循环和场景切换，再看战斗状态机，最后看数据表结构——三天能把"一个 RPG 是怎么拼起来的"看通透。

数据说明：本文的 Star 数、协议、维护状态等信息，因本次调研外网抓取受限，均为"据仓库页面"的记忆口径，未含实时精确值；发布前建议对仓库页面做一次快速复核，若 Star 或协议有出入以仓库为准。

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