<!-- title: 《MarbleMarcher》没有一张贴图，整个世界是数学 -->
<!-- domain: games -->
<!-- repo: HackerPoet/MarbleMarcher -->

# 《MarbleMarcher》没有一张贴图，整个世界是数学

你的游戏库里如果只允许放一个「证明游戏性跟美术预算无关」的证物，我提名这个：HackerPoet/MarbleMarcher。一颗弹珠，一个会自己变形的分形世界，15关，完事。没有一张贴图，没有一个模型，没有一段音乐素材——你看到的所有山、峡谷、螺旋，全是一段数学公式在GPU上算出来的。更妙的是，它还不是概念验证demo，它是一个真的能玩、有人打穿、有人竞速的完整游戏。

## 仓库档案

- **名称**：MarbleMarcher（HackerPoet/MarbleMarcher）
- **Star**：两三千星的量级（据仓库页面，实时数据以仓库为准）
- **语言**：C++，渲染核心是GLSL着色器
- **License**：MIT（据仓库页面）
- **作者**：个人账号 HackerPoet，基本是一人开发（据仓库页面）；这位作者的主页上还躺着粒子生命模拟等其他硬核小项目，属于典型的「一人开源玩家」
- **最近更新**：近年基本停更，是那种「写完就放在那儿」的完结型仓库（据仓库页面）——但对抄作业的人来说，完结恰恰是优点：代码不会再动，学一次就够

## 这游戏是什么

一句话：**你在活的数学雕塑上滚一颗弹珠，滚到旗子那儿，然后世界换一副面孔再来一关。**

地形是基于克莱因群分形（作者在README里直接致敬了《Indra's Pearls》这本书）实时生成的，不是预先建模的场景。最狠的设计是：每过一关，分形的参数就进化一次，整个世界在你眼前缓慢生长、扭动、翻面——你不是在关卡之间切换，你是在看一个生物换皮。全程计时，掉下悬崖不掉进度、只掉时间，15关全通那一刻，用时就是你的段位。

```mermaid
flowchart TD
    A[开局: 一颗球落进分形世界] --> B[观察: 曲面正在缓慢变形]
    B --> C[操作: 惯性加速 / 飞跃 / 贴壁滚行]
    C --> D{摸到终点旗?}
    D -- 掉落悬崖 --> E[回到出生点, 计时继续走]
    E --> C
    D -- 是 --> F[过关: 分形进化, 世界换一张脸]
    F --> G{15关全通?}
    G -- 否 --> B
    G -- 是 --> H[结算: 总用时即成绩]
    H --> I[看别人的竞速视频: 就差30秒]
    I --> A
```

注意这个循环里最反常的一环：**失败惩罚不是重开，而是让计时器继续羞辱你**。它不偷你的进度，只偷你的「我能更快」。这一下就把单机游戏玩出了格斗游戏的连段心态。

## 为什么上头

拆开看，它把「再来一局」的钩子埋在四个地方：

**1. 世界本身是进度条。** 一般游戏的进度感靠经验条、靠新地图加载；MarbleMarcher的进度感是——你已经解锁的分形形态在上一关还只是背景装饰，这一关变成了你脚下的路。世界在进化，而且进化的方式不可预测，每一关开场的那十几秒「这是哪儿」的眩晕感，就是钩子本身。

**2. 惯性即反馈。** 弹珠游戏的手感命门是惯性曲线：推一下，球加速有延迟，停下有滑行，贴着曲面边缘会自然下滑。这套物理全是作者手写的，反馈粒度到毫秒级，所以「再试一次」的成本极低——你永远觉得下一把能救回那个弯。

**3. 计时器是社交货币。** 单局几分钟，通关门槛不高，但「打完」和「打快」之间隔着无限空间。社区里流传着一批玩家竞速视频，同一个分形关卡，别人比你快三十秒——这种差距肉眼可感、无法甩锅给随机数，是最戳人的那种「不服」。

**4. 收集欲披着数学外衣。** 15关就是15种分形形态的标本展览。对一部分玩家（尤其是程序员和数学爱好者）来说，看分形长出新的触手，跟抽卡开新角色是同一种多巴胺，只是抽的是数学。

