<!-- title: 《break_eternity.js》科学计数法装不下，就叠塔 -->
<!-- domain: games -->
<!-- repo: Patashu/break_eternity.js -->

昨天刚写过它的前作《break_infinity.js》——那是给增量游戏解开水上浮点 1.8×10³⁰⁸ 天花板的 第一把锁。今天这个仓库是同一位作者的第二把锁，故事完全不同：当数字大到连"科学计数法"都装不下的时候，该怎么办？答案不是修修补补，而是给数字盖一座塔。

## 仓库档案

先解释那个吓人的符号。`10^^1e308` 里的 `^^` 是"幂塔"（tetration，叠幂）：`10^^3 = 10^(10^10)`，三层的塔。塔高到 1e308 层——这个数没有中文名，也没有英文名，因为宇宙里没有任何东西需要用它计数，除了增量游戏玩家的存款。

## 这东西是什么：给数字"退烧"的三件套

增量游戏（放置/挂机类）的宿命是数字膨胀。游戏前中期，`double` 够用；到后期浮点爆了，于是有了 break_infinity.js——它把一个数拆成"尾数 + 指数"两个浮点存，上限推到约 1e9e15，也就是 10 的九千万亿次方。

但头部队列游戏和它们的同人变体，硬是把这条天花板也顶穿了：指数本身大到 9e15 都放不下。这时修"指数"已经没用了，因为"指数的指数"也会爆。break_eternity.js 的解法是换坐标系——每个数记三件套：

1. **符号**（正还是负）
2. **层**（layer）：这个数处于第几层幂塔
3. **量级**（magnitude）：这一层内的具体大小

直观理解：层数每 +1，相当于把"上一个数字宇宙的全部"压缩成新宇宙里的一粒尘埃。玩家眼里是"数字又变大了"，实现上只是 `layer+1`。常规大小范围会自动退化成普通运算，只有真到了天文层级才动用塔逻辑——所以小数字不吃性能亏。

这个底座的来历值得说一句：社区公认的谱系是，Antimatter Dimensions 这款开山之作自己写了一套 Decimal 实现应付爆表，Patashu 把这套思路拆出来、优化、泛化，先做了 break_infinity，玩家继续膨胀，又做了 break_eternity（据仓库与社区说法）。玩家需求倒逼基础设施升级，一条完整的军备竞赛：

```mermaid
flowchart LR
    A["Antimatter Dimensions<br/>自带 Decimal 实现"] --> B["break_infinity.js<br/>上限约 1e9e15"]
    B --> C["break_eternity.js<br/>上限约 10^^1e308"]
    C --> D["你要做的游戏<br/>数字随便涨，永不溢出"]
```

## 为什么上头：数字的"层"，就是设计者递给玩家的无限楼梯

这部分才是做游戏的人真正该抄的东西。增量游戏的上头机制，几乎都能在"数字表示法"上找到对应物：

**1. 进度感的永动机：直觉饱和了，就换直觉。** 人类对数字的直觉在 1e15 附近就饱和了——后面涨到多少，玩家只觉得"更大吧"。这是所有长线数值游戏的死穴。增量游戏社区的解法极其聪明：用"层"重建直觉。层数是玩家能数得清的整数——"我现在第 5 层，大佬在第 7 层"，攀比感瞬间回来了。第 5 层到第 6 层的跨度，比从细胞到银河系还夸张，但玩家心理上只觉得"又进一步"。进度条重启，多巴胺重新接管。

**2. Prestige（转生）= 官方外挂的"再来一局"。** 增量游戏的标志性钩子：主动把辛苦攒的数字归零，换一种永久加成货币。玩家明明"损失"了一切，却抢着点按钮——因为转生后涨速快十倍，很快就能超过旧存档，还带着新能力。这是把"损失厌恶"反向利用的教科书案例。而 break_eternity 把 1e9e15 之后的无穷空间还给设计师：**"层"本身可以直接做成玩法**——一层一个世界、一套资源、一种机制，"上层"就是新游戏。

**3. 即时反馈 + 离线收益，双倍钩子。** 增量游戏的 tick 循环一秒跑几十次，每次结算都有数字跳动；关掉游戏再回来，离线收益一次性结算——上线即奖励。存档小到夸张：三个数就是全部状态，同步、分享、做排行榜都轻。

**4. 大数即社交货币。** "我的存款是 10 的幂塔七层"——这句话本身就是传播素材。数字大到无法想象，反而是玩家截图炫耀的理由。

```mermaid
flowchart TD
    A["玩家上线"] --> B["tick 结算<br/>Decimal 运算永不溢出"]
    B --> C["买升级 / 解锁新玩法"]
    C --> D["数字指数膨胀"]
    D --> E{"当前层顶到了吗"}
    E -- "没顶到，继续滚" --> C
    E -- "顶到了" --> F["转生 / 上层<br/>数字归零，层 +1"]
    F --> G["新层钩子<br/>新资源、新机制、新目标"]
    G --> H["离线收益结算<br/>存档就是三件套数字"]
    H --> A
```

## 技术拆解：能直接搬进项目的部分

