用户系统(B,游戏零改动): - POST /api/device 首访 0 交互静默建档(自动玩家一/二…,per-IP 频控);断网降级纯本地照玩 - 大厅档案切换器(切换=flush 上云→快照回灌→倒灌→服务器回拉,profileId 分桶修同设备串档;aria menu 编号可听) - claim 可选认领(命名+scrypt PIN);旧 users/sessions 单向迁移(PIN 明文即刻哈希,已真实数据验证);login 兼容+claim-merge 桶级 LWW;logout;/server/ 静态封禁 - PUT baseUpdatedAt 守卫(legacy 放行+警告);GET 无参全桶回拉(修 7/8 游戏跨设备只 PUT 不 GET) - web/profiles.js 分桶纯函数 + api-smoke.mjs 7/7(建档/LWW/claim-merge/迁移/频控/封禁/分桶 H1-H4) 键盘双端(A,游戏代码零改动): - gesture.js 键盘通道 +137 行:←↑↓→/WASD=滑动、空格=单击(走 300ms 双击窗与触摸共享虚拟指针)、回车=即时 doubletap、按住空格 ≥450ms=长按;repeat 抑制/表单守卫/方向键 preventDefault - settings.input(auto/touch/key)+ gesture.inputMode();遮罩键盘解锁与文案自适应(按空格开始/轻触开始) - 8 游戏遮罩改用自适应默认文案;大厅设置面板「操作方式」+页脚键位提示 - live control.mjs 键盘注入通道(CDP dispatchKeyEvent);engine-input.test 61 断言 回归:12 套件全绿(8 playtest + guide + engine-voice + engine-input + api-smoke 7/7);8001 服务器已重启加载新 API,/api/device 端到端验证通过 P1 待排:153 句×双性 TTS 键盘语音变体 / 6 位配对码跨设备 / 认领 UI 打磨(research/platform/00-synthesis.md §3)
SoundGame — 纯音频手机游戏
6 款纯音频游戏(HTML5 为主,3 款另有 Android 版):屏幕只有一张封面图,全部操作只有 6 种手势 (上滑 / 下滑 / 左滑 / 右滑 / 单击 / 双击),所有内容靠音频呈现。 对白由本地 Qwen3-TTS 生成(男声/女声双套资产),音效用 Stable Audio 3 + 程序合成, BGM 用 Mureka API 生成 + 程序合成。
HTML5 版(推荐,浏览器即玩)
无需安装 App,手机浏览器打开即玩(Android Chrome / iOS Safari / 鸿蒙 ArkWeb 均支持, 音频提供 ogg + m4a 双格式)。
线上:https://game.xiangsilian.com/(Nginx 静态托管,无用户 API;部署见 docs/deploy.md)。
./web/serve.sh # 启动 Node 服务器(静态 + 用户系统 API,默认端口 8000)
打开后进入游戏大厅。大厅提供:
- 用户系统:用户名 + PIN 注册/登录,游戏进度保存在服务器(
web/server/) - 全局设置:旁白音色(男声/女声)、语速(正常/快/特快)、背景音乐(正常/小/关闭)
- 所有游戏用震动反馈交互(确认/错误/成功/警告各有震型;iOS 不支持震动,静默降级)
6 款游戏:
- 《剑与声》
web/rpg/— 纯音频回合制 RPG(新作):盲剑客题材,节点式场景探索 + 回合制战斗(听前摇音双击格挡)+ 升级/装备/金币 + 服务器存档,第一章完整可玩 - 《声命线》
web/storyline/— 末世互动广播剧:3 幕 8 抉择 4 结局, 左右滑做抉择,单局 5-7 分钟 - 《暗室》
web/escape/— 密室逃脱解谜(已重设计):手把手开场引导 + 卡关分级提示(60s 暗示 / 120s 明示 / 180s 带路),3x3 房间 4 步谜题链 - 《音序回响》
web/simon/— 音频记忆游戏(已重设计):无 BGM 纯交互音, 交互式教学、重听机会机制、轮次整句播报 - 《节拍行者》
web/rhythm/— 跟随领奏节奏游戏(已重构):系统奏一小节节奏型、 玩家跟打复现,手势触发同调性打击乐器音,3 首曲目(90/105/120 BPM)解锁制 + S~C 评级 - 《盲航》
web/space/— 太空盲飞躲避(已重构):同向闪避(左来左滑)、 交互式演练教学、60 秒保护期、单击加速双击护盾
Web 引擎文档见 docs/web-engine-api.md;服务器 API 见 web/server/README.md;
公网部署见 docs/deploy.md;设计文档在 docs/design/;资产管线文档在 docs/audio/。
三款游戏(Android 版,已停止迭代)
注意:Android 版停留在初版,所有重设计/新功能(双音色、设置、震动、用户系统) 只在 HTML5 版。鸿蒙(HarmonyOS NEXT)无法安装 APK,请用 HTML5 版。
1. 《声命线》(storyline) — 末世互动广播剧
大停电后第 30 天,前急救员林晚靠一台旧收音机寻找妹妹,对抗抢掠者"猎狗"。 3 幕、8 个抉择点、4 种结局,单局 5-7 分钟。
- 单击:继续剧情 / 结局后重开
- 双击:重听当前节点
- 左/右滑:关键抉择
- 上滑:帮助 + 当前幕进度
- 下滑:菜单(重新开始)
2. 《声东击西》(reflex) — 听声辨位反应
敌人从四方位来袭:左右 = 立体声声像,上 = 高音琶音,下 = 低音轰击。 教学 → 12 波战斗(节奏递增、BGM 三档变速)→ 结算播报得分。
- 四向滑动:击杀对应方位敌人
- 单击:格挡正面攻击(警报音提示)
- 双击:全屏技能(12 秒冷却)
3. 《暗室》(escape) — 密室逃脱解谜
3x3 黑暗房间网格探索,环境音线索(滴水/风声/机器嗡鸣)烘焙了方位感。 解谜链:钥匙 → 铁柜 → 保险丝 → 电箱 → 最终大门。
- 四向滑动:在房间间移动(撞墙有反馈)
- 单击:检查房间 / 拾取物品
- 双击:使用物品(无目标时播报背包+提示)
构建
source env.d/android.sh # JDK 17 / Android SDK / ffmpeg
./gradlew assembleStorylineDebug assembleReflexDebug assembleEscapeDebug
APK 输出在 app/build/outputs/apk/<flavor>/debug/:
| 游戏 | APK | 包名 | 大小 |
|---|---|---|---|
| 声命线 | app-storyline-debug.apk | com.soundgame.storyline | ~19.6MB |
| 声东击西 | app-reflex-debug.apk | com.soundgame.reflex | ~14.2MB |
| 暗室 | app-escape-debug.apk | com.soundgame.escape | ~15.4MB |
安装:adb install app/build/outputs/apk/storyline/debug/app-storyline-debug.apk
(真机调试优先无线调试:adb pair + adb connect,详见 env.d/android.md)
文档
docs/setup.md— 从零环境搭建手册(WSL2 用户态安装、AI 环境、镜像速查、故障排查)docs/deploy.md— 公网部署(game.xiangsilian.com,Nginx 静态,与简历站共存)docs/architecture.md— 引擎架构(模块划分、音频三层时序、手势参数、已知限制)docs/engine-api.md— 引擎 API(如何开发一款新游戏)docs/asset-pipeline.md— 资产生产流水线(TTS / 音效 / BGM 生成与规格)docs/games/storyline.md— 《声命线》设计文档(剧情树、音色分配)docs/games/reflex.md— 《声东击西》设计文档(波次表、难度曲线)docs/games/escape.md— 《暗室》设计文档(房间地图、谜题链)env.d/— 环境与使用说明(android / tts / sfx)
工程结构
app/src/main/— 共享引擎:GestureEngine(6 手势识别)、 AudioEngine(ExoPlayer BGM/对白分层 + ducking,SoundPool 低延迟音效)、 Game/GameEngine 状态机接口、MainActivity(全屏封面 + TalkBack)app/src/<flavor>/— 各游戏:Game 实现、assets/audio/{bgm,voice,sfx}、 封面图、gen/(音频资产生成脚本,可复现)docs/— 项目文档(见上方"文档"一节)env.d/— 环境与使用说明(android / tts / sfx)tools/、models/— 本机 AI 环境(Qwen3-TTS、Stable Audio 3、ffmpeg)
音频资产再生成
source env.d/tts.sh # HF_HOME、镜像
# 例:重新生成《声命线》全部语音(flock 串行保护 GPU)
flock .gpu.lock .venv-tts/bin/python app/src/storyline/gen/gen_voice.py
待办(需要账号操作)
- Stable Audio 3 音效:环境已就绪(token 已配、模型已下载、CLI 冒烟通过,
见
env.d/sfx.md)。程序合成音效可按docs/asset-pipeline.md逐步升级替换 (同名同目录替换,游戏代码零改动) - Mureka 歌曲/配乐:已完成。《声命线》(dark_drone.ogg) 与《暗室》(drone.ogg)
的 BGM 已用 Mureka instrumental API 生成并无缝循环化处理后替换(生成/调用记录见
tools/mureka_log.md,脚本tools/mureka_gen.py,原合成版备份在tools/bgm_backup/)。《声东击西》的 3 个 BGM 保留程序合成版: 其玩法要求 100/128/152 BPM 三档脉冲随波次精确切换,AI 生成曲目 BPM 不精确会破坏玩法机制 - 真机听测:三款游戏均只验证到构建层面,手感参数(反应窗口、 响度平衡、立体声分离度)需要实机试听调整