<!-- title: 《break_infinity.js》1e308之后，数字还得涨 -->
<!-- domain: games -->
<!-- repo: Patashu/break_infinity.js -->

# 《break_infinity.js》1e308之后，数字还得涨

## 仓库档案

一句话定位：**它不是一款游戏，而是让“数字无限变大”这件事在浏览器里永不断电的那根保险丝。**

## 这东西是什么：给印钞机换一个更大的账本

先说清楚问题有多真实。JavaScript 的 `Number` 是 IEEE 754 双精度浮点数，64 位里塞下符号、指数和尾数，能表示的最大值是 1.7976931348623157e308。超过这个数，不是四舍五入，不是精度丢失，是直接变 `Infinity`——游戏里的金币、修为、反物质，一夜之间变成一个“无穷大”，排行榜全崩，存档全废。

普通的增量游戏活不到这一天，但成功的增量游戏一定活得到：玩家挂机三天，产出是指数增长的，1e308 听起来遥远，可从 1e10 到 1e308 不过是三十次“翻十倍”。**玩家睡一觉醒来看到计数器上写着 Infinity，就是这个品类最著名的死亡画面。**

通用解法是上 decimal.js 这类任意精度十进制库。但它为“通用”付出的代价——动态精度、完整运算集、大量格式化能力——在游戏主循环里会被放大成灾难：增量游戏的主循环每秒要跑成百上千次大数乘法和加法，每一次都在为用不到的通用性付费。break_infinity.js 的思路是把刀磨窄：**砍掉任意精度（固定保留约 15 位有效数字，和双精度浮点一个水平），只留增量游戏真正高频用到的那几个运算（乘、加、比大小、幂、对数、取整），把内部表示简化成“一个 1 到 10 之间的尾数 + 一个最高可到约 9e15 的指数”**。指数不再被 11 个二进制位锁死，而是直接用 JS 安全整数来存——上限从 1e308 拉到 1e(9e15)，一个写出来要占半行屏幕的数字。

放到玩家的体验里，这个库参与的是这样一个循环：

```mermaid
flowchart LR
    A["点击 / 挂机<br>基础产出开始滚动"] --> B["主循环结算<br>每秒成百上千次大数运算"]
    B --> C["即时反馈<br>计数翻滚 / 跳字 / 解锁提示"]
    C --> D["买生产者<br>产出从加法变乘法"]
    D --> E["阈值突破<br>1e308 处 double 爆炸<br>break_infinity 无感接管"]
    E --> F["新层级解锁<br>重置全盘，换 prestige 代币"]
    F --> B
    E --> G["钩子：再挂一会儿<br>看看下一个数量级长什么样"]
```

注意 E 那一格：理想状态下，玩家根本感知不到库的存在。1e308 不是终点，只是又一次“数字格式悄悄换了个写法”。这就是它存在的全部意义——**上头的是游戏，兜底的是它。**

## 为什么上头：增量游戏的心理引擎，全建在大数上

拆增量游戏的成瘾机制，你会发现几乎每一环都踩在这个“数字能无限变大”的前提上。

**第一环：即时反馈的密度。** 增量游戏的反馈单位不是“一局”，是“一秒”。计数器每帧翻滚、每买一个生产者跳字一次，这种高频微奖励正是行为心理学里最强化的那种。而反馈的前提是结算便宜——每秒几百次大数运算不能让手机发烫、让页面掉帧，这就是为什么性能库是品类地基：卡一下，“再点一下”的冲动就断了。

**第二环：指数的无感区与惊醒区。** 人脑天生按对数感知数量：从 100 涨到 200 没感觉，从 1e10 涨到 1e11 也没感觉，直到某个阈值突然解锁了新东西，多巴胺才脉冲一次。这套“长期平淡 + 阈值脉冲”的节奏，恰恰需要数字可以无限制地往上铺台阶。1e308 就是一道硬墙——墙在那里，台阶就只能铺三十级，节奏就死了。

