- 形态
- Web(单文件 / 静态)
- 引擎
- Three.js 0.187 + Cannon-es 0.20
- 内容
- 7 站 · 34 章 · 170 关
- 面向
- 3 岁以上,全年龄
它是什么
一个弹弓打积木的物理游戏,但设定是反着写的:没有敌人,没有输赢,没有死亡。软软镇的街坊把一颗滚出窝的蛋当成搭积木的材料,快递队员们只好一路把塔推倒,把蛋从废墟里捡回来,再送去下一站。
每站一个误会,一起把塔推倒玩,和好,指路下一站。蛋壳上那道月牙印是贯穿全篇的伏笔,七站各有一次天真的猜测,最后一章才揭晓:那只是窝门口的门牌号。
下限低到不识字、不会瞄准也能玩,上限保留完整的精确与挑战。
所以它同时是给幼儿园小朋友和成年人的。三岁的孩子用「陪伴」档,自动帮忙瞄准、方块一碰就塌、队员无限续;想动脑的时候切到「挑战」档,限额队员、族群技能、场景惩罚、分数与三星全部回来。两档的物理参数一模一样,变的只是规则对玩家做什么。
能玩到什么
四种玩法,四个入口
陪伴(3–6 岁,全程不识字也能玩)、轻松(零失败、无限续、贴纸结算)、挑战(原版规则全开)、随便玩玩(无目标,纯推塔)。随时可切,进度互通。
170 关,五关一连
每站五关走「认识 → 变一变 → 合起来 → 一起玩 → 大合奏」。靠机制接力而不是加血,170 关里有 164 种互不重复的战场布局。
十三位队员,一人一个习惯动作
团团发射前蹦两下,噗噗打哈欠,墩墩走两步歇一下。不写「减伤 40%」,改写看得见的性格——孩子看动作就知道该打哪。
七族街坊,不是反派
圆鼻家、长耳巷、尖耳市集、花斑工坊、大耳温泉、鬃毛广场、条纹云台。塔一倒就「哎呀」一声坐地上,摆摆手回家喝茶。
插画是算出来的
34 章剧情插画和全部贴纸图案都由程序按参数生成纯 SVG:同一章永远得到同一张画,没有一张外部图片,所以单文件离线版原样可用。
贴纸册,不是进度条
一关最多一张贴纸,只收集、不兑换、不排名。册子里只写「已收多少张」,不写「还差几张」,空格子说的是「还没遇到」。
拉弓的手感是量出来的
后拉即反向,皮兜 1:1 跟手,拉的斜率与仰角 1:1(实测 45°/66° 误差小于 1°)。力度按指尖像素定标,拉到屏幕边缘就是满力。
离场线,杜绝死局
被撞得滚到弹弓后方的队员够不着了,越过黄黑斜纹的出界线就判「滚出战场」,计分并移出;界外高空卡住 12 秒强制清掉。
技术上的几个选择
物理锁定在发射平面内,开场两秒后全场冻结,直到被撞击才开始计算——结构永远不会自发坍塌,所以「塔是自己倒的」这种事不会发生。邻居的入睡阈值分两段:沉降期收紧,第一发之后放松,否则一颗被抛到半空的邻居会在低速瞬间被冻住,看起来像飘着。
睡眠体有三道兜底:拆方块时摇醒九米内的刚体;每 0.6 秒扫一遍「脚下还有没有支撑」;沉降期只冻结真正静止的刚体。这些不是设计出来的,是巡检脚本一条一条逼出来的。
关卡数据、物理数值、瞄准手感、插画唯一性各有独立的无头巡检: smoke-test 96 项、audit-aim 42 项、 balance-check 13 条,以及 170 关的几何与沉降审计。
关于边界
这是面向三岁起全年龄的作品,所以硬约束写在最前面:无内购、无抽卡、无概率玩法、无限时活动、无排行榜;不联网、不注册、不收集任何个人信息,进度与设置只存本机 localStorage;无死亡、无受伤、无血腥,「消灭」全部表述为「坐下了 / 回家了」。
角色名、世界观、剧情、模型、音效全部原创,不含任何提取的游戏资产。本项目为学习交流性质的独立作品;若面向儿童公开传播或商用,仍需自行完成版权、版号与内容合规评估。
怎么运行
点上面的按钮打开单文件版即可。若想跑源码版(有缓存控制、便于调试),在项目目录执行 node server.js 或 python -m http.server 8080,再访问 http://localhost:8080/。