research(hunt-sim): 10 人并发在线模拟×多 agent 设计迭代——研究设施与全套档案

研究命题(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
This commit is contained in:
xsl
2026-09-19 11:06:07 +08:00
parent 963dfa1cc8
commit 0652c2f0e6
224 changed files with 78576 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
# 《围猎》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
```