<!-- title: 《Interplanetary-Postal-Service》为了送快递，他解了纳维-斯托克斯 -->
<!-- domain: games -->
<!-- repo: s-macke/Interplanetary-Postal-Service -->

# 《Interplanetary-Postal-Service》为了送快递，他解了纳维-斯托克斯

## 仓库档案

- **仓库**：[s-macke/Interplanetary-Postal-Service](https://github.com/s-macke/Interplanetary-Postal-Service)
- **Star**：约 677（据仓库页面，2026-10 查）
- **语言**：C，经 Emscripten 编译成 WebAssembly，浏览器直接玩
- **作者**：Sven Macke，个人开发者，一人包办物理、渲染、音效、关卡
- **出身**：2018 年 js13kgames 比赛参赛作品——这个比赛有个变态规矩：整个游戏（代码+素材）压缩后不得超过 13KB
- **最近更新**：2024 年 9 月还打过稳定性补丁——一个比赛作品，七年后还在维护
- **试玩**：README 顶部挂了「Play with stability updates!」（稳定版）和「Play the original!」（原版）两个在线入口，GitHub Pages 托管

一句话介绍这个游戏：**你是星际邮政的快递员，开着着陆舱把贵重邮件送到遥远的殖民地——而你的推进器喷出的火焰，是货真价实用纳维-斯托克斯方程算出来的流体。**

作者在 README 里写得直白：“流体力学进游戏，这就是我的目标。不是装样子的假流体，我要真的，解真方程。”他数过，此前真正做到这一点的游戏只有两个，其中一个深深刺激了他。于是选题变得简单——他从童年游戏库里翻出了 Lunar Lander（月球着陆机）：这种慢节奏、全靠推力微调的游戏类型，和流体模拟是天作之合。

## 这游戏是什么

玩法骨架是经典的着陆机：每关你是“最后一公里”的着陆舱驾驶员，从运输舰分离后，独自飞完去殖民地的最后一段路。方向键或 WASD 控制推进器，你要同时对抗三样东西——重力、侧风、以及你自己的尾焰。游戏一共 8 个手工设计的关卡，全程键盘操作，空格切音效。

听起来平平无奇？它的杀器在于：**火焰不是粒子特效，是物理实体**。游戏里跑着一套 256×128 网格的流体求解器，同时模拟三种带颜色的流体——你推进器的尾焰、关卡里的大气、还有爆炸。尾焰喷进大气会真实地搅动、扩散、回流；爆炸的冲击波会推开别的东西。你踩下的每一脚油门，都在跟一团被方程推着走的“真空气”较劲。

核心循环长这样：

```mermaid
flowchart TD
    A[接单：把邮件送往殖民地] --> B[着陆舱脱离运输舰]
    B --> C[方向键控制推进器下降]
    C --> D{三重不稳定：重力+阵风+自己的尾焰}
    D -- 推力过猛/被风掀翻 --> E[尾焰搅乱气流 → 翻滚失控]
    E --> F[坠毁爆炸：重开本关]
    D -- 微调悬停稳住 --> G[贴着群岛峡谷逼近着陆区]
    G --> H{平稳落地？}
    H -- 摔了 --> F
    F --> B
    H -- 成功 --> I[邮件签收 → 解锁下一关]
    I --> J{8关全部送达？}
    J -- 否 --> A
    J -- 是 --> K[挑战更快更稳的路线]
    K --> A
```

## 为什么上头

这个游戏的“再来一次”按钮，是被物理引擎按下去的。

**第一，失败来得又快又响，但重开成本是零。** 着陆机品类的天然属性：你要么稳稳落地，要么在三秒内炸成一团——而爆炸在它这儿还是一套流体模拟，炸得比别家游戏都好看。坠毁没有任何惩罚性过场，直接重来。短挫折 + 零重试成本，就是“再来一局”的经典配方。

**第二，你踩的是流体，所以手感是真的。** 一般游戏里推进器就是“按上键加速度”，这里的推进器是一团持续注入大气的高温气体——它会被风吹歪，会撞到峡谷壁反弹回来，甚至会反过来吹到你自己身上把姿态搅乱。作者自己在平衡性一节里承认：“流体动力学并不总是可控的，结果取决于帧率和你的操作。”翻译一下：这个游戏**不稳定得像真的**。你需要练出真实的手上功夫——轻点、预判、逆风修正——这种技能曲线带来的心流，是换不来假物理的。

**第三，风是活的，每一局都不一样。** 危险的阵风是关卡的一部分，叠加在流体模拟上，意味着没有两趟一模一样的快递。可复现的关卡会背板，不可复现的风会逼你每次都用真本事——这是街机时代老手们说的“这把不算，再来”。

**第四，13KB 带来的极端纯度。** 没有商店、没有升级、没有每日任务、没有教程弹窗，13KB 里塞不下任何垃圾。你能做的就是飞、炸、再飞。对被 FOMO 弹窗轰炸惯了的现代玩家，这种“只有你和物理”的干净反而成了稀缺体验。

## 技术拆解

这是全仓库最值得抄的部分——一个人如何在 13KB 里塞下一套 Navier-Stokes。

**第一步，语言选择：为了速度和体积，直接上 C。** 决定做真流体之后，最需要的就是算力。作者的解法是不带任何库写 C，用 Emscripten 的 emcc 编译成 WebAssembly，然后“把所有 JavaScript 开销全部扔掉”。运行时连数学函数都自己写——标准库的 `exp` 太贵，他用一段位运算魔法换了个只占几个字节的快速版本：

```c
float expf_fast(float a)
{
  union { float f; int x; } u;
  u.x = (int) (12102203 * a + 1064866805);
  return u.f;
}
```

用整数位模式直接构造浮点数的近似指数函数——这一招本身就值回票价。

**第二步，流体核心：站在巨人肩膀上。** 求解器是三份材料的组合：一本讲 Nast2D 的书、Jos Stam 的经典《Stable Fluids》、Mike Ash 的入门文章，再加上作者多年积累。整个流体代码压缩后只占 3-4KB。三种有色流体（尾焰、大气、爆炸）共用同一套网格求解。对想入门流体模拟的开发者，这个书单就是现成的学习路线图。

**第三步，渲染分层。** 三层画布各司其职：第一层 256×128 的 canvas 归 WebAssembly 管，画背景和流体；第二层画关卡地形和飞船精灵；第三层是 SVG 覆盖层，负责文字、速度表和燃料表。物理和表现分离得干干净净。

**第四步，两个“穷人的妙招”。** 碰撞检测用的是像素计数法：把场景画到 canvas 上数边界像素，飞船精灵一旦压到边界，像素数变少即判定碰撞——粗糙，但像素级精确，而且几乎不要钱。关卡地图存储更绝：每张图就是一个 32×17 的位图，**一关只占 68 字节**，用高斯核膨胀加随机纹理生成地形，配上简单光照，效果意外地好。音效同理：白噪声过一个带通滤波器，风是 500Hz 峰值，爆炸和推进用 100Hz 不同带宽——没有一条音频素材，全靠合成。

**最后一步，也是最贵的一步：调平衡。** 作者明说这是最难的部分——流体参数动一发，八关全部要重新设计。他最后一次提交前还剩 3KB 空间，想过加移动端触控（手机带不动，放弃）、想过加音乐（试了，更难听，放弃）、想过塞 6-10 个新关卡（时间不够，放弃）。“再打磨一两周”——然后他就提交了。这个“最后一公里的取舍清单”，比任何项目管理课都真实。

## 变现观察

先把丑话说完：**这个仓库本身没有任何变现痕迹**。它是竞赛作品，免费、无广告、无内购，作者收获的是 js13k 社区声望、六年持续涨星，和一份含金量极高的个人名片——对 Sven Macke 来说，这个游戏就是他最好的简历。

但对想入局的人，它指向的赛道其实很宽：

**路径一：网页门户广告分成。** 物理手感小游戏是 Crazy Games 这类门户的常青品类，玩家停留时长就是广告库存。“真实流体”是现成的营销卖点——商店页一句话就能讲清楚。

**路径二：移动端超休闲 + 激励视频。** 着陆机玩法天然适配竖屏碎片时间，看广告换“重开一次不扣分”或“风向预报”这类增益，是超休闲的成熟变现位。

**路径三：Steam 物理沙盒的小众高溢价。** README 末尾那份“真流体游戏清单”值得研究：Plasma Pong、Pixeljunk Shooter、Claybook、Noita——其中好几款都是商业上立住的作品。Noita 靠“每个像素都被模拟”卖出了百万级销量，证明**硬核物理本身就是卖点**，不非得阉割成休闲玩法。

**路径四：把物理能力变成服务。** 会写实时流体模拟的开发者在市场上是稀缺品——广告公司的互动 H5、汽车/家电的网页展示、教育机构的可视化课件，都愿意为“酷炫且真实”的效果付外包费。仓库开源这部分，本质是技术能力的公开招标。

## 给我的灵感

**点子一：换皮复刻——无人机送快递（H5，MVP 一到两周）。** 着陆机骨架不动，把星际邮政换成“低空经济”：你操纵配送无人机穿越城市楼群的风口送货。物理层可以偷懒——不用完整流体求解器，用噪声风场 + 推力粒子伪造八成观感；保留“坠毁零成本重开 + 每局风不同”这两个真钩子。变现走网页门户分成，数据好再包壳上移动端接激励视频。题材自带热点叙事，商店页好写。

**点子二：题材融合——风筝大师（移动端，MVP 两到三周）。** 风筝是人类最古老的流体游戏：风是流体，线是张力，特技动作是计分项。做一个“指尖放风筝”小游戏：左手控线长、右手控走位，让风筝在风场里做动作拿分。真实感不用 Noita 级别——风场用几层正弦噪声叠加就有“活风”的手感。变现瞄准两个位：激励视频换“高级风筝皮肤试用”，以及节庆限定关卡（清明、风筝节）带来的回访钩子。

**点子三：不卖游戏，卖“看得见的物理”。** 把流体验证 + 可视化这一套抽出来，做成可交互的科普内容：为什么风穿楼而过会加速、烟为什么打转、伞面为什么翻。这类内容有三个买家——知识付费课程、品牌方的互动营销页、学校的信息化课件。单子单价不高但复购稳定，而且每一单都是你下一个游戏的技术储备。MVP 就是从 pooltool 式的开源项目里抄求解器开始——不，从这一个仓库的书单开始：Nast2D、Stable Fluids、Mike Ash，三份材料一周读完。

## 上手

- **仓库**：https://github.com/s-macke/Interplanetary-Postal-Service
- **在线试玩**：README 顶部两个入口——「Play with stability updates!」（稳定版）与「Play the original!」（原版），GitHub Pages 托管，浏览器直接玩
- **操作**：方向键 / WASD 控制推进器，空格切换音效

建议的打开姿势分三步：先原版上手，感受“被自己的尾焰坑死”是什么体验；稳定版再通一次关，体会作者那次 2024 年补丁改了什么手感；最后读 README 的 Technical Description，重点精读 Fluid 和 Balancing 两节——前者是一周速成流体模拟的书单，后者是一个人如何跟不可控的物理系统讨价还价的实录。看完你会明白：所谓“手感”，不过是物理方程在玩家指尖的倒影。

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