**第三环：重置不等于清零。** 现代增量游戏的标配是 prestige 机制：把全部身家归零，换一种“代币”，下一轮从 1e10 而不是 1 起步。玩家欣然接受归零，因为他知道下一轮爬得更快。这个心理契约的底层是：**数值空间必须足够深，深到“重置换速度”永远划算。** 指数上限 9e15 意味着玩法设计师可以放开手做十层二十层 prestige 而不撞墙。

**第四环：大数本身就是奖励。** 玩到后期的增量玩家，盯着 "1.23e4567" 这种数字会获得纯粹的审美快感——这是品类独有的“大数美学”。一个数字崩成 Infinity 或者显示成 NaN 的游戏，等于当着玩家的面撕了这本账。

所以这个仓库 Star 只有 252，但它服务的品类撑起了整个浏览器挂机游戏的半壁江山。小仓库、大生态，这类“卖水人”仓库恰恰是最值得个人开发者研究的位置。

## 技术拆解：一把磨窄的刀长什么样

**表示法。** 普通双精度浮点：1 位符号 + 11 位指数 + 52 位尾数，指数偏移后能到 308 量级就顶天了。break_infinity 的对象本质是 `{mantissa, exponent}` 二元组：尾数还是标准 double（保持硬件乘法速度），指数直接上 JS 安全整数（上限约 9e15）。15 位精度对增量游戏绰绰有余——玩家不关心第 16 位有效数字，关心的是数量级在涨。

**运算取舍。** 通用库要伺候所有场景：任意精度、舍入模式、字符串格式化全家桶。break_infinity 只留增量游戏高频路径——乘法、加法、比较、幂、log10、floor/ceil——每一条都按“尾数指数二元组”手写专门逻辑，避免走通用十进制的慢路。作者的取舍很赤裸：**为了主循环的速度，牺牲库的通用性。** 这对做副业游戏的人是个重要提醒：你的瓶颈往往不在算法多优雅，而在每帧跑几百次的那条路上有没有多余开销。

**上手几乎是零成本的。** API 刻意做成 decimal.js 的子集，会查汇率就会用：

```js
import Decimal from "break_infinity.js";

let money = new Decimal("1e250");
money = money.mul(1.5);        // 1.5e250，主循环里跑几万次也不心疼
money = money.pow(2);          // 2.25e500 —— 已经超出 double 的宇宙
const log = money.log10();     // 500.35…，做"里程碑进度条"就靠它
```

存档就一行 `toString()`，读档 `new Decimal(str)`，序列化天然友好。离线收益更简单：`结算值 = 产出速率 × 离线秒数`，全是它支持的运算。

**天花板之上还有天花板。** 它的姊妹仓库 break_eternity.js（⭐206）在尾数、指数之外又加了一个"layer"维度——指数本身也放不下了，就给指数再套指数，按仓库描述能表示到 10^^1e308 这种迭代幂次的天文数字。两个仓库是明确的分工：break_infinity 快，够 99% 的增量游戏；break_eternity 猛，留给那些把“数字 absurdly 大”本身当卖点的硬核玩家向作品。据增量游戏社区的一般介绍，这对库正是从这个品类最出圈的作品之一 Antimatter Dimensions（反物质维度）的性能需求里长出来的，作者本人也深度参与该作的社区移植——库和游戏共生，是这个开源圈层的典型生态。

**可直接复用的组件清单：** 大数类型 `Decimal` 全套运算、字符串序列化、对数与取整工具。没有状态管理、没有渲染，它就只做一件事——但“数值底座 + 存档序列化 + 离线结算”这三件，恰好是任何一款增量游戏 MVP 里最磨人又最没差异化的部分，全部可以直接搬。

## 变现观察：淘金的不赚钱，卖水的没直接赚钱，但整个金矿都在用它

先说仓库本身：**没有任何变现痕迹**。没有付费版、没有 Pro、没有赞助入口的强引导（据仓库页面形态），就是一个纯粹的开源工具。但把它放回品类看，变现链路非常清晰：

