Files
SoundGame/research/hunt-sim/brain-config-schema.md
T
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

90 lines
5.6 KiB
Markdown
Raw 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.
# 玩家大脑配置 Schema(玩家 agent 必读)
> 你(玩家 agent)要为自己的人设亲笔写一份 `research/hunt-sim/players/PXX.config.json` +
> 同名 `.strategy.md` 策略自述。配置驱动你在这场模拟里的「身体」:什么时候听见、
> 听得多准、多快出手、什么时候走神。请按你的人设卡如实地填——你就是这个人。
## 游戏速览(《围猎》联机纯音频守卫)
你和 2-3 名队友(可能是 bot 队友阿岩/小筝/老周)围守营地,野兽从 8 方位(N/NE/E/SE/S/SW/W/NW)
逼近,5 波约 3 分钟,营地耐久 10 点,撑过 5 波天亮就赢。
- **听力**:狼/熊逼近有持续脚步声(loop),左右声像(pan)告诉你它在左边还是右边;
**前后只能靠音量**——身后的声音发闷(音量 ×0.6),N 和 S 声像都在正中,全靠闷不闷区分。
远处只有一声嚎叫,近了(约 4 秒突入内)才能出手打到。
- **手势**:朝声音的方向**滑动=出击**(滑向覆盖 ±45° 弧,弧内最近一只;冷却 2.5 秒);
**单击=呼喊支援**(bot 队友会来你这边补位);**双击=旋风斩**(清掉身边一圈,冷却 8 秒;
冷却中双击=重听威胁播报);**上滑=听状态**、**下滑=菜单**(注意:战斗不暂停!)。
- 旁白会播报波次/警报(营地被突入等),bot 队友会喊话(从他们的方位传来)。
## 配置字段(全部可选,缺省=中等水平;数值必须落在建议区间内)
```jsonc
{
"persona": "P01 老鹰", // 人设卡代号+名
"name": "老鹰", // 游戏内显示名(1-24 字)
"gender": "male", // 旁白音色偏好 male|female(你自己听哪个舒服)
"seed": 7, // 随机种子(任意整数,决定你的犹豫细节)
"perception": { // —— 你的耳朵与反应底子 ——
"noticeMsMin": 500, // 内圈脚步声出现→你注意到:最小延迟 ms [300-1500]
"noticeMsMax": 900, // 同上最大延迟(你在带内随机)[400-2200]
"rearDiscrim": 0.85, // 前后判对率:音量发闷线索你能用多好 [0.5-0.98]
// 0.5=纯猜(N/S 各半)、0.85=熟练、0.95+=老猎手
"adjSlideP": 0.12, // 相邻方位误听率(多被 ±45° 弧无害吸收)[0.05-0.35]
"howlHearP": 0.7, // 远处那声嚎叫你注意到的概率 [0.3-0.95]
"voiceMaskFactor": 0.8, // 旁白在播时你的察觉延迟放大倍数 [0-2](0=丝毫不受影响)
"etaErrS": 0.4 // 你对"还有几秒突入"的估计误差 ±秒 [0.2-1.5]
},
"attack": { // —— 出手 ——
"reactMs": 700, // 决定打到出手延迟 ms [400-2000]
"panicEtaS": 2.0, // 感觉还有 N 秒就突入时你会慌(提前出手优先)[1.0-3.0]
"noviceSpamP": 0.05, // 冷却没好还忍不住乱滑的概率/评估窗 [0-0.5]
"bearFirst": true // 听到熊(-2 耐久)优先打 [bool]
},
"skill": { // —— 旋风斩 ——
"innerThreshold": 3, // 身边逼近几只才舍得放 [1-5](囤技能的人填高)
"useP": 0.8, // 每次满足条件的释放意愿 [0.1-1]
"panicEtaS": 1.2, // 有怪 1.2 秒内贴脸时无条件放 [0.6-2.0]
"cooldownAware": true // 你掐得准 8 秒冷却吗 [bool](false=冷却中会双击→变成重听威胁)
},
"callout": { // —— 呼喊支援 ——
"sectorThreshold": 3, // 感觉自己这边几只压力才喊 [2-5](社恐/独狼填 99=从不主动)
"useP": 0.6 // 满足条件时喊的概率 [0-1]
},
"habits": { // —— 习惯与小动作 ——
"lobbyTap": "eager", // 等待房里你会不会单击立即开局 eager|wait
"statusCheck": "waveclear", // 波间休整时上滑听状态 never|waveclear|curious
"menuProb": 0.0, // 战斗中开一下菜单的概率(每局一次判定)[0-0.5]
// (菜单不暂停战斗,开了会漏怪——真实风险)
"lapses": [ // 分心窗(通勤被打断/看视频走神);无则 []
{ "atMin": 40, "atMax": 90, "durMin": 6, "durMax": 14, "reason": "地铁报站" }
], // atMin/Max=局内第几秒开始,durMin/Max=持续秒数
"netDrop": null, // 断网剧本:{"atMin":50,"atMax":120,"durMin":6,"durMax":15}
// 或 null(网络一直稳)
"bluetoothMs": 0 // 蓝牙耳机额外动作延迟 ms [0-250]
},
"teach": { // —— 首局教学 ——
"t1WrongP": 0.2, // 教学第一滑方向搞错的概率 [0-0.7]
"tapDelayMs": 800, // 听完一句指令到动手的延迟 ms [300-2500]
"skipAfterS": null // 教学超过 N 秒还没完你会下滑跳过;null=耐心听完
}
}
```
## 策略自述(.strategy.md,同目录同名)
用第一人称写 200-400 字:你怎么理解这个游戏、你打算怎么打、你最担心什么、
什么情况下你会不想玩了。这段话会跟你的终评一起留给设计分析 agent 对照。
## 纪律
- 数值落区间;越界会被竞技场拒绝(clamp 并记录)。
- 不要写完美主义配置——**真实的人有短板**,短板正是设计要照顾的对象。
- 配置写完即可离场,身体由竞技场驱动;局间会请你回来读转写、决定去留。