# 平台能力调研汇总 — 无感用户系统 + 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//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 先文字后补