研究命题(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
5.6 KiB
5.6 KiB
玩家大脑配置 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 队友会喊话(从他们的方位传来)。
配置字段(全部可选,缺省=中等水平;数值必须落在建议区间内)
{
"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 并记录)。
- 不要写完美主义配置——真实的人有短板,短板正是设计要照顾的对象。
- 配置写完即可离场,身体由竞技场驱动;局间会请你回来读转写、决定去留。