**路径一：网页 + 广告，增量品类的祖传套餐。** 挂机游戏页面停留极长、回访极勤，是最适配展示广告和激励视频的品类。玩家主动看一段广告换“两小时离线收益”，是增量游戏最自然的广告位设计——因为“等待”本来就是玩法的一部分。

**路径二：移动端，广告 + 内购双引擎。** 增量游戏在手游端是长跑型选手：单用户 ARPU 不高，但留存曲线极其平缓，广告变现模型友好，内购卖“加速”“去广告”转化稳定。

**路径三：Steam 买断，小众但真实存在。** Antimatter Dimensions 这个从浏览器免费页起家的作品，据 Steam 页面信息于 2022 年初推出付费买断版（美区约 10 美元档，本次未能联网核实，以页面为准）；Cookie Clicker 以不到 5 美元的定价上架 Steam 后销量长青；更极端的案例是 Melvor Idle——一位独立开发者把“挂机练技能”做成完整游戏，最终由 Jagex 官方发行。**“浏览器免费起家 → 社区养肥 → 买断上架”是增量品类被反复验证的路径。** 而 Patashu 本人的位置也有参考价值：据社区介绍他维护着 AD 的移动移植——移植、上架、接广告变现，本身就是这条链路里的一环。开源库不收钱，但库的作者完全懂钱在哪。

**给副业开发者的定价心理课：** 增量游戏的玩家对“数字”极度敏感、对“便利”极度愿意付费。免广告、离线加速、自动重置——这些卖点的成本几乎为零，因为底层运算已经被 break_infinity 这类库做成了白菜价。

## 给我的灵感：三个可以直接开工的点子

**点子一：题材换皮的中文增量游戏（MVP 约 1-2 周）。** 玩法骨架照抄经典增量循环（点 → 买生产者 → 指数膨胀 → prestige），皮换成中文用户自带情感浓度的题材：修仙（灵石→筑基→金丹→渡劫，境界就是天然的数量级刻度）、开养殖场、比特币挖矿。底层直接 npm 装 break_infinity，境界压制正好映射指数层级。变现走网页广告起步，数据好再套壳上架。修仙题材的“境界=数量级”几乎是为这类库量身定做的设计，市面上做得粗糙的居多，精细一轮就有机会。

**点子二：开源一个“中文增量游戏模板”仓库（MVP 约 1 周）。** 用 break_infinity 打底，把存档、离线收益、成就系统、prestige 重置、数字缩写显示（1.23亿 / 4.56兆 / 7.89京）打包成一个开箱即用的模板。国内想做挂机小游戏的个人开发者不少，但“数字爆了”“存档坏了”是最常见的劝退点。模板本身不收费，用来在 GitHub 和社区引流，变现走赞助、定制开发和付费答疑——和这个仓库本身“卖水人”的位置一模一样，只是把水卖给了中文市场。

**点子三：给现有网页游戏补一个“数字无敌”更新（MVP 几天）。** 如果你已经有一个小游戏，接 break_infinity 加一条超长尾的成长线（比如隐藏的“转生层”，数字上限从 1e308 抬到 1e5000），做成一次版本更新。成本低，但“数字突破天际”是增量玩家社区里天然的传播素材——晒截图就是自来水。

共同点：三个点子的核心技术风险都已经被这个 252 星的仓库消化掉了。你要做的只剩设计数值曲线和选一个自己有感情Prefs的题材——而这两件事，恰恰是这个品类里真正值钱的部分。

## 上手

- 仓库：https://github.com/Patashu/break_infinity.js （TypeScript，可 tree-shake，浏览器与 Node 通用）
- 安装：`npm install break_infinity.js`
- 数字更大的兄弟：https://github.com/Patashu/break_eternity.js （10^^1e308 级别，据仓库描述）
- 想看这个库支撑起来的完整游戏长什么样：搜 Antimatter Dimensions，浏览器有免费在线版，直接开玩
- 本栏目此前写过的 Evolve、A Dark Room、Level13 都是同品类成品，配合这篇食用，正好凑齐“玩法—心理—底座”三层拼图

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