<!-- title: 《Kandria》Lisp游戏卖上Steam -->
<!-- domain: games -->
<!-- repo: Shirakumo/kandria -->

## 仓库档案

| 项目 | 信息 |
|---|---|
| 仓库 | [Shirakumo/kandria](https://github.com/Shirakumo/kandria)（GitHub 为归档镜像，主仓库 2025 年 8 月迁至 [Codeberg](https://codeberg.org/shirakumo/kandria)） |
| ⭐ Star | 696 / Fork 32 / 5,558 次提交（2026-10-05 抓取） |
| 语言 | Common Lisp——整个仓库没有一个 .c 或 .js 游戏文件，全是 .lisp |
| License | Zlib |
| 作者 | Shirakumo Games（瑞士苏黎世，全远程、公开宣称“绝不 crunch”的小作坊）；核心只有一人：Yukari Hafner（网名 Shinmera），制作人/程序/设计/美术四个头衔挂在同一人身上，外加美术 Blob、编剧 Tim White、作曲 Mikel Dale、音效 Cai Jones 四位合作者，共 5 人 |
| 形态 | 完整商业游戏，2023 年 1 月 11 日上 Steam、itch.io 和官网直销，仓库里挂着免费的 demo-releases |
| 变现痕迹 | 密集——Steam 付费买断、多渠道直销、原声带单独卖、Kickstarter 众筹（仓库里躺着一个 process-backers.lisp 专门处理众筹支持者名单）、瑞士和波兰两笔政府文化资助 |

大部分"GitHub 游戏调研”看的都是网页小游戏、或者开源了源码的商业游戏残骸。这个仓库不太一样：**它是一份正在赚钱的商业游戏的完整源码，而这个游戏从头到尾是用一门几乎没人拿来写游戏的语言写的。**

## 这游戏是什么

一句话：你是一台在世界末日之后醒来的机器人，在一整片地下洞穴网络里跑酷、砍怪、钓鱼、做任务——开放世界动作 RPG，2D 横版精准平台玩法。

官方 press kit 给的数字很具体：**250 万平方米以上的可探索世界、250 个手工搭建的平台挑战房、50 条任务线、33 套换装**。它出生时的身份其实是个试验品——2019 年底，Shinmera 为了测试自己写的游戏引擎搭了个跑酷场景，结果场景长出了角色、长出了剧情，最后长成了一个游戏。灵感来源写得很明白：Celeste 和其他精准平台游戏。

它最反常规的设计宣言挂在官网第一屏：**Zero Ability Gating，零能力门控**。银河恶魔城类游戏的经典配方是“这里有一堵墙，拿到二段跳再回来”；Kandria 把导游裁了——从游戏第一分钟起，全地图哪里都能去，去不去得到看你的手，而不是看你的技能表。

玩家的核心循环长这样：

```mermaid
flowchart TD
    A[落地废土<br>全图从第一分钟就开放] --> B{选一条路}
    B --> C[自由探索洞穴网络]
    B --> D[挑一个编号挑战房]
    B --> E[找个水潭钓鱼]
    C --> F[跑酷/战斗<br>死亡惩罚极轻]
    D --> F
    E --> G[鱼入图鉴<br>卖钱或换装备]
    F --> H[房间通过<br>掉落遗物/推进派系剧情]
    G --> H
    H --> I[图鉴收集+装备升级<br>手上的技巧也在变强]
    I --> J[好奇心:那边我还没去过<br>更难的房间在招手]
    J --> B
```

## 为什么上头

**1. 零门控，把导航权还给好奇心。** 传统银河城靠能力墙给你排行程，玩家按攻略图跑图，本质是做任务。Kandria 全图开放之后，“那边那个高台我好像跳得上去”这种念头会自己长脚——你不是在被游戏引导，你是在跟地图较劲。这是把开放世界的“想去”和平台游戏的“能去”焊在一起，引力翻倍。

**2. 挑战房把“再来一局”拆成“再来一间”。** 250 个独立编号的手工房间，每个几分钟，失败立刻重来，重开成本趋近于零。这就是 roguelike“再来一局”魔性的平台化变体：把一次长冒险切成几百颗胶囊，每一颗都有独立的成败和计时。你告诉自己“最后跑一间”，然后天亮了。

**3. 双收集钩，一口喂收集欲一口喂成长欲。** 钓鱼系统配图鉴——剑能变鱼竿，钓上来的鱼填百科、卖给商人换钱；探索捡到的旧世界遗物能换装备升级。收集管“我还差三种鱼”，成长管“升级后那片区域能打过了”，两个进度条互相咬合，永远有一条在动。

**4. 进度刻在手上，不在数值栏。** 精准平台游戏的手感成长是真成长：一周目跳不过去的沟，十小时后你手指自己知道怎么过。这种进步没法被氪金稀释，所以格外上头。

**5. 派系剧情的不可挽回感。** 开局就被卷进两个幸存者派系的冲突，你是外来者，信任要一点点挣，帮了一边另一边就记仇。选了就不能反悔的设计让玩家的选择有分量，也给了二周目一个正当理由。

## 技术拆解

这是仓库最有嚼头的部分——**用 Common Lisp 写了一整个商业游戏**。

- **自研引擎 Trial，同样开源。** Shinmera 是 Lisp 社区多年的老工具人，引擎是他在写游戏前就长期维护的一整套 Lisp 图形/UI/资源框架。Kandria 是引擎的“验收项目”。
- **REPL 就是终极热重载。** Lisp 程序跑起来是一个活着的镜像：游戏正在运行，你在 REPL 里重定义一个函数、改一个数值，下一帧立即生效，不用重启不用断点。别的引擎管这叫 hot reload 要写进宣传语，在 Lisp 里这是日常。开发视频里能看到关卡编辑器开着、代码随手改、场景即时变的流水线。
- **任务系统完全数据驱动。** `quest/` 是独立目录，任务用脚本格式写，编剧 Tim White 不需要碰一行 Lisp。任何引擎都可以抄这套结构：任务=数据文件，引擎只管解释执行。
- **关卡编辑器内嵌在游戏里。** `editor/` 目录就是编辑器本体，250 个挑战房是作者在游戏里捏出来的——编辑器和游戏共享同一套运行时，改完即玩。
- **Mod 系统开箱即用。** `module.lisp` 定义模块机制，仓库里挂着 `mods/hello-world` 教你写第一个 mod。整个游戏本体在架构上就是“第一个 mod”，这种自举设计让创意工坊几乎是免费送的功能。
- **每个系统一个文件，教科书级拆分。** `fishing.lisp`（钓鱼小游戏）、`save-state.lisp` + `serialization.lisp`（存档与序列化）、`bvh2.lisp`（BVH 空间索引，加速大地图碰撞与渲染剔除）、`shadow-map.lisp` + `lighting.lisp`（2D 动态光照）、`grass.lisp` + `water.lisp`（场景细节）、`achievements.lisp`、`stats.lisp`、`language.lisp`（本地化）、`deploy.lisp`（一键跨平台出包）。想抄哪块拆哪块。
- **还有个学术价值之外的彩蛋：`process-backers.lisp`**——把众筹支持者名单批量灌进游戏的脚本。变现和技术在同一行代码里会师。

可复用件划重点：**任务脚本格式**（搬到任何引擎都能用）、**挑战房管理器**（房间编号+重开+计时）、**钓鱼小游戏状态机**（咬钩窗口-拉竿判定的经典设计）。

## 变现观察

这个仓库几乎是“个人开发者如何不靠大厂活下来”的教科书，四条腿同时站着：

**1. 买断制+多渠道直销。** 官网 Purchase 一排五个入口：Steam、itch.io、Humble、官网直销（Direct）、原声带。Steam 是流量主阵地，但 itch.io 抽成可以自选、官网直销分成是零——小体量游戏多铺一个渠道就多留一份钱，原声带单独卖更是零成本的加售。

**2. 众筹对表 Steam 新品节。** 2022 年 7 月 14 日，Kickstarter 上线和 Steam 新品节免费 demo 发布是同一天——demo 引流、众筹收钱、愿望单沉淀，一鱼三吃。仓库里的 process-backers.lisp 说明众筹规模不小，大到需要写脚本处理支持者名单。

**3. 政府文化资助。** 官网页脚明晃晃挂着两个 logo：Pro Helvetia 互动媒体资助（瑞士文化基金会）和 KPT Poland Prize Digital Dragons 加速器。欧洲不少国家把游戏当文化产品补贴，这是中文圈开发者最常忽略的一条腿——游戏不只是商品，也可以申报艺术和文化项目。

**4. 开发者个人的长期开源赞助。** 仓库挂着 Sponsor 按钮，Shinmera 靠多年开源 Lisp 工具链积累的社区信任，在 GitHub Sponsors 上有持续的赞助收入。引擎免费、工具免费、游戏收费——先用十年免费建立“这人靠谱”的信誉，商业游戏上线时信任直接变现。

同类路径跑通的先例也硬：Celeste 先放免费网页版《Celeste Classic》验证玩法攒口碑，商业正作随后大卖。Kandria 走的正是“免费技术原型 → demo 攒愿望单 → 众筹+新品节 → 多渠道发售”的完整闭环。696 个 star 不算显眼，但一个五人小作坊、一门冷门语言，游戏活到 2026 年还在更新——它跑通的不是流量，是长线。

顺带一提仓库 README 的第一句话：因为“微软对这个平台的持续堕落”，项目 2025 年 8 月整体迁去了非营利平台 Codeberg，GitHub 这边成了只读镜像。个人开发者对平台的议价权，说到底来自“我的东西在哪都能跑”。

## 给我的灵感

**1. 极简复刻：“挑战房+计时”网页小游戏（MVP 2-3 周）。** 不碰开放世界，只抄最上头的那颗胶囊：20 个手工平台挑战房，每房 1-3 分钟，死亡秒重开，全房计时排行榜。用 Phaser 或 Godot Web 出网页版，itch.io 付费下载或网页挂广告。Kandria 证明了这个形态单独成立——250 个房间就是游戏的核心卖点，20 个就是你的 MVP。

**2. 换题材融合：修仙洞穴探秘（MVP 4-6 周）。** 跑酷+收集+交易的骨架原封不动，皮换成中式题材：溶洞探秘、采药入图鉴、遇货郎 NPC 用灵草换法宝。零门控设计天然契合“境界不够胆子来凑”的修仙叙事。变现走移动端内购（看广告复活、皮肤）或 Steam 低价买断，中文社区对“洞穴+图鉴+交易”的组合亲和度极高。

**3. 加一层钩子：每日一房（MVP 1-2 周，基于前两者）。** 每天按日期做种子从房间池里选一间，全球同题计时排行榜。Wordle 靠“每天一道题”做到全民自来水，精准平台游戏的 speedrun 社区是现成的传播渠道——排行榜页面本身就是分享素材，导流回你的主游戏。

最后是这个仓库最反直觉的一课：**技术栈冷门从来不是变现的障碍，没人要玩的东西才是。** Common Lisp 写的游戏照样上 Steam 收钱、拿政府资助、养活一个工作室。选型可以任性，核心循环不能含糊。

## 上手

- GitHub（归档镜像）：https://github.com/Shirakumo/kandria
- Codeberg（活跃主仓库）：https://codeberg.org/shirakumo/kandria
- 官网（含免费 demo 与购买入口）：https://kandria.com
- Steam / itch.io 均可直接购买，Windows 与 Linux 双平台；仓库 `demo-releases/` 目录有历史版本 demo
- 想读代码建议从 `quest/`（任务脚本）和 `mods/hello-world`（模块机制）入手，这两处最能看懂它的数据驱动架构

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