## 技术拆解

这个仓库对开发者的价值，一半在玩法，一半在技术迁移路线：

- **零素材管线**：整个世界由有向距离场（SDF）描述——一个函数，输入空间坐标，输出「这一点离表面多远」。渲染用ray marching，GPU上逐像素步进求交。没有美术管线、没有资源加载、没有包体焦虑，秒开。
- **物理是自写的，因为现成引擎接不住**：球在「无限细节且持续变形」的表面上滚，传统物理引擎（用三角面片表示碰撞体）根本无法表达这种地形。作者的解法是直接沿距离场求梯度、算碰撞和法线——这一段代码是整个仓库最值得逐行读的部分，也是你能整段搬走的部分。
- **代码量惊人地小**：C++那层基本只管窗口、输入和GL上下文，游戏本体的大头在shader里。核心逻辑单文件量级，一个周末能读完。
- **可直接复用的组件**：「SDF地形 + 球体碰撞 + 计时器」这套三件套，换个距离场函数就是一款新游戏。对想练shader的人来说，这就是一份能跑、能玩、能改的活教材。

## 变现观察

先说结论：这个仓库本身没有任何变现痕迹——没有付费页、没有广告、没有赞助入口，作者把它放出来纯粹是作品分享（据仓库页面）。但它服务的品类，恰恰是有账可查的：

- **弹珠滚球是被验证过几十年的付费品类**。祖师爷Marble Madness是1984年的街机（Mark Cerny一个人操刀设计，这位后来成了PS4/PS5的架构师）；2004年的Ballance让一代中国玩家记住了「在轨道上推球」；近年Marble It Up!这类买断制作品也活得不错，其班底里就有老弹珠游戏的老兵。品类小，但受众稳定、付费意愿明确——「手感游戏」玩家不白嫖。
- **真实可行的三条路**：① Steam买断，5美元档，主打手感+每日关卡；② 小游戏平台（微信/抖音）做2D简化版，广告变现+内购关卡包，这是弹珠玩法的传统舒适区；③ 技术本身变现——SDF和ray marching是可视化、AR、游戏外包市场上的硬技能，这个仓库可以直接当作品集封面，比任何证书都好使。
- **一个提醒**：MIT许可意味着你可以合法商用他的代码，但直接换皮上线是死路——他的世界里只有地形没有内容，弹珠游戏的命门是关卡供给。抄结构，别抄皮。

## 给我的灵感

**点子一：「滚珠日更」2D简化版（MVP约2-3周）。** 把3D分形换成2D距离场地形：一段函数生成起伏曲面+一颗球+计时。核心工作是写好一个SDF函数和圆的碰撞（他仓库里有现成思路可抄），再加每日固定seed关卡和结算分享卡——晒的不是分数，是「今日用时4:32，你呢」，Wordle那套传播逻辑平移过来。变现走小游戏平台广告，后续加关卡编辑器做UGC。

**点子二：换函数不换骨架——「在声波上滚」（MVP约3-4周）。** 他的架构里，「世界长什么样」就是几个数学参数。把分形函数换成音乐频谱：导入一首歌，频谱实时生成地形，你的BGM就是你的关卡。节奏感天然的传播素材（视频里球跟着副歌飞坡），itch.io付3-5美元或打赏制，音乐类内容在短视频平台的自传播力你懂的。

**点子三：一鱼两吃的技术变现。** 把「SDF生成世界」拆成教学：面向学生和独立开发者的「不用美术做游戏世界」小课，他的代码（MIT）就是现成教具；接可视化、美术生成类外包时，它是最好的演示件。对多数个人开发者，这条路比做游戏本体来钱更快。

## 上手

- 仓库：https://github.com/HackerPoet/MarbleMarcher
- 没有网页版Demo，需要下载release自己跑；注意渲染全压在GPU上，核显机器可能会卡成PPT，一块还行的独立显卡是入场券（据仓库页面说明）
- 建议路径：先玩通前3关感受「世界在动」，再开仓库读shader——你会先明白它为什么上头，再明白它怎么写的

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