12 KiB
16 · 《回声地窟》(dungeon / Echo Cavern)
给开发者的实现要点摘要
- 交互权威:26-audio-interaction-playbook.md。空间范式对齐 26-apply-escape.md 与 00 §5.3:四向滑动是玩法 → 帮助一律长按。
- 核心动词:单击=声波脉冲(听回声看地形)。四向滑动=按面朝相对移动(前/左/右/后)。废除长按=前进、双击=重发脉冲。
- 听声辨位 Roguelike:网格 + 面朝。回声=静态地形,脚步=动态怪物,播报=绝对方位——三套信息单源
grid。- 一命一局,7 层满通约 24 分钟;金币进元进度(5 项遗产)。L1 ATK=0、L2 ATK=1,学期不可能死。
- 台词 16-dungeon-voice-ids.md(127 句 ×2 性别,无 NPC)。随机性 mulberry32,
opts.seed可注入。- 规模:bgm 4 + sfx ~36 + voice 127×2。回声用预生成资产 + setTimeout + volume,不用引擎外实时节点。
附录 C · 设计单
1. 一句话核心动作
朝四个方向滑动在洞窟里走,单击发出声波脉冲听地形,按住屏幕问路。
2. 玩家能感知的状态(3 个)
| 状态 | 听感 | Floor |
|---|---|---|
| 探索 | 洞穴环境 loop(amb_cave)常响;脚步/回声是内容 | ACTION |
| 听讲 | 教学/房间/战斗报名语音,BGM 整链压低 | SPEAKING |
| 危险 | battle BGM 或 danger earcon + 心跳震(血量≤25% / 敌前摇) | ACTION + danger 签名 |
探索期撞墙=闷响 + invalid,不算第四态(一次性教)。
3. 新手手势与解锁(四向滑动是玩法)
| 手势 | 含义 | 说明 |
|---|---|---|
| 四向滑动 | 面朝相对移动:上=前进一格;左=向左侧走一格并转向该向;右=向右侧走一格并转向;下=后退一格(面朝不变) | 阶段 0 即核心,不按阶梯锁 |
| 单击 | 脉冲(探索);战斗玩家回合=挥击;敌方前摇窗内=格挡 | 核心动词 |
| 长按 | 我在哪(层/血/面朝/一个动作,≤20 字) | 帮助入口,全空间游戏同一条 |
| 双击 | 新手期按单击处理。阶段 3=重听最近回声编码(冷却外再脉冲,不扣资源) | 禁止「双击=立刻免冷却重播」绑死连点 |
| 下滑 | 对局中=后退(玩法占用)。菜单仅阶段 2 且 SETTLE/TITLE 开放 | 00 §5.3 |
对局期关闭长按旁白加速(帮助占用长按)。
4. 状态 × 手势矩阵(新手期)
| 状态 \ 手势 | 单击 | 四向滑动 | 长按 | 双击(未解锁) | 连点/乱滑 |
|---|---|---|---|---|---|
| 教学作答 | 按步骤(脉冲/确认) | 按步骤走/转向 | 帮助 | 按单击 | 计入迷茫 |
| 探索 ACTION | 脉冲 + 回声组(冷却中 invalid) | 移动=脚步 silent-ok;撞墙=闷响+invalid+归因一次 | 帮助 | 按单击(冷却后再脉冲=合法「再听」) | 乱滑计入迷茫;冷却连点只 busy/invalid |
| 描述在播 | 跳过这句 + ok | 打断并移动 | 打断,帮助 | 按单击 | 第一下有效 |
| 战斗·我的回合 | 挥击(面前才中) | 左/右转面对敌人;下=尝试逃跑(普通怪必成挨一下;Boss 拒绝) | 帮助(血量+敌方位) | 按单击 | 计入迷茫 |
| 战斗·敌前摇 | 格挡(面对来源减伤 80%) | 转身(窗口内来得及则下一击面对) | 帮助 | 按单击=格挡 | 只处理第一下 |
| 结算 | 再来一局 + ok | invalid + 解释一次 | 重听结算一句 | 按单击 | 只处理第一下 |
| 菜单 | 确认当前项 | 右=下一项 / 左=上一项 | 重听菜单说明 | 按单击 | busy |
脉冲已有明显内容音时可 silent-ok。invalid/busy 永远出声。
5. 等待点配置
教学(6s/15s)
| 步 | 期待 | 指令 |
|---|---|---|
| D0 | 单击 | 「黑暗。点一下,听回声。」 |
| D1 | 再单击 | 回声演示(前方保证有墙) |
| D2 | 上滑(前进) | 「朝前,滑一下。」 |
| D3 | 左滑或右滑 | 「向左滑,转身走。」 |
| D4 | 单击 | 拾到本房金币(首胜) |
| D5 | 长按 | 「迷路了,按住屏幕。」 |
| D6 | 走向教学怪:单击挥击 | ATK=0,乱打不死 |
探索期无固定等待点。迷茫:静默 40s 起 / 乱滑 / 连续无效。L1 短目标句(「向右滑。」)→ L2 只放行导航方向 → L3 游戏朝楼梯走一步。卡关带路并入迷茫,不再 60/120/180 独立轰炸。
战斗回合:turn + 等待声;8s short「点一下,打。」15s earcon。
6. 首 3 分钟逐秒脚本
| 时间 | 游戏说 / 播 | 期待 | 没做 | 做错 |
|---|---|---|---|---|
| 0~3s | amb_cave →「黑暗。点一下,听回声。」(critical) | 单击脉冲 | 「点一下。」 | 滑动:invalid +「先点一下。」 |
| 3~8s | pulse + echo + 材质 →「对。回声越快,墙越近。」 | 再点(巩固) | 短句 | 冷却内连点:busy |
| 8~10s | 奖励音(听懂回声=第一次成功) | — | ||
| 10~25s | 「朝前,滑一下。」 | 上滑前进 | 「滑一下。」 | 撞墙:闷响 +「那边是墙。」 |
| 25~40s | 「向左滑。」→ 脚步 | 左移 | 短句 | 纠错一次 |
| 40~60s | 「按住屏幕,听自己在哪。」 | 长按 | 「按住。」 | 其他:invalid |
| 60~90s | 自由探索;保证房内金币 | 走+脉冲 | 迷茫接管 | 撞墙无伤 |
| 90~180s | 教学蝠 ATK=0:脚步 → 前摇窗单击格挡 → 单击挥击至击杀 | 战斗 | L3 演示格挡 | 学期不掉血 |
节奏:3s 内脉冲 ✓;10s 内第一次听懂回声 ✓;每 30s 新房间/金币/击杀 ✓。
7. 失败表
| 失败类型 | 判定 | 归因 | 回到 | 新手期 |
|---|---|---|---|---|
| 撞墙 | 越界 | 「那边是墙。」每方向整局一次,之后只闷响+invalid | 原地 | 无伤 |
| 挥空 | 怪不在面前 | 「它不在正面。左右滑。」 | 本回合 | 无 |
| 格挡失败 | 前摇内未点或未面对 | 「慢了。听到就点。」/「在身后。」 | 下回合 | L1–2 怪打不死你 |
| 死亡 | HP≤0 | die_cause_* 按 lastHit;die_adv_* 按真实格挡数 | TITLE,金币入 meta | 学期不可能 |
| 迷路 | 迷茫信号 | L1→L3 带路 | 原地 | 无 |
8. 台词类别
critical:开场「点一下,听回声」;结算承诺句content:intro、层/血/金/面朝/威胁档、btl_start_、tut_(改词后)、unlock_*hint:lp_* 长按帮助、nav_、stair_hint_、sys_continue_ask、gd_pulse 短句feedback:wall、btl_swish、btl_behind、btl_no_turn、die_cause_*、tut_parry_miss- 停用旧句(须重录或下架):
tut_walk「按住屏幕不放,你就往前走。」tut_replay「双击,再发一次脉冲」tut_parry「双击格挡」tut_status「上滑听状态」tut_menu「下滑打开菜单」tut_flee_hold「想逃跑,按住别松手」
资产账:127 句 ×2 性别(含 gold_some)。新教学句替换上列,总数可持平或 +3(tut_move / tut_help_hold / tut_parry_tap),上限 130。
9. 断点复述
- 保存:拾取/战斗/下潜/菜单保存/死亡。data 含 meta + run(seed/floor/pos/face/hp…)。
- 回来:sys_continue_ask;单击恢复 + 长按帮助句作复述(位置。目标。滑一下。);右滑新周目(meta 保留)。
- summary:
第{floor}层 · {血量档} · 金币{meta.gold} · 遗产{n}/5。
10. 测试记录
web/dungeon/test/playtest.mjs。改口径:D0 3s 内脉冲;移动断言改四向滑;长按=帮助不位移;战斗前摇单击=格挡;下滑动=后退不打开菜单;双击不重发免冷却。无声操作 0。真人冷启动待测。
1. 概述
盲眼探窟者用脉冲「看」每次不同的地窟,听脚步辨怪,逐层下潜。死了金币留在遗产里,越死越强。黑暗是设定不是妥协。方位降维 ≤4。与 escape 同为空间探索,战斗回合承接 rpg,元进度为本作增量。
2. 状态机
TITLE / DRILL / EXPLORE / BATTLE / MENU / DESCEND / SETTLE。MENU 仅 TITLE/SETTLE(及阶段 2)。
TITLE ──单击(无档)──> DRILL(仅首次)──完成──> EXPLORE(L1)
──单击(有档)──> EXPLORE 恢复+复述
EXPLORE ⇄ BATTLE(走进怪格)
EXPLORE ──楼梯格+单击──> DESCEND ──> 下层
HP≤0 或 L7 通关 ──> SETTLE ──单击──> TITLE
DESCEND:stairs_down + evt_descend + st_floor_N,约 5s。
3. 声波脉冲
| 维度 | 编码 |
|---|---|
| 正前距离 | 4 档,延迟 0.25/0.50/0.80/1.10s,volume 0.9/0.7/0.5/0.35,echo_1..4 |
| 正前材质 | +120ms mat_stone/door/stair/water |
| 左右侧 | +0.35s 预 pan:side_wall_l/r 或 side_open_l/r(第一格地板=开口) |
| 身后 | 不报;转身即查 |
冷却 1.2s。冷却内单击=invalid(无第二次回声)。需要再听:冷却后再单击,或长按问路。站楼梯格踏入即自动贴身铁器回声(到达即报,不占单击——单击仍是下潜确认)。
三套信息单源 grid:回声不报怪,脚步不报地形。威胁播报只报左右。
频带:脚步 100–300Hz,脉冲中频,BGM 垫底。并发前景 ≤2。
4. 地窟生成
rng(floor) = mulberry32((seed ^ (floor * 0x9E3779B9)) >>> 0)。房间矩形 + L 走廊 MST;楼梯=BFS 最远房;怪距起点 ≥3(教学局非门怪 ≥4);主路径每 ≤12 格必有内容。
| 层 | 尺寸 | 怪物 | 宝物 | 目标分 |
|---|---|---|---|---|
| 1 | 7×7 | 盲眼蝠×2 ATK0 | 金币×1 | 3.0 |
| 2 | 7×7 | 窟鼠×3 | 金+药 | 3.0 |
| 3 | 9×9 | 菇×3 + 石甲蟹 | 金+短刃 | 3.5 |
| 4 | 9×9 | 绕行者×2+洞蛛×2 | 金+皮甲 | 3.5 |
| 5 | 11×11 | 洞蛛×3+绕行者×2 | 金+药 | 3.5 |
| 6 | 11×11 | 洞蛛×2+绕行者×2+腐沼蟒 | 金+阔刃 | 3.5 |
| 7 | 11×11 | 石像卫×3+窟中之王 | 金 | 4.0 |
窟主守楼梯;未击败踏格播 evt_stairs_lock。
5. 战斗
明雷:脚步持续可闻。遭遇自动面对。
玩家回合 → 单击挥击 / 下滑逃跑 / 左右转
怪行动(绕位先报脚步)→ 前摇 1.2s tel_*
前摇内单击=格挡(面对 ×0.2 / 未面对 ×1.0)
HP≤25% 且有药 → 自动喝
HP≤0 → 死亡链
缠斗怪左右滑:btl_no_turn 每场解释一次后只 invalid。绕位怪每 2 回合换左/右/后。Boss 半血 ATK+1,拒绝逃跑。逃跑必成、挨一下、怪留原格。每 4 杀 atkLv+1。
格挡改绑单击(敌前摇窗):新手无双击;窗外单击若在玩家回合才是挥击,前摇期单击只判格挡。
6. 数值与遗产
maxHp=20(+vigor 6);atk=2+atkLv+武器。L1–2 学期零惩罚。
| 敌 | HP | ATK | 行为 | 金 |
|---|---|---|---|---|
| 蝠 | 4 | 0 | 缠斗 | 3 |
| 鼠 | 6 | 1 | 缠斗 | 5 |
| 菇 | 8 | 2 | 缠斗 | 8 |
| 石甲蟹 | 20 | 3 | Boss 绕位 | 50 |
| 绕行者 | 10 | 2 | 绕位 | 10 |
| 洞蛛 | 12 | 3 | 缠斗 | 12 |
| 腐沼蟒 | 26 | 4 | Boss | 80 |
| 石像卫 | 16 | 4 | 绕位 | 15 |
| 窟中之王 | 36 | 5→6 | Boss | 通关 |
遗产(meta.gold,死亡不清):药 90 / 体魄 150 / 护符 220 / 回声强化 300 / 武器 450。金币档 0=空手句;0<金<50 播 gold_some「带回来一点,不多。」
7. 音频
BGM:menu / explore / battle / boss。SFX:pulse、echo_1..4、mat_、side_、step_own/turn、bump、coin/potion/gear、stairs_down、mob_step_{small,bug,heavy}{l,c,r}、tel*、atk_swing/hit、parry、hurt、enemy_die、levelup、amb_cave、turn_tick。侧向能量只在单声道。
Voice 127×2,数字全分档整句。
8. Floor 与迷茫
| 状态 | earcon |
|---|---|
| TITLE/MENU | menu |
| DRILL/EXPLORE/DESCEND | explore |
| BATTLE | battle |
| SETTLE | settle |
| 血≤25% / Boss 半血 | danger |
choice 不用。对局中下滑=后退,不播 menu。等待声:探索环境 loop 已承担;战斗 turn 后 400ms 合成等待声。纠错每个状态×手势一次,之后只回执;连续 3 次无效进迷茫。
9. 存档
{
"schema": 1, "game": "dungeon",
"summary": "第3层 · 伤势不轻 · 金币268 · 遗产2/5",
"meta": { "gold": 268, "unlocks": ["potion", "vigor"], "bestFloor": 5, "runs": 7, "kills": 23 },
"run": { "seed": 42, "floor": 3, "pos": [5, 2], "face": "E", "hp": 11 }
}
SETTLE 进态 800ms 手势死窗(吞死亡瞬间在途单击,防结算链被截进 TITLE)。
10. playtest 指针
seed 复现、回声===grid、学习期 ATK、死亡归因真话、到达即报铁器、gold_some 档位:保留。删除:长按位移、双击免冷却重发、下滑开战斗菜单、双击格挡。新增:3s 内脉冲、长按播帮助且 pos 不变、前摇单击减伤 ×0.2、下滑动 pos 后退。