首页 › games › 《break_infinity.js》1e308之后,数字还得涨

《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),一个写出来要占半行屏幕的数字。

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

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 的子集,会查汇率就会用:

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的题材——而这两件事,恰恰是这个品类里真正值钱的部分。

上手

[!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学通信知识星球海报-扫码加入