Files
SoundGame/research/platform/00-synthesis.md
T
xsl 3704cd0792 research(platform): 无感用户系统 + PC/手机双端一致 三路调研(身份/键位与语音/数据同步)+ 汇总方案
- 01-identity:推荐自动匿名档案(首访 0 交互)+ Netflix 式切换器 + 配对码跨设备;passkey 因 LAN HTTP 不可用否决;审计出 7/8 游戏跨设备只 PUT 不 GET、大厅零 aria、玩家名不可朗读三个存量问题
- 02-input-parity:方向键/WASD+空格+回车(双击即时)键位(audiogames 社区惯例同构);语音双套资产路线(153 句含操作词,306 TTS/37min);MVP ~200 行 1-2 人日
- 03-data-sync:设备 token 即档案、localStorage 按 profileId 分桶(修同设备串档)、桶级 LWW + baseUpdatedAt 守卫、claim 可选认领 + PIN scrypt;公网前 8 条清单
- 00-synthesis:需求映射 + 架构收敛 + P0/P1 分期 + 3 个待拍板决策点
2026-09-09 23:09:24 +08:00

3.3 KiB
Raw Blame History

平台能力调研汇总 — 无感用户系统 + PC/手机双端一致

三路并行调研的汇总与实施方案建议(2026-09-08)。分报告:01-identity 身份方案 | 02-input-parity 键盘与双端 | 03-data-sync 数据架构。

1. 用户需求 → 方案映射

需求(用户原话) 方案
支持多玩家访问,不想影响体验 自动匿名档案:首访 0 输入 0 点击,服务器静默建档发 token
不让用户注册 注册降级为可选「认领」(给档案起名 + 设 PIN),永不弹窗
能区分用户、保留状态 设备 token 即档案;localStorage 按 profileId 分桶(修掉现状同设备串档 bug);进度按游戏分桶 LWW 同步
PC 键盘操作 方向键/WASD=滑动、空格=单击、回车=双击(即时)、按住空格=长按;游戏代码零改动
PC 画面提示 输入模式自动检测 + 手动覆盖;HTML 文案随模式切换

2. 推荐架构(三报告收敛)

首访浏览器 ──POST /api/device──> 匿名档案 {profileId, token}(0 交互)
   本地:localStorage 按 profileId 分桶(进度主存 + 异步上传)
   同设备多人:大厅「切换玩家」档案切换器(倒灌/回灌 localStorage,游戏零改动)
   跨设备:旧设备出示 6 位配对码(语音逐位播报)→ 新设备输入 → 合并
   认领(可选):给档案命名 + 设 PIN(scrypt 哈希);旧数据按桶 LWW 合并
键盘:gesture.js 键盘通道喂现有状态机(~120 行)+ 启动遮罩键盘解锁 + settings.input
语音:双套资产 voice/<gender>/key/(153 句 ×2 性别,TTS 306 生成/37 分钟音频)

关键否决/发现:

  • passkey 否决为主方案:WebAuthn 在局域网 HTTP 私有 IP 下不可用(W3C secure context)
  • 存量 bug 三连:① 7/8 游戏跨设备只 PUT 不 GET(换设备进度不回拉);② localStorage 单桶(同设备换人登录会串档污染);③ 大厅零 aria、玩家名不可朗读
  • 语音路线 c(不动语音只改文字)不能作终态:AppleVis 社区明确批评过无键盘等价命令的音频游戏

3. 分期实施

P0 最小可用(约 3-4 人日,无 TTS)

  1. gesture.js 键盘通道 + 遮罩解锁 + settings.input(自动检测+手动覆盖)+ 大厅/遮罩文案适配
  2. /api/device 匿名档案 + localStorage 分桶 + PUT baseUpdatedAt 守卫 + GET 回拉(修存量三 bug)
  3. PIN scrypt 哈希(十行级)
  4. 大厅档案切换器(自动命名「玩家一」,earcon 签名 + 编号音可听化)
  5. playtest/guide 回归 + engine-voice + live 键盘通道

P1 完整版(+1 GPU 晚 + 1-2 人日)

  1. 153 句键盘措辞 ×2 性别 TTS 双套资产 + 引擎 input 资产路由
  2. 6 位配对码跨设备(含逐位播报的「数字单音」拼接豁免裁定)
  3. 可选认领(命名+PIN+旧档案 LWW 合并)

公网前(03 报告 §6 的 8 条,另计)

4. 待产品拍板

  • D1 首访命名:全静默(自动「玩家一」,事后可改名)vs 首次轻量起名
  • D2 找回底线:仅配对码(旧设备必须在手)vs 配对码 + 名/PIN 兜底(丢设备可救)
  • D3 语音路线:双套资产(推荐,增量灰度、不动已验收资产)vs 通用措辞重录(一套通吃但全量重录)vs 先文字后补