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

52 lines
3.3 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.
# 平台能力调研汇总 — 无感用户系统 + PC/手机双端一致
> 三路并行调研的汇总与实施方案建议(2026-09-08)。分报告:[01-identity](01-identity.md) 身份方案 | [02-input-parity](02-input-parity.md) 键盘与双端 | [03-data-sync](03-data-sync.md) 数据架构。
## 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 人日)
6. 153 句键盘措辞 ×2 性别 TTS 双套资产 + 引擎 input 资产路由
7. 6 位配对码跨设备(含逐位播报的「数字单音」拼接豁免裁定)
8. 可选认领(命名+PIN+旧档案 LWW 合并)
### 公网前(03 报告 §6 的 8 条,另计)
## 4. 待产品拍板
- D1 首访命名:全静默(自动「玩家一」,事后可改名)vs 首次轻量起名
- D2 找回底线:仅配对码(旧设备必须在手)vs 配对码 + 名/PIN 兜底(丢设备可救)
- D3 语音路线:双套资产(推荐,增量灰度、不动已验收资产)vs 通用措辞重录(一套通吃但全量重录)vs 先文字后补