**表示法**。核心是 `(sign, layer, magnitude)` 三元组。对一个库来说最难的从来不是"表示"，而是运算时层层坍缩和展开还能保持精度与性能——幂塔之间的加乘运算要先把高层的塔降一层。这些脏活 break_eternity 全包了，你面对的只是一个 `Decimal` 类。

**API 平滑迁移**。`Decimal` 的方法名和 break_infinity 高度兼容：`plus/minus/times/divide/pow/log10/max/min` 一套到底，字符串序列化存档也是老格式超集（据 README）。如果你的游戏已经在用 break_infinity，迁到 break_eternity 大概率只是换个 import——这也是它敢号称"一劳永逸"的底气。

**选型常识**（社区共识，据两库 README）：数字上限 1e9e15 以内，用 break_infinity 更省性能；打算做长线、多层转生、或者不想哪天半夜改数值底层，直接上 break_eternity。增量游戏每秒几十次 tick、每次成百上千次 Decimal 运算，性能预算要花在刀刃上——别为用不到的 10^^100 层付税。

**可直接复用的组件清单**：
- `Decimal` 类本体：数值计算层，任何前端框架无关，Canvas、React、Godot 导出的网页、微信小游戏都能跑；
- 格式化输出：把大数渲染成 `1e15`、`1.23e1.5e9` 或幂塔记法，是增量游戏 UI 的一半体验；
- 存档序列化：一行字符串存下整个游戏状态，配上版本号字段就是完整存档方案；
- 层间换算逻辑：做"层=世界"玩法时直接借用。

**工程量判断**：这个库单文件、零依赖，读一遍源码一晚上。真正的工作量在数值曲线设计——但那是抄得来的，后面讲。

## 变现观察：卖水的 Patashu 不收钱，喝水的人都在赚

这个仓库本身没有变现痕迹——MIT 一类的宽松协议，免费开源，作者图的是社区声望（据仓库页面）。但"用它做的游戏"恰恰是独立开发者变现效率最高的品类之一，这条生态位值得细看：

- **网页版起盘 + 激励视频广告**：增量游戏页面停留时长极长、广告位天然多（"看广告，离线收益翻倍"是玩家主动想点的按钮），这是网页游戏里 eCPM 表现最好的场景之一。
- **Steam 买断跑通了**：Cookie Clicker 的 Steam 版定价不高却常年好卖；Melvor Idle 更是标杆——单人开发者 Brendan Malcolm 从网页版+Patreon 起步，Steam 买断爆卖，最后连 RuneScape 母公司 Jagex 都来官方出版。数值游戏的买断逻辑：玩家为"我的存档值得付费"买单。
- **手游内购路线**：AdVenture Capitalist 一系证明了放置品类的内购模型，但对个人开发者门槛更高。
- **微信/抖音小游戏**：放置类是小游戏平台买量大盘，激励视频 SDK 即插即用，"突破加速""离线翻倍"这类钩子和增量游戏的 Prestige 机制严丝合缝。

**基础设施免费、应用层赚钱**——和本栏此前写过的 Ren'Py、godot-card-game-framework 是同一个结构：开源底座降低了品类门槛，变现发生在每一次"有人用底座做出了爆款"。Patashu 们的回报是生态位声望和被游戏致谢，你的回报是拿现成底座两周出游戏。

## 给我的灵感：三个能落点的做法

**点子一：境界突破换皮（推荐指数最高）。** 把"层"直接翻译成中国玩家最有感觉的体系——修仙境界：炼气、筑基、金丹、元婴……一层一个大境界，突破即转生，灵石产量指数重置但"悟性"永久加成。技术上：break_eternity 管数字，一张数值表管曲线，纯 DOM/Canvas 做 UI，两周可出 MVP。变现走微信小游戏：激励视频"闭关加速"，广告位完全复用 Prestige 按钮位置。关键提醒：数值曲线别自创，抄成熟增量游戏的倍率节奏（前快后慢、每层 2-4 小时一个突破点），手感是无数游戏验证过的。

**点子二：给存量游戏开"第二世界"。** 你手头或社区里已有 break_infinity 底子的放置游戏，迁到 break_eternity，把原本"数字到顶、玩家流失"的终点改造成"上层开启新资料片"的起点。API 兼容让迁移成本控制在一两天试水。变现：新层做成 DLC 或内购，老玩家回流本身就是一波免费召回。

**点子三：大数观景台，纯流量玩法。** 做一个网页：输入任意大数（或"全宇宙原子数是多少层幂塔"这类问题），用幂塔可视化渲染出来，配一句可截图分享的文案。零游戏逻辑，一周 MVP，本质是给"数字爱好者和增量游戏玩家"这个精准人群的引流入口，底部挂你自己的放置游戏链接。流量生意，和 lifeRestart 的打法同源：工具抓人，游戏收口。

## 上手

- 仓库：https://github.com/Patashu/break_eternity.js
- 接入：`npm install break_eternity.js`，或直接引单文件（据仓库 README）
- README 附文档与用法示例（据仓库页面）；配套前作 break_infinity.js 适合数字上限要求不高的项目

一句话收尾：当所有人都以为 1e308 就是尽头，有人把数字盖成了塔；当玩家以为塔就是尽头，聪明的开发者把塔做成了世界。底座已经免费摆在货架上，缺的只是你那层数值表和一个突破按钮。

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