
点击格子让管道顺时针旋转 90°,在 30 秒内把水从绿色起点引到红色终点。
双击 build/index.html → 点击任意位置开始 → 旋转管道接通水路
| 类型 | 形状 | 开口数 | 有效旋转 |
|---|---|---|---|
| STRAIGHT 直管 | ─ │ | 2 对侧 | 2 |
| ELBOW 弯管 | └ ┘ ┐ ┌ | 2 相邻 | 4 |
| TEE 丁字 | ┬ ┤ ┴ ├ | 3 | 4 |
| CROSS 十字 | ┼ | 4 | 1(无意义) |
| TERMINAL 终端 | 起点/终点 | 1 | 固定(不可旋) |
| 输入 | 行为 |
|---|---|
| 鼠标单击 / 触屏点击 | 旋转该格管道 90° CW |
| 水浸过的格子 | 锁定,无法旋转 |
| 起点 / 终点 | 固定方向,无法旋转 |
| 关 | 网格 | 主要新元素 | 最少旋转 |
|---|---|---|---|
| 1 | 4×4 | 基础 L 形路径 | 6 |
| 2 | 5×5 | 蛇形长路径 | 10 |
| 3 | 5×5 | 引入 TEE 丁字分流 | 11 |
| 4 | 6×6 | 引入 CROSS 十字 | 12 |
| 5 | 7×7 | TEE + CROSS 复合大关 | 14 |
CONFIG:
FILL_TIME_MS:每格充水时间(默认 500ms)LEVEL_TIME_MS:每关总时长(默认 30000ms)GET_READY_MS:每关准备时长(默认 1500ms)ROTATE_ANIM_MS:旋转动画时长(默认 220ms)第一个 30 秒:看介绍 → 点击开始 → 看到绿 S 红 E 和管道缺口 → 1 秒后明白要把管道接起来 → GET READY 倒计时给玩家"哦这是计时游戏" → GO 蓝色水流出现 → 玩家开始点击旋转。
正反馈:
第二局动机:
最强爽点:L4-L5 大网格通关瞬间 — 水流穿越 CROSS 同时朝 3 个方向流动,TEE 又往两边分流,整个屏幕蓝色脉动,金色闪屏。这是天然短视频素材。
最弱断点:
已验证(代码可证):
待验证(需玩家实测):
玩家通过 [鼠标/触屏点击格子旋转管道 90°],
不断获得 [管道形状变化的视觉反馈 + 水流逐格流动的过程感],
为了 [在 30 秒内引导水流抵达终点 + 挑战最少旋转数],
逐步形成 [水流前的快速空间规划 + 提前判断哪格先改 的策略思维]。让一个不知情玩家在 5 分钟内通关 ≥ 3 关,玩第二局比第一局少 ≥ 5 步。
5 名不知情玩家,5 分钟。记录:
5 人中 ≥ 4 人通关 ≥ 3 关,平均第二关步数减少 ≥ 5,≥ 2 人说"想做自己的关",≥ 1 人分享截图。
请基于 E:\project513\prototypes\2026-05-13-12-pipe-rotate\ 执行扩展验证 v2。
本次只做 [关卡编辑器 v0 或 自由模式](选一)。
不要做完整商业化,不要加联网。
完成后输出新版原型、测试报告和下一轮建议。点击格子旋转管道,在 30 秒内拼出从绿点到红点的水路
513 系列前 9 个 failure mode 都是单一维度(时间、HP、错误、撞击、漏过、字符越界、步数、连击中断、目标未达)。本作首次叠加:
水流是"双轴压力"的物理化身:玩家既要紧贴时间(水流前进)又要管控空间(路径连通)。
被水浸过的格子无法再旋转,意味着玩家只能改变水流前方的格子,倒逼"提前规划"心智。这是经典 Pipe Mania 的核心张力,我们保留并简化(不需要拖拽放置新管道)。
加上旋转 4 个角度,组合空间足够 100+ 关变化,但 5 关已能让玩家熟悉所有形状。
水流速度:每格 500ms 填满
单格填充:
0-250ms:从入口侧(inlet)填到中心
250-500ms:从中心填到所有出口侧(outlets)
TEE/CROSS 的多个出口同时填充(并行)
GET_READY_MS = 1500ms(玩家预先规划时间)
LEVEL_TIME_MS = 30000ms(水流开始后总时长)
水流速度 1 格/0.5s × 30s = 60 格容量。最大网格 7×7 = 49 格,理论上水可走遍全图。实际路径长度 13 格,水流 6.5s 抵达终点,剩 23.5s 时间余量供玩家决策。
通关分数 = 100 + floor(剩余秒数 × 10)
满分(30 秒余量 = 0 用时)= 100 + 300 = 400
最差通关(0 秒余量)= 100
ROTATE_ANIM_MS = 220ms
easeOutCubic: 1 - (1 - t)^3
220ms 是「快但能看清」的平衡点。
| 元素 | 实现 |
|---|---|
| 背景 | 中央径向渐变(深蓝调 #0c1a30 → #061122) |
| 网格底色 | 深灰 + 浸水后蓝色光晕 |
| 管道基座 | 双层灰色(外亮内暗),中心圆点 |
| 水流 | 蓝色渐变线(#00d4ff → #4cc9f0 → #0090d8)+ 8px shadowBlur 发光 |
| 水流脉动 | 线宽 ±4% sin 波动 |
| 起点标记 | 绿色脉动圆 + "S" 字 |
| 终点标记 | 红色脉动圆 + "E" 字 |
| 旋转动画 | 220ms easeOutCubic |
| 点击反馈 | 黄色边框 fade-out 250ms |
| 通关闪屏 | 金黄色全屏覆盖 + 40 颗粒子 |
| 失败闪屏 | 红色全屏覆盖 + 30 颗粒子 |
| GET READY | 屏幕中央 120px 数字倒计时 + GO! |
build/index.htmlnode --check(提取 JS 部分)通过rotateCell(x, y):检查未浸水 + 非 start/end → clickCount++ + 启动 220ms 动画cellBits(c) = rotateBits(PIPE_BASE[c.t], effectiveRot(c)):位运算返回当前 4 侧开口updateWater(now):BFS 推进 — 对每个 processedExits=false 的 flooded 格子,500ms 后探索所有出口侧 → 邻居匹配 → 加入 floodedallDone (所有 flooded 都 processedExits) && anyFlooded && !endFlooded → triggerFailnow - waterStartTime > LEVEL_TIME_MS → triggerFailendCell.flooded && age >= FILL_TIME_MS * 0.7 → onLevelCleargetDisplayRot(c, now):easeOutCubic 从 rotAnimFrom 到 clickCount经 Node.js 独立模拟验证(5 关 SOLUTIONS 写死,水流 BFS 模拟):
Level 1 (4x4): SOLVABLE | start=(0,0) end=(3,3) | water reached 7 cells | min clicks=6
Level 2 (5x5): SOLVABLE | start=(0,0) end=(4,4) | water reached 9 cells | min clicks=10
Level 3 (5x5): SOLVABLE | start=(0,0) end=(4,4) | water reached 10 cells | min clicks=11
Level 4 (6x6): SOLVABLE | start=(0,0) end=(5,5) | water reached 11 cells | min clicks=12
Level 5 (7x7): SOLVABLE | start=(0,0) end=(6,6) | water reached 13 cells | min clicks=14
且每关初始状态 NOT auto-solved(玩家必须旋转)✓
| 反馈 | 实现 |
|---|---|
| 旋转动画 | 220ms easeOutCubic ctx.rotate |
| 旋转点击 | triangle 380-560Hz 60ms 音 |
| 旋转高亮 | 黄色边框 fade-out 250ms |
| 水流可视 | 渐变蓝色 + 8px shadowBlur 发光 |
| 水流脉动 | 线宽 ±4% sin 波动 |
| 浸水格底色 | 暗蓝色 rgba(20,52,90,0.85) |
| 起点 | 绿色脉动圆 + "S" 字 |
| 终点 | 红色脉动圆 + "E" 字 |
| GET READY | 中央 120px 数字倒计时 + GO! |
| 通关闪屏 | 金黄全屏 + 40 颗粒子 + 三音和弦 |
| 失败闪屏 | 红色全屏 + 30 颗粒子 + 低频锯齿音 |
| 屏幕震动 | shake 变量 |
| 时间条 | 渐变 (#00d4ff → #4cc9f0 → #ffd60a) |
| 指标 | 分数 | 依据 |
|---|---|---|
| 30 秒可理解 | 9 | 看到绿 S + 红 E + 管道缺口 = 目标显然;rotate 90° 操作 1 次就懂 |
| 操作反馈 | 8 | 旋转动画 + 音效 + 黄色边框;水流可视;6 重反馈层 |
| 核心循环 | 9 | 旋转→连通→水流推进→通关,5 关递增清晰 |
| 复玩动力 | 8 | 最少步数挑战 + 分数追求 + 5 关熟练度 |
| 爽感 | 8 | 水流抵达终点的全屏蓝色流动 + 通关金色闪屏 |
| 策略空间 | 8 | TEE/CROSS 引入分流策略;时间压力下的预规划 |
| 开发完成度 | 8 | 598 行、5 关验证可解、语法通过、双 src/build 同步 |
| 商业扩展潜力 | 9 | 关卡编辑器 + 皮肤 + 排行榜 + 每日挑战 都极易扩 |
8 维平均:8.375
候选矩阵:
总分 = 88
| 条件 | 阈值 | 实际 | 通过 |
|---|---|---|---|
| 综合 | ≥ 8 | 8.375 | ✅ |
| 30 秒 | ≥ 8 | 9 | ✅ |
| 核心 | ≥ 8 | 9 | ✅ |
| 复玩 | ≥ 7 | 8 | ✅ |
| 完成度 | ≥ 7 | 8 | ✅ |
| 无阻塞 bug | 是 | 是 | ✅ |
结论:GO
俄罗斯方块 lite · 7 种方块下落 · 消行得分 · 顶到顶 = GG
点击地图节点放置塔 · 自动攻击 · 10 波敌人 · 守住基地
鼠标瞄准 + 单击发射 + 3+ 同色相邻 = 消除 + 浮动消失 + 通关或泡泡触底
拖拽画几条斜板 → 按 GO → 看小球被重力 + 反射推进,落入篮筐 = 过关。
鼠标瞄准 + 单击释放 + 同级球碰撞自动合成升级 + 容器顶部红线 = Game Over
—