Files
xsl 0652c2f0e6 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
2026-09-19 11:06:07 +08:00

93 lines
6.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 《围猎》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
```