feat(hunt): 《围猎》2-4人实时联机纯音频协作守卫——纯音频MMORPG第一阶段切片

- 设计:docs/design/23-hunt.md + voice-ids(84 id,166条)+ 13号断言登记,§15记录10+1条设计裁决
- 服务器:零依赖WebSocket(ws.js)+ 房间管理/服务端权威战斗/bot AI(hunt-room.js),断线30s宽限resume回槽、超时转bot;修复package.json模块类型误判的既有破坏
- 客户端:web/hunt/ 全套(教学T0-T4/听觉视野裁剪R1-R8/结算排行榜/guide接入),playtest 211断言
- 引擎:audio.js 后向兼容 opts.pan(StereoPannerNode),web-engine-api.md 同步
- 资产:166条TTS语音(QC无离群)+ 13件合成sfx(真峰值≤-3dBFS)+ 2首Mureka BGM,终检全绿
- 平衡:bot调参至挂机局71%失守/C、3bot局71% A/B(hunt-balance-scan.mjs 24种子扫描)
- 接线:大厅卡片、profiles.js hunt桶、README/roadmap MMO路线条目

验证:hunt-sim 16/16 + api-smoke 12/12 + hunt playtest 211/211 + 既有10游戏与引擎回归零回退 + 真服务器WS端到端冒烟通过
This commit is contained in:
xsl
2026-09-13 11:08:01 +08:00
parent 31372615b2
commit 005851d01a
392 changed files with 6826 additions and 19 deletions
+58
View File
@@ -0,0 +1,58 @@
# 围猎(HUNT · Night Hunt)
2-4 人实时联机纯音频协作守卫。夜幕降临,野兽从四面八方围上来——你和队友
背背守住营地篝火,**听声音的方向滑过去就是一刀**,撑过五波,天亮就赢。
> 本作是"纯音频 MMORPG"路线的第一阶段最小验证切片:实时同步(零依赖
> WebSocket + 服务端权威)、音频信道拥挤控制(R1-R8)、空间音频协作
> (方位=声像 pan + 防区分工)。设计全文见 docs/design/23-hunt.md。
## 玩法
- 圆形猎场,猎人位于营地中心篝火旁。野兽从 **8 个罗盘方位**的边缘逼近
(全程 8-12 秒):**声像就是小地图**——狼的碎步、熊的重步从它所在的
方向传来,越近越响;后半平面(身后)的声音会发闷(音量 ×0.6)。
- **突入中心 = 营地耐久受损**(饿狼 -1,暴熊 -2;初始 10,全队共享)。
耐久归零 = 营地失守(立即终局);撑过 5 波 = 胜利结算(评级 S~C)。
- 同刻最多只有**最近的 3 只**野兽的脚步可闻(听觉视野裁剪);6 秒外的
野兽只有生成时的一声呼啸。**威胁播报只说近处有几只,不报方位**——
方位永远靠耳朵听声像。
- 空位由 bot 猎手补齐(开局至少 3 猎人):阿岩(憨厚男声)、小筝(轻快
女声)、老周(沙哑老年男声)。bot 的喊话从它防区的方向传来;断线 30 秒
内重连可回槽,超时由老猎手(bot)顶上。
## 手势
| 手势 | 战斗态(WAVE) |
|---|---|
| 四向滑 | **出击**:滑向映射 90° 弧(上→北弧、右→东弧、下→南弧、左→西弧),击杀弧内贴近(≤4 秒)最近一只;冷却 2.5 秒。**上/下滑弧内无可打怪时**:上滑=状态链、下滑=菜单(三件套保留的语境折中) |
| 单击 | **呼喊支援**:队友收到你防区方位的空间化喊话 + 警告震动,空闲 bot 朝你侧补位 10 秒;节流 5 秒 |
| 双击 | 旋风斩**就绪** → 放出(清全场内圈,冷却 8 秒,冷却完成有语音提示);**冷却中** → 重新听威胁播报 |
| 上滑 | 状态链:营地耐久档 → 波次档 → 在场猎人数 → 自己击杀档 |
| 下滑 | 菜单(**不暂停**——联机实时,菜单开着怪物照走) |
| 长按 | 旁白快进(引擎内置) |
标题/大厅/结算遵循全局约定:单击=快速匹配/立即开局/再来一局,双击=重听,
上滑=个人最佳/在场猎人/最佳段,下滑=菜单。菜单固定 3 项:回到猎场 /
重新听帮助 / 退出房间回大厅(单击循环、双击确认、下滑关闭)。
## 教学(首局)
首次进入自动开**教学房**(单人 + 2 bot,教学波零惩罚):T0 规则总述 →
T1 朝声音方向滑杀教学狼 → T2 单击呼喊听 bot 应答 → T3 双击旋风斩 →
T4 上滑状态链;任意时刻下滑跳过。教学完同场直接接续第 1 波。
## 运行
```bash
bash web/serve.sh # Node 零依赖服务器(静态 + REST + /ws/hunt 同端口)
# 浏览器打开 http://<局域网地址>:8000/hunt/ ,2-4 人同 WiFi 各开一页即同局
```
## 测试
```bash
tools/node/bin/node web/hunt/test/playtest.mjs
# 无头试玩:虚拟时钟 + mock 浏览器环境 + 内存回路 WS mock(按 23 §6 协议
# 注入 joined/ev/snap/err),覆盖 13 号文档 §24 客户端侧全部断言
```