一句话介绍 :从罐口投放随机数字球,两个一样的球碰到一起就合成一个大一倍的球,一路合到 1024 。
规则就一句,不用看说明、不用学操作,打开就能玩。
先玩为敬
Demo: 史莱姆 1024 · Slime 1024
(已关闭部署鉴权,点开即玩,不用登录。手机浏览器也能玩。)
怎么玩
- 鼠标:移动选择落点,点击投放
- 键盘:
←``→移动落点,空格投放,R重开,P暂停,M静音 - 触屏:点屏幕任意位置,就在那儿投放
- 三种道具各 1 次(快捷键
1``2``3):
摇一摇 ·
吸小球 ·
换一个
为什么是 1024 :合并链是 1 → 2 → 4 → 8 → … → 512 → 1024 。1K = 1024,我们的球也停在 1024。
两种模式
-
单局 · 通关 :合成 1024 就赢。通关后还能点「继续 · 无尽模式」, 带着这一罐球和分数接着冲 ,不清盘。
-
无尽 · 冲分 :没有终点,看你能堆多大。
1024 这天,不太想动脑子的时候,点几下球挺好的。这是第一版
第二版:
手感是重点,不是"加个渐变"
我一开始提的需求只有五个字: “布灵布灵、史莱姆那种” 。最后落成的东西比这五个字复杂得多:
- 球是"软"的,不是塑料球
碰撞只给形变一个 速度冲量 ,形变本身是一个阻尼弹簧——所以压扁之后会 自己过冲、回弹、弹两下才停 ,而不是简单地衰减回去。静止的球也在以双频微微呼吸。
- 轮廓是有机的
球体不是arc 画的正圆,而是 22 个顶点叠了三层谐波 + 黄金角相位错开的闭合曲线。所以每颗球的边缘都不一样,撞一下之后轮廓还会跟着"抖"一下。
- 整体是一张"桌子上的模型"
美术方向我参照了 Game Art Style 里的 Miniature dioramas(微缩立体模型) 这一类(Tiny Glade / Townscaper / Dorfromantik 那种质感),定了四条原则:
- 单一光源(左上) :球的高光、球边缘亮边、玻璃反光条、UI 顶部高光全部同一个方向
- 柔和接触阴影 :静止的球脚下有深而紧的接触暗,飞行中的球只有淡而散的投影 —— 这是"落地感"最省力的一笔
- 圆润简形 + 克制景深 :罐子拆成底座托盘 / 罐内景深(上亮下暗 + 罐口雾光)/ 前玻璃(罐底厚玻璃亮带、侧壁反光条、圆润卷边)
- 不炫技 :底座比球暗、比背景浊;没有一处会抢主角
- 三种道具,一次性的救急手段
道具 作用
摇一摇 罐内所有球重新落位,整罐一起"布灵"一下
吸小球 吸走场上最小的那颗,救急用
换一个 重摇待投放的球
每局各 1 次,用完变灰。故意不给无限用——给了就没意思了。
TRAE 在创作中发挥的作用
这个作品从"想法"到"能玩",全部在 TRAE 里完成,我基本只负责提需求和验收。
① 它劝我把第一个方案扔了
我最初想做的是"堆栈溢出"主题的叠塔玩法。做完我自己玩了一把就懵了—— 一个要看说明才玩得懂的游戏,本身就不成立。
我把这个顾虑丢给 TRAE,它明确判断了"门槛过高、上手成本不划算",并给出转向"掉落合并"的方案: 门槛降到 3 秒看懂,同时用"合并链终点 = 1024"把主题关联保下来。
这一步是整个作品能立住的关键。第一个方案我一个字节都没删,就放在那儿了。
② 先写验收标准,再写代码
我提的要求是"先写验收标准,做完对照验收标准"。它输出了 49 条 验收标准,分 A 核心玩法 / B 1024 机制与双模式 / C 视觉质感 / D 操作与交互 / E 物理与稳定性 / F 工程与交付 / G 性能 / H 验收纪律 八组。
里面有一条我特别喜欢—— “可通关性算术约束” :因为合并不改变总价值,所以凑出 1024 需要的投放次数下限 = 1024 ÷ 投放池期望值 ≈ 110 次。这是用数学证明"投放池设置不会导致无解",而不是靠"我试了几把感觉能通"。
③ 它自己抓到了我根本想不到的 bug
溢出判负原本用的是"是否曾经碰撞过"这种一次性标记——结果球弹跳一次之后, 在空中飞越警戒线也会被判负 。它改成每帧重算"是否被支撑"(贴底或贴合其它球 + 速度足够低)后才正常。这种 bug 我自己玩十把都未必能复现。
④ 美学需求被我翻译成了可测量的数值
"布灵布灵"最后变成了:落地峰值形变 0.41~0.48、回弹过冲 -0.19、形变后视觉半轴不超过碰撞半径的 1.10 倍(防止球互相穿插)、压扁时底部锚定(不浮空)。
手感是可以用数值打分的。
⑤ 自动化验收闭环
两套测试:无头逻辑测试 65 条 、端到端浏览器测试 64 条 ,覆盖合并判定、连击计分、双模式、溢出防抖、窗口 resize、性能、控制台报错、外部请求。跑完全绿。
中间有一次它反复重跑同一套测试,我发现是因为脚本用固定sleep 等一个需要连续 30 帧才成立的条件,机器负载高时会偶发假失败—— 产品代码一行没改,是测试脚本的问题 。改成轮询之后稳定了。这件事让我意识到"看起来在努力重试"和"真的找到了原因"是两码事。
技术说明
- 纯静态 :HTML + CSS + 经典 JS, 零构建 ,双击
index.html就能玩 - matter.js 0.20.0 本地内置 (含 LICENSE),离线可用, 运行期零外部请求
- 合并检测 :每帧 O(n²) 距离判定,不依赖
collisionStart(持续接触只触发一次会漏合并);collisionStart只用来给形变冲量 - 溢出判定 :越线 + 被支撑 + 年龄达标 + 连续 30 帧,四重条件防误判
- 性能 :60 球同屏,单帧合并检测 0.76ms;首屏可交互 228ms
- 本地嵌入 Nunito 圆体(OFL 许可),中文走系统字体回退
验收
49 条验收标准逐条自查,A–H 全部通过,报告写在项目里的ACCEPTANCE.txt 。
祝所有还在 Build 的人,1024 快乐。



