研究命题(00-plan):验证并打磨《围猎》联机纯音频体验——不是逻辑能跑通, 而是真人玩起来是什么体验、愿不愿意再来一局。 设施 web/harness/hunt-sim/(可复用,零依赖): - arena.mjs 编排器:起真实服务器(随机端口+临时数据目录隔离),10 个拟人客户端 经真实 WS 同时在线,错峰组队、真实时长对局、局间状态跨轮维护 - sim-client.mjs:game.js 行为移植(协议+手势路由+R1-R8 音频调度逐字节对齐), 产出「玩家耳朵听到什么」的感知时间线(语音全文/loop 方位音量档/喊话/震动) - brain.mjs:人设大脑——察觉延迟/前后判读(以真值为条件的正确率模型)/掩蔽放大/ 冷却乱滑/技能囤积/呼喊倾向/分心断网,全部随机判定用按实体 id 哈希的独立抽签 (mulberry32 流会被刷怪座位轮转结构带偏,实测造成系统性镜像反转,已证伪) - recorder.mjs:每人每局 events.jsonl 全量 + percept.md 感知转写 + 对局速览 研究档案 research/hunt-sim/: - players/:10 人配置(LLM 亲笔)+策略自述+逐局去留决策+人设终评+退游者重访 - rounds/:v1 三轮(R0 教学+R1/R2 真人快速)+ v2 复测两轮,共 48 局全记录 - analysis/01-04:数值曲线/音频信息设计/协作社交/上手留存四视角报告 - synthesis.md(S1-S9 裁定)、metrics.md/metrics-v2.md(两版对比总账)、report.md(总报告) v1 核心发现:10 人 3 轮 28 局 100% 胜率 26S/营地零损耗;击杀垄断(专家单人 30/39); 呼喊 3 次/28 局应答 0;N/S 前后判读仅 63/69% 可命中;四种退游死因 (失衡/社交真空/交互摩擦/观光无聊)→ 详见 report.md
93 lines
6.3 KiB
Markdown
93 lines
6.3 KiB
Markdown
# 《围猎》10 人并发模拟 × 多 agent 迭代 — 最终报告
|
||
|
||
> 2026-09-18/19 | 章程:[00-plan.md](00-plan.md) | 用户指令:多 agent 模拟 10 人同时在线 →
|
||
> 多 agent 分析迭代设计 → 全程记录 → 目标是「真正吸引人、玩家愿意玩的音频游戏」。
|
||
|
||
## 1. 做了什么(一句话)
|
||
|
||
10 个 LLM 玩家 agent(每人一张人设卡、亲笔写 20+ 参数的「玩家大脑配置」)驱动 10 个
|
||
拟人客户端,通过真实 WebSocket 连真实服务器**同时在线**打了 v1 三轮 28 局(教学轮 +
|
||
两轮真人快速匹配,含组队/断线/走神/乱滑/跳教学等真实行为),全程逐事件录制并生成
|
||
每人的「感知转写」(耳朵听到什么的逐秒记录);局间由玩家 agent 本人读转写决定去留、
|
||
赛后写人设终评;4 个分析 agent 分视角(数值/音频信息/协作/上手留存)审全部数据产出
|
||
40+ 项修复提案,synthesis 裁定 9 项 P0(S1-S9)落地实施,**同阵容(10 人配置一字未改)
|
||
复测两轮 20 局**对比验证。
|
||
|
||
## 2. v1 → v2 核心对比(详表:[metrics.md](metrics.md) / [metrics-v2.md](metrics-v2.md))
|
||
|
||
| 指标 | v1 | v2 | 判定 |
|
||
|---|---|---|---|
|
||
| R1 后同步点去留 | 2 人退游(P01/P06) | **0 人退游**(P01 回流、P06 收回退游决定) | ✅ |
|
||
| 终评愿意继续玩 | 6/10 | **10/10**(四人重访全部改判) | ✅ |
|
||
| 方位弧错率 | 22% | **11%** | ✅ S6 低通双线索 |
|
||
| N/S 家族可命中 | 63% / 69% | **75% / 81%** | ✅ 同上 |
|
||
| 真人房队友喊话 | 0 条/局 | **7.7 条/人/局** | ✅ S5① 座位角色接线 |
|
||
| 呼喊-应答闭环 | 3 次/28 局、应答 0 | 呼喊必有应答(ack 11 条可闻) | ✅ S5②③ |
|
||
| 闲置语音(看门狗) | 93 次/全场(80 次误伤) | **17 次**(≤1/人/局) | ✅ S4 |
|
||
| 冷却反馈 | 666 次乱滑全 error 震 | 首拦才震 + 就绪轻叮(P07 实证闭环) | ✅ S2 |
|
||
| 战斗中误触菜单 | 多人中招(P01 单局 14 次) | **0**(下滑恒出击) | ✅ S1 |
|
||
| 「你还没开张」羞辱 | 0 杀局点名 4 遍 | 沉默处理(P08 因此 0杀→12杀突破) | ✅ S3 |
|
||
| **营地零损耗** | 6/6 快速局余 10 | **18/20 局余 10** | ❌ **v3 头号遗留** |
|
||
| S 评级占比 | 93% | 仍 100%(双轴条件被专家房轻易满足) | ❌ 随难度一并修 |
|
||
|
||
个案亮点:谨慎姐 P08 从 0-1 杀到 **12 杀 22 出手**(「羞辱链下架让我敢赌第一挥」);
|
||
通勤客 P03 从 0 出手观光退游到 **5 杀 5 出手 0 错弧**;新手 P10 自述「闷声双线索破案
|
||
(变小声+发木=身后,只是小声=远)」——教学没教,但线索本身终于可学。
|
||
|
||
## 3. 交付物清单
|
||
|
||
**代码(全部回归绿:hunt-sim 16/16、playtest 213、guide 132、engine-voice 19)**
|
||
- `web/server/hunt-room.js`:S5 协作人声包(真人座位角色接线/呼喊邻座代答/help 优先)、
|
||
S7 难度重构(4 人房波次 ×4/3 `waveCounts`、齐压拍 `alignPincers`、bot 让位窗
|
||
`mobYielded` 2s、双轴评级 `gradeForEx`:S=耐久≥9 且 ≥2 人各 6 杀)、喊话预算 2→3
|
||
- `web/hunt/game.js`:S1 下滑恒出击+菜单收窄到波间、S2 冷却首拦震+就绪 beat 震、
|
||
S3 0 杀不播 kill_band0、S4 看门狗重定义、S5③ help 永不丢、S6 后半平面 loop 低通
|
||
750Hz 第二线索、S8 教学作答步跳过保护、S9 状态链按变化播
|
||
- `web/harness/hunt-sim/`(新研究设施,可复用):arena.mjs 编排器 + sim-client.mjs
|
||
(game.js 行为移植)+ brain.mjs(人设大脑)+ recorder.mjs(感知转写)+ ws.mjs/assets.mjs
|
||
|
||
**研究档案(research/hunt-sim/)**
|
||
- 00-plan.md 研究章程 | brain-config-schema.md 配置契约
|
||
- players/:10 人配置+策略+逐局去留决策+终评+退游者重访(全部 LLM 亲笔)
|
||
- rounds/:v1 三轮 + v2 两轮,每人每局 percept.md 感知转写 + events.jsonl 全量事件流
|
||
+ 按房 match.json(含方位混淆账)
|
||
- analysis/01-04:数值/音频信息/协作/上手留存四视角报告
|
||
- synthesis.md:S1-S9 裁定 | metrics.md / metrics-v2.md:两版对比总账
|
||
|
||
## 4. 方法论沉淀(对「做吸引人的音频游戏」的可复用结论)
|
||
|
||
1. **「程序化拟人身体 + LLM 玩家灵魂」三层架构**经实测成立:感知层逐字节移植客户端
|
||
音频调度(信息流可信)、配置层由 LLM 按人设亲笔校准(短板真实)、主观层由 LLM
|
||
读感知转写判去留(「愿意玩」可量化为决策点留存率)。
|
||
2. **去留决策点是最硬的产品指标**:比评分诚实(P05 的「第三局白给 S 就删」当场兑现
|
||
与当场解除,都在转写里对得上账)。
|
||
3. **修「怎么被对待」比修玩法更能救人**:v2 里零杀玩家的去留反转(P08/P04)全部来自
|
||
羞辱链下架与看门狗重定义——玩法没变,尊严变了。
|
||
4. **信息可学性是纯音频游戏的生命线**:N/S 判读从 63%→75% 靠的不是教学而是把单线索
|
||
(响度)变双线索(响度+音色)——「玩家自己破案」(P10 语)比「教出来」更留人。
|
||
5. 模拟的盲区也明确:听感层(音色美感/响度平衡)与真实人类的学习迁移仍需真机人耳;
|
||
营地零损耗这类「数值吞吐」问题模拟可以精确复现,但最优修法参数要在模拟与
|
||
balance-scan 之间迭代。
|
||
|
||
## 5. v3 迭代清单(按优先级,数据见 metrics-v2.md 遗留节)
|
||
|
||
1. **难度穿透**(P05 判决条件:营地要掉血):齐压拍 2-3 组/波、后波 wolfEta 8→7s、
|
||
总量 +15%;balance-scan 扩 bot4/opt4 档验收(目标:专家房余耐久带 4-8)。
|
||
2. **真人房参与真空**(P04/P09):分层匹配(join.skill)+ 保底猎物(防区优先窗对真人
|
||
的可听化版本)。
|
||
3. **喊话情报分级投递**(P02 新报占线挤掉开始伤情报)。
|
||
4. **TTS 批次**:tut_back 教学补身后期、kill_band0 正向改写、波间战报句。
|
||
5. P06 的 v3 愿望清单:报点手势、波间队友战报、喊话零丢包。
|
||
|
||
## 6. 复现命令
|
||
|
||
```bash
|
||
# 全量回归
|
||
tools/node/bin/node --test web/server/test/hunt-sim.test.mjs
|
||
tools/node/bin/node web/hunt/test/playtest.mjs
|
||
# 平衡扫描(难度参数验证)
|
||
tools/node/bin/node web/server/test/hunt-balance-scan.mjs 8
|
||
# 再开一轮 10 人模拟(复测协议见 00-plan §6)
|
||
tools/node/bin/node web/harness/hunt-sim/arena.mjs <轮名> --quick
|
||
```
|