首页 › games › 《Interplanetary-Postal-Service》为了送快递,他解了纳维-斯托克斯

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

仓库档案

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

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

这游戏是什么

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

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

核心循环长这样:

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 太贵,他用一段位运算魔法换了个只占几个字节的快速版本:

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,三份材料一周读完。

上手

建议的打开姿势分三步:先原版上手,感受“被自己的尾焰坑死”是什么体验;稳定版再通一次关,体会作者那次 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学通信知识星球海报-扫码加入