From e232e38c91bd6ed49161b317b51953b8f64c69dd Mon Sep 17 00:00:00 2001 From: xsl Date: Thu, 21 May 2026 20:59:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/技术报告_音频资源制作.md | 269 ++++++ docs/游戏策划案.md | 1626 +++++++++++++++++++++++++++++++++ docs/策划案任务拆分.md | 173 ++++ 3 files changed, 2068 insertions(+) create mode 100644 docs/技术报告_音频资源制作.md create mode 100644 docs/游戏策划案.md create mode 100644 docs/策划案任务拆分.md diff --git a/docs/技术报告_音频资源制作.md b/docs/技术报告_音频资源制作.md new file mode 100644 index 0000000..021f295 --- /dev/null +++ b/docs/技术报告_音频资源制作.md @@ -0,0 +1,269 @@ +# 音频资源制作技术落地报告 + +> 调研日期:2026-05-20 +> 最后更新:2026-05-20(新增 Stable Audio 部署完成状态) +> 硬件环境:NVIDIA RTX 5090 (32GB VRAM) / CUDA Driver 12.9 / WSL2 Linux + +--- + +## 一、本机已有能力总览 + +| 能力域 | 工具 | 状态 | 环境 | +|--------|------|------|------| +| TTS 语音合成 | VoxCPM2 | **运行中** (port 8000) | Python 3.13 venv | +| TTS 语音合成 | CosyVoice2-0.5B | 已部署,需手动启动 | conda cosyvoice | +| 音乐/铃声生成 | ACE-Step 1.5 | 已部署,需手动启动 | conda acestep | +| 音效/氛围生成 | ACE-Step 1.5 | 同上 | conda acestep | +| 音效/氛围生成 | **Stable Audio Open 1.0** | **已部署** ✅ | conda stableaudio / torch 2.8.0+cu128 | +| 语音识别 (ASR) | SenseVoice Small | 模型已缓存 | HuggingFace cache | +| 语音识别 (ASR) | Whisper Tiny | 模型已缓存 | HuggingFace cache | +| 轻量 TTS | Kokoro-82M | 模型已缓存 | HuggingFace cache | +| 音频处理 | ffmpeg 7.0.2 | 可用 | 系统 PATH | +| 音频分析 | librosa / soundfile / pydub | 可用 | pip | +| 音视频同步 | MuseTalk / LatentSync | 已部署 | conda 环境 | + +### 当前产出数据 (《林夏》项目) + +| 类型 | 数量 | 生成工具 | +|------|------|----------| +| TTS 对话语音 | 216 条 (mp3/tts/) | VoxCPM2 | +| BGM 背景音乐 | 4 轨 (90s/30s/120s/120s) | ACE-Step 1.5 | +| 角色铃声 | 9 条 | ACE-Step 1.5 | +| 音效 | 18 条 | ACE-Step 1.5 | +| 环境氛围 | 6 条 | ACE-Step 1.5 | +| 总计 MP3 | 372 个文件 | — | + +--- + +## 二、各能力域详细分析 + +### 2.1 TTS 语音合成 + +#### 本机已有 + +| 工具 | 模型大小 | VRAM | 中文质量 | 声音克隆 | 延迟 | 特点 | +|------|---------|------|---------|---------|------|------| +| **VoxCPM2** | 4.7GB | ~6GB | A | 零样本 (5-30s参考音频) | ~1s/句 | FastAPI 服务,REST API,48kHz WAV 输出,带降噪器 | +| **CosyVoice2-0.5B** | 5.3GB | ~8GB | A+ | 零样本 | ~2s/句 | WebUI,多语言,语速可控,阿里开源 | +| **Kokoro-82M** | <200MB | <2GB (可CPU) | B (中文社区扩展) | 不支持 | <0.3s | 超轻量,英文为主,适合实时场景 | +| **Edge-TTS** | 0 (云端) | 0 | B+ | 不支持 | 网络延迟 | 微软在线服务,免费,多音色 | + +**当前主链路**:VoxCPM2 为主 → CosyVoice2 为备 → Edge-TTS 为最终兜底 + +#### 推荐部署到本地 + +| 工具 | Stars | 模型大小 | VRAM | 为什么值得部署 | 部署难度 | +|------|-------|---------|------|--------------|---------| +| **F5-TTS** | 14.5k | ~3GB | 8GB | Flow-matching 架构;零样本克隆质量最高;MIT 开源 | 低 (pip install) | +| **ChatTTS** | 39k | ~2GB | 4GB | 专为对话设计;自然笑声/停顿/语气词;适合互动叙事 | 低 (pip install) | + +**部署优先级建议**: +1. **ChatTTS** — 对话自然度最高,适合即兴/随机对白生成 + +#### 线上服务 + +| 服务 | 中文质量 | 声音克隆 | 延迟 | 价格 | 适用场景 | +|------|---------|---------|------|------|---------| +| **MiniMax Speech 2.8** | S | 支持 (30s参考) | <250ms | 按字符计费 | 实时语音交互、低延迟场景 | +| **豆包 TTS 2.0** (字节) | S | 支持 (Seed-ICL) | ~1s | 火山引擎计费 | 中文情感表达最强,指令控制情绪 | +| **通义 TTS** (阿里) | A+ | 支持 (CosyVoice) | 标准 | 免费试用额度 | 与本机 CosyVoice 生态互通 | +| **ElevenLabs** | A | 专业级 | ~100ms | $5-99/月 | 多语言、API 最成熟、配套 SFX | +| **百度语音合成** | A | 有限 | 标准 | Token 计费 | 最老牌、REST 接入最简单 | + +--- + +### 2.2 音乐制作 + +#### 本机已有 + +| 工具 | 模型大小 | VRAM | 能力 | 当前产出 | +|------|---------|------|------|---------| +| **ACE-Step 1.5** | 9.4GB (60个checkpoint) | ~8GB | 文本→音乐/铃声/氛围;支持歌词+人声;20s 生成 4 分钟音频;seed 可复现 | 4轨 BGM + 9 条铃声 | + +**当前配置**:已针对 RTX 5090 修复 cuBLAS 兼容性 (`cublaslt`),turbo 模式。 + +#### 推荐部署到本地 + +| 工具 | Stars | VRAM | 为什么值得部署 | 适用场景 | +|------|-------|------|--------------|---------| +| **DiffRhythm 2** | 新项目 | ~8GB | 最快:10 秒生成 4:45 歌曲;精确歌词对齐;Latent Diffusion 架构 | 快速迭代 BGM 候选 | +| **YuE (乐)** | Apache 2.0 | 8GB(量化)-80GB(全) | 双 LLaMA 架构;完整歌曲(人声+伴奏同步);最接近 Suno 的开源方案 | 需要完整歌曲(含唱) | +| **MusicGen (Meta)** | CC BY-NC | ~12GB fp16 | 研究级纯器乐生成;立体声输出;Loop 素材可控性强 | 纯器乐 BGM / 素材 | +| **Stable Audio Open 1.5** | 已 clone | ~12GB | 47s 立体声 44.1kHz;SFX 和音乐兼顾;代码已在本机 | 音效与短音乐片段 | + +**部署优先级建议**: +1. **Stable Audio Open 1.5** — 代码已在本机 (`/home/xsl/tools/stable-audio-tools/`),只需下载模型权重 + `pip install`,马上可用 +2. **DiffRhythm 2** — 速度碾压 ACE-Step,适合大量迭代试听 +3. **YuE** — 32GB VRAM 可跑量化版,适合需要有歌词人声的完整歌曲 + +#### 线上服务 + +| 服务 | 人声 | 中文歌词 | 时长 | 价格 | 特点 | +|------|------|---------|------|------|------| +| **Suno v5** | 有 | 支持 | ~4min | 免费 300 首/月 | 品质最高;版权诉讼风险 | +| **Udio** | 有 | 支持 | ~4min | 免费额度 | 与 Suno 竞品;已暂停下载功能 | +| **网易天音** | 有 | 中文原生 | 可变 | 按需 | 国内平台,版权更清晰 | + +--- + +### 2.3 音效生成 + +#### 本机已有 + +| 工具 | 能力 | 当前产出 | +|------|------|---------| +| **ACE-Step 1.5** | 氛围类音效 (>=5s):心跳、呼吸、雨声、敲门、猫叫、水壶、环境氛围等 | 18 条 SFX + 6 条氛围 | +| **ffmpeg** | 后期处理:混音叠加、底噪叠加、格式转换、音量调节 | 全流程 | +| **Web Audio API** (游戏内) | 13 种 UI 短音效:合成叮/咚/滴/滑动音,无需外部文件 | 实时合成 | + +**限制**:ACE-Step 擅长氛围/音乐类音效,不擅长短促精确的 UI 音效(<1s 的 click/beep)。 + +#### 推荐部署到本地 + +| 工具 | VRAM | 为什么值得部署 | 适用场景 | +|------|------|--------------|---------| +| **Stable Audio Open 1.5** | ~12GB | 音效生成品质最高的开源方案;44.1kHz 立体声;47s 时长 | 高品质 Foley、环境音 | +| **AudioLDM 2** | 8-16GB | 全能型(SFX + 音乐 + 语音);48kHz;多种模型尺寸 | 短音效、过渡音 | + +**部署优先级建议**: +1. **Stable Audio Open 1.5** — 同上,已有代码,补模型即可 +2. **AudioLDM 2** — pip 安装,轻量推理,适合补充短促音效 + +#### 线上服务 + +| 服务 | 时长上限 | 价格 | 特点 | +|------|---------|------|------| +| **ElevenLabs SFX v2** | 30s | 免费额度 | 制作级品质,支持循环,版税免费 | +| **Stable Audio 2.5** (API) | 3min | 按量 | 音频修复/inpainting,商业安全 | + +--- + +### 2.4 语音克隆 / 变声 + +#### 本机已有 + +VoxCPM2 和 CosyVoice2 均内置零样本声音克隆。当前《林夏》项目已为 12 个角色建立参考音频库: + +``` +voice/ + linxia/ linxia_ref.wav + mom/ mom_extra_04.wav + azhe/ azhe_extra_05.wav + xiaomei/ ... + zhounan/ delivery/ hr/ anan/ + dorm_a/ dorm_b/ dorm_c/ +``` + +#### 推荐部署到本地 + +| 工具 | Stars | 为什么值得 | 适用场景 | +|------|-------|----------|---------| +| **OpenVoice V2** | 36k | 单条音频秒级克隆;跨语言(克隆英文声 → 输出中文)| 快速原型、临时角色 | +| **RVC v2** | 36k | 实时变声;10 分钟数据可训练;社区模型库庞大 | 歌声转换、直播变声 | +| **Seed-VC** | 新 | 零样本相似度最高;解决音色泄漏问题;支持唱歌 | 高精度声音复刻 | + +**部署优先级**:Seed-VC > OpenVoice V2 + +--- + +### 2.5 语音识别 (ASR) — 辅助能力 + +| 工具 | 状态 | 用途 | +|------|------|------| +| **SenseVoice Small** | 模型已缓存 | 中文 ASR,可用于语音标注、字幕生成 | +| **Whisper Tiny** | 模型已缓存 | 多语言 ASR 兜底 | + +--- + +## 三、推荐部署路线图 + +### ✅ 已完成部署(2026-05-20) + +| 序号 | 工具 | 路径 | 模型 | torch | +|------|------|------|------|-------| +| 1 | **Stable Audio Open 1.0** | `/home/xsl/tools/stable-audio-tools/` | `/home/xsl/models/stable-audio-open/` | 2.8.0+cu128 (stableaudio) | + +**注:全部使用 CUDA 12.8 编译版 torch,支持 RTX 5090 (sm_120)**。 +PyTorch wheel 来源:`https://mirrors.aliyun.com/pytorch-wheels/cu128/` + +#### 启动命令 + +```bash +# Stable Audio Open — Gradio WebUI +conda activate stableaudio +cd /home/xsl/tools/stable-audio-tools +python run_gradio.py \ + --model-config /home/xsl/models/stable-audio-open/model_config.json \ + --ckpt-path /home/xsl/models/stable-audio-open/model.safetensors +``` + +### 下一优先级 — 待部署 + +| 序号 | 工具 | 操作 | 预计耗时 | VRAM | +|------|------|------|---------|------| +| 4 | **ChatTTS** | `pip install ChatTTS` → 下载模型 | 30min | 4GB | + +### 按需部署 + +| 序号 | 工具 | 场景 | +|------|------|------| +| 5 | **DiffRhythm 2** | 需要快速迭代大量 BGM 候选时 | +| 6 | **AudioLDM 2** | 需要精确短音效生成时 | +| 7 | **YuE** | 需要完整中文歌曲(人声+伴奏)时 | +| 8 | **OpenVoice V2** | 需要快速跨语言声音克隆时 | + +--- + +## 四、能力矩阵 + +``` + 本机已有 待部署 线上服务 + ┌───────────────┐ ┌────────────┐ ┌────────────┐ + TTS │ VoxCPM2 │ │ ChatTTS │ │ MiniMax │ + 语音合成 │ CosyVoice2 │ │ F5-TTS │ │ 豆包 TTS │ + │ Kokoro-82M │ │ │ │ ElevenLabs │ + │ │ │ │ │ 通义 TTS │ + └───────────────┘ └────────────┘ └────────────┘ + ┌───────────────┐ ┌────────────┐ ┌────────────┐ + 音乐生成 │ ACE-Step │ │ DiffRhythm │ │ Suno v5 │ + │ │ │ YuE │ │ Udio │ + │ │ │ MusicGen │ │ │ + └───────────────┘ └────────────┘ └────────────┘ + ┌───────────────┐ ┌────────────┐ ┌────────────┐ + 音效生成 │ ACE-Step │ │ AudioLDM 2 │ │ ElevenLabs │ + │ StableAudio ✅│ │ │ │ StableAudio│ + │ Web Audio │ │ │ │ API │ + │ ffmpeg │ │ │ │ │ + └───────────────┘ └────────────┘ └────────────┘ + ┌───────────────┐ ┌────────────┐ ┌────────────┐ + 声音克隆 │ VoxCPM2 │ │ Seed-VC │ │ ElevenLabs │ + │ CosyVoice2 │ │ OpenVoice │ │ MiniMax │ + │ │ │ RVC v2 │ │ 豆包 │ + └───────────────┘ └────────────┘ └────────────┘ + ┌───────────────┐ + ASR │ SenseVoice │ (辅助能力,非生产主线) + 语音识别 │ Whisper │ + └───────────────┘ +``` + +--- + +## 五、VRAM 并行策略 + +RTX 5090 (32GB) 可同时运行的组合: + +| 组合 | 占用 VRAM | 场景 | +|------|----------|------| +| VoxCPM2 (6G) + ACE-Step (8G) | ~14GB | TTS + 音乐同时生产 | +| VoxCPM2 (6G) + Stable Audio (12G) | ~18GB | TTS + 高品质音效 | +| CosyVoice2 (8G) + ChatTTS (4G) | ~12GB | 双 TTS 引擎对比试听 | +| 单独 YuE 量化版 | ~8-24GB | 完整歌曲生成(独占) | + +--- + +## 六、针对《林夏》项目的升级建议 + +| 现状 | 升级方案 | 收益 | +|------|---------|------| +| ACE-Step 生成全部音效 | → Stable Audio Open 1.5 补充精细音效 | 44.1kHz 立体声,电话底噪/UI 音效品质更高 | +| 结局仅语音 + 字幕 | → ACE-Step/DiffRhythm 生成结局专属 BGM | 5 个结局各有独立氛围音乐,沉浸感提升 | diff --git a/docs/游戏策划案.md b/docs/游戏策划案.md new file mode 100644 index 0000000..336113b --- /dev/null +++ b/docs/游戏策划案.md @@ -0,0 +1,1626 @@ +# 《听仙》— 纯听觉仙侠MUD游戏策划案 + +> 版本:v1.1(修订版) +> 日期:2026-05-21 +> 状态:修订策划(解决交互冲突、MVP收窄、技术架构前置、音频队列收敛) + +--- + +## 目录 + +1. [游戏概述与核心设计理念](#一游戏概述与核心设计理念) +2. [世界观与背景设定](#二世界观与背景设定) +3. [交互设计 — 手势映射与UI流转](#三交互设计--手势映射与ui流转) +4. [角色与修炼系统](#四角色与修炼系统) +5. [地图与导航系统](#五地图与导航系统) +6. [音频系统设计](#六音频系统设计) +7. [战斗系统](#七战斗系统) +8. [副本系统](#八副本系统) +9. [任务与剧情系统](#九任务与剧情系统) +10. [经济与物品系统](#十经济与物品系统) +11. [多人社交系统](#十一多人社交系统) +12. [AI游历修士系统](#十二ai游历修士系统) +13. [技术架构概要](#十三技术架构概要) +14. [内容生产管线与版本规划](#十四内容生产管线与版本规划) + +--- + +## 一、游戏概述与核心设计理念 + +### 1.1 游戏定位 + +| 项目 | 说明 | +|------|------| +| 游戏名称 | 《听仙》(暂定) | +| 类型 | 纯听觉多人在线MUD | +| 题材 | 仙侠(修真/修仙) | +| 平台 | HTML5 移动端浏览器 | +| 商业模式 | 纯免费 | +| 目标用户 | 仙侠爱好者、音频内容爱好者、视障玩家、通勤/睡前场景用户 | + +### 1.2 核心体验承诺 + +> **"闭上眼,踏入修仙界。"** + +玩家打开游戏后,屏幕全黑,只通过耳朵感知整个仙侠世界。风声、鸟鸣、市集喧闹、剑气破空——所有信息都通过声音传递。玩家用最简单的手势(滑动、点击)与世界互动,在语音引导下探索、修炼、战斗、结交道友。 + +### 1.3 与传统MUD的异同 + +| 维度 | 传统文字MUD | 《听仙》 | +|------|-----------|---------| +| 信息载体 | 文字描述 | 语音播报 + 音效氛围 | +| 输入方式 | 键盘打字指令 | 6种手势(4滑动+单击+双击) | +| 世界结构 | 房间/节点网络 | 相同,但每个房间有独立声景 | +| 多人交互 | 文字聊天 | 语音播报 + 文字转语音 | +| 战斗 | 文字指令回合制 | 手势选择回合制 | +| 沉浸感来源 | 文字描写的想象力 | 声音营造的空间感 | + +### 1.4 纯音频游戏设计原则 + +1. **单线程信息原则**:同一时刻只有一条关键信息在播报,避免信息重叠导致混乱 +2. **操作即时反馈原则**:每个手势操作必须在 200ms 内给出音效反馈,让玩家确认操作被接收 +3. **上下文明确原则**:玩家在任何时刻都能通过单击获知"我在哪、我在做什么、我能做什么" +4. **渐进披露原则**:信息分层播报,先说关键信息,玩家可通过手势请求更多细节 +5. **容错友好原则**:误操作不会造成不可逆后果,所有危险操作需要确认 +6. **声景区分原则**:不同场景有明显不同的环境音,玩家通过氛围音即可感知位置变化 + +--- + +## 二、世界观与背景设定 + +### 2.1 世界观框架 + +天地初开,灵气充盈万物。有修士悟道炼气,追寻长生。大陆名为**苍玄大陆**,灵气由地脉汇聚而成,随天时流转、星辰变化而生潮汐。修士依灵气修炼,在凡俗与仙道之间求索超脱之路。 + +### 2.2 大陆区域划分 + +苍玄大陆分为五大区域,每区有独特的声景氛围: + +| 区域 | 特征 | 声景主题 | 势力 | +|------|------|---------|------| +| **青云山脉**(中部) | 灵气最浓、仙门云集 | 清风松涛、鹤鸣钟声 | 青云宗(正道之首) | +| **赤炎荒原**(西部) | 火山遍布、矿脉丰富 | 岩浆翻涌、热风呼啸 | 炎狱门(炼器圣地) | +| **幽冥沼泽**(北部) | 瘴气弥漫、凶兽横行 | 虫鸣蛙叫、水泡翻涌、低沉呜咽 | 万魂殿(邪修巢穴) | +| **沧澜海域**(东部) | 岛屿星罗、海族出没 | 波涛潮汐、海风海鸥 | 碧波宫(海族) | +| **落星平原**(南部) | 凡人王朝、贸易中心 | 市集喧嚣、车马人声 | 大周皇朝(凡俗) | + +### 2.3 主要势力 + +#### 正道三宗 +- **青云宗**:以剑修闻名,讲究心正剑直。位于青云山主峰。 +- **天机阁**:炼丹制符,精通阵法。隐于青云山脉东麓。 +- **太虚观**:清修悟道,擅长推演天机。独占浮云峰。 + +#### 邪道两殿 +- **万魂殿**:以魂修邪术闻名,盘踞幽冥沼泽深处。 +- **血煞宗**:修炼血道功法,行事凶残,藏于赤炎荒原地下。 + +#### 中立势力 +- **碧波宫**:海族修士,不参与陆上纷争,偶尔与凡人交易。 +- **散修联盟**:无门派归属的修士自发组织,分布在落星平原各城。 + +### 2.4 世界运行规则 + +#### 昼夜系统 +- 一个游戏日 = 现实 2 小时(白天 80 分钟,夜晚 40 分钟) +- 白天:鸟鸣虫叫、NPC活动正常、某些怪物隐匿 +- 夜晚:氛围音变暗沉、夜行妖兽出没、某些秘境入口开启 +- 过渡时段有专门的音效提示(鸡鸣破晓、暮鼓晚钟) + +#### 天气系统 +- 晴、雨、雾、雷暴、灵气风暴(随机) +- 每种天气有独立的环境音循环 +- 天气影响部分功法效果(如水系功法在雨天加成) + +#### 灵气潮汐 +- 每个游戏日有 2 次灵气涨潮(约 10 分钟) +- 潮汐期间修炼经验加倍,同时有小概率触发秘境事件 +- 潮汐来临时有特殊音效预警(空气嗡鸣渐强) + +### 2.5 时间线与历史大事件 + +| 时间(大陆历) | 事件 | 影响 | +|--------------|------|------| +| 万年前 | 上古仙人飞升,留下遗迹 | 各地秘境的来源 | +| 三千年前 | 魔劫爆发,正邪大战 | 五大区域格局形成 | +| 五百年前 | 灵气衰退潮开始 | 修炼难度逐渐增大 | +| 当代 | 灵气异动,上古秘境重现 | 游戏主线的起点 | + +--- + +## 三、交互设计 — 手势映射与UI流转 + +### 3.1 六种手势定义 + +| 手势 | 操作方式 | 音效反馈 | +|------|---------|---------| +| **上滑** | 手指从下向上滑动 | 清脆升调"叮"音 | +| **下滑** | 手指从上向下滑动 | 低沉降调"咚"音 | +| **左滑** | 手指从右向左滑动 | 短促左向划过音 | +| **右滑** | 手指从左向右滑动 | 短促右向划过音 | +| **单击** | 轻点屏幕一次 | 轻柔"滴"音 | +| **双击** | 快速点击屏幕两次 | 明快双音"滴滴" | + +### 3.2 游戏状态机 + +游戏分为以下几个主要状态,每个状态下手势的功能不同: + +``` + ┌──────────┐ + │ 登录态 │ + └────┬─────┘ + │ 登录成功 + ┌────▼─────┐ + ┌─────│ 探索态 │─────┐ + │ └────┬─────┘ │ + 遇敌/切磋 │下滑=菜单 双击NPC=对话 + │ ┌────▼─────┐ │ + ┌────▼───┐ │ 菜单态 │ ┌──▼───┐ + │ 战斗态 │ └──────────┘ │对话态 │ + └────────┘ └──────┘ +``` + +> **设计决策**:探索态中,**单击**始终是"查看当前状态"(不切换状态),**下滑**进入菜单。这确保单击在所有状态下含义一致——"告诉我现在的情况",不产生歧义。 + +### 3.3 各状态下的手势映射 + +#### 探索态(默认状态) + +玩家在世界中移动、探索时的主要状态。 + +| 手势 | 功能 | 语音反馈示例 | +|------|------|------------| +| 上滑 | 前进(沿当前选中出口移动到下一个房间) | "你沿着山间小道向北走去……(新房间描述)" | +| 下滑 | 打开菜单(进入菜单态) | 菜单打开音效 + "菜单。角色信息。" | +| 左滑 | 切换焦点-左(在出口/NPC/物品/玩家之间向左循环) | "西面——山崖小径" 或 "张道长" | +| 右滑 | 切换焦点-右(在出口/NPC/物品/玩家之间向右循环) | "东面——密林深处" 或 "铁匠陈师傅" | +| 单击 | 查看当前状态(播报位置、焦点详情,**不切换状态**) | "你在青云山·山门前。当前焦点:北面-登山石阶。附近有NPC张道长。" | +| 双击 | 与焦点实体互动(NPC→对话、物品→拾取、玩家→互动菜单) | "张道长:'少侠,可有兴趣听老夫讲讲这青云山的来历?'" | + +> **职责分离**:**上滑专管移动**,**双击专管互动**,二者不重叠。焦点为出口时双击播放该出口的详细描述(而非移动),要移动必须上滑。这避免了纯听觉用户误把出口当NPC互动却意外移动的问题。 +> +> **焦点系统**:左右滑动在当前房间的所有可交互对象(出口、NPC、物品、玩家)之间循环切换。进入房间时默认焦点为第一个出口。MUD中没有固有的"后退"概念,玩家通过切换到反向出口再上滑即可返回。 + +#### 战斗态 + +进入战斗后,手势切换为战斗操作。 + +| 手势 | 功能 | 语音反馈示例 | +|------|------|------------| +| 上滑 | 切换技能(向上翻页,切换到上一个技能) | "御剑术" | +| 下滑 | 切换技能(向下翻页,切换到下一个技能) | "火球术" | +| 左滑 | 切换目标(多个敌人时切换上一个) | "目标——赤焰蟒" | +| 右滑 | 切换目标(多个敌人时切换下一个) | "目标——妖狐" | +| 单击 | 查看当前战斗状态 | "第三回合。你:气血82%,灵力65%。敌方:赤焰蟒,气血40%。当前技能:御剑术。" | +| 双击 | 确认出招 / 使用当前技能攻击当前目标 | "你催动御剑术!剑光一闪——(命中音效)——赤焰蟒受到128点伤害!" | + +#### 菜单态 + +从探索态下滑进入,提供角色管理功能。 + +| 手势 | 功能 | 语音反馈示例 | +|------|------|------------| +| 上滑 | 上一个菜单项 | "角色信息" | +| 下滑 | 下一个菜单项 | "背包" | +| 左滑 | 返回上一级 / 退出菜单 | (退出音效,回到探索态) | +| 右滑 | 无操作或子菜单展开 | — | +| 单击 | 播报当前菜单项详情 | "背包:共有15件物品" | +| 双击 | 确认进入 / 执行当前菜单项 | "进入背包。第一件:回灵丹×3……" | + +菜单项列表: +1. 角色信息(属性、境界、经验) +2. 背包(物品管理) +3. 功法(已学技能) +4. 装备(穿戴管理) +5. 任务(当前任务列表) +6. 社交(好友、门派、附近玩家) +7. 系统(设置、退出) + +#### 对话态 + +与NPC或其他玩家对话时。 + +| 手势 | 功能 | 语音反馈示例 | +|------|------|------------| +| 上滑 | 上一个对话选项 | "选项一:请教修炼之法" | +| 下滑 | 下一个对话选项 | "选项二:询问附近情况" | +| 左滑 | 结束对话,返回探索态 | "你向张道长告辞。" | +| 右滑 | 重听当前NPC说的话 | (重播NPC最后一段语音) | +| 单击 | 播报当前选项内容 | "选项一:请教修炼之法" | +| 双击 | 选择当前对话选项 | (NPC回应语音) | + +#### 背包/物品操作态 + +管理物品时的手势。 + +| 手势 | 功能 | 语音反馈示例 | +|------|------|------------| +| 上滑 | 上一个物品 | "回灵丹,数量3" | +| 下滑 | 下一个物品 | "铁剑,已装备" | +| 左滑 | 返回上一级 | (返回音效) | +| 右滑 | 物品操作子菜单 | "可用操作:使用、丢弃、查看详情" | +| 单击 | 查看物品详细信息 | "回灵丹:恢复50点灵力。品质:普通。描述:以灵草炼制的入门丹药。" | +| 双击 | 使用/装备当前物品 | "你服下回灵丹。灵力恢复50点,当前灵力:115/200。" | + +### 3.4 状态切换规则 + +| 触发条件 | 从 | 到 | 音效提示 | +|---------|----|----|---------| +| 探索态中下滑 | 探索态 | 菜单态 | 菜单打开音效 | +| 菜单态中左滑 | 菜单态 | 探索态 | 菜单关闭音效 | +| 焦点为NPC时双击 | 探索态 | 对话态 | 对话开始音效 | +| 对话中左滑 | 对话态 | 探索态 | 对话结束音效 | +| 遭遇敌人 | 探索态 | 战斗态 | 战斗警戒音效(剑鸣+鼓点) | +| 战斗结束 | 战斗态 | 探索态 | 胜利/失败音效 | +| 菜单进入背包 | 菜单态 | 背包态 | 背包打开音效 | + +### 3.5 操作容错机制 + +1. **防误触**:战斗中的逃跑、丢弃贵重物品等操作需要双击确认后再次双击 +2. **状态播报**:任何状态下**单击**都可查看当前完整状态(这是单击在所有状态下的统一语义) +3. **超时回退**:菜单态/对话态超过60秒无操作,自动返回探索态并语音提示 +4. **严格6手势**:不引入长按、三击等额外手势,避免增加学习成本和误触概率 + +> **注意**:操作缓冲和打断规则见第六章"音频播报状态机",此处不重复定义。 + +--- + +## 四、角色与修炼系统 + +### 4.1 角色创建流程 + +新玩家进入游戏后,通过纯语音引导完成角色创建: + +``` +1. 语音:"欢迎来到苍玄大陆。请为自己取一个道号。" + → 跳转到文字输入界面(唯一需要键盘的环节) + → 输入完成后语音播报确认:"道号——[玩家名],可对否?双击确认,左滑重新输入。" + +2. 语音:"请选择你的灵根属性。上滑下滑切换,双击确认。" + → 金灵根(物理攻击见长) + → 木灵根(治疗回复见长) + → 水灵根(控制防御见长) + → 火灵根(法术伤害见长) + → 土灵根(生存续航见长) + → 每个选项播报时附带属性说明和代表性音效 + +3. 语音:"选择你的出身。" + → 青云弟子(正道,剑修路线) + → 散修游侠(自由,百家路线) + → 落星平民(凡人起步,大器晚成) + → 每个出身决定初始出生点和开局剧情 + +4. 创建完成,播放出生动画音频(30秒左右的专属出生叙事) +``` + +### 4.2 基础属性体系 + +| 属性 | 说明 | 影响 | +|------|------|------| +| **根骨** | 身体资质 | 气血上限、物理防御 | +| **悟性** | 领悟能力 | 技能学习速度、暴击率 | +| **灵力** | 灵气亲和力 | 灵力上限、法术伤害 | +| **神识** | 精神力量 | 探测范围、控制抗性 | +| **机缘** | 运气 | 物品掉落品质、奇遇触发概率 | + +基础属性由灵根和出身决定初始值,后续通过修炼、装备、丹药提升。 + +### 4.3 修炼境界体系 + +``` +凡人 → 练气期(1-9层)→ 筑基期(初/中/后)→ 金丹期(初/中/后) + → 元婴期(初/中/后)→ 化神期(初/中/后)→ 大乘期 → 渡劫飞升 +``` + +| 境界 | 练气期 | 筑基期 | 金丹期 | 元婴期 | 化神期 | 大乘期 | +|------|--------|--------|--------|--------|--------|--------| +| 等级范围 | 1-9 | 10-18 | 19-27 | 28-36 | 37-45 | 46-50 | +| 突破方式 | 自动 | 需打坐突破 | 需天材地宝 | 需渡心魔劫 | 需渡天劫 | 终极试炼 | +| 新增能力 | 基础功法 | 御剑飞行 | 领域技能 | 分身术 | 天地法相 | 仙术 | + +#### 突破机制 +- 每个大境界突破需要满足条件(经验值+特殊物品/事件) +- 突破是一个互动音频事件(进入**突破态**): + - 播放修炼氛围音 + - 语音引导玩家"凝神静气,双击开始突破"(**双击**确认开始) + - 单击可查看当前突破进度/状态(保持单击统一语义) + - 突破过程中随机出现干扰(需要在音效提示后及时**双击**化解) + - 成功/失败有不同的音频叙事 + - 失败不掉级,但需等待冷却时间后重试 + +### 4.4 功法与技能体系 + +#### 功法分类 + +| 类型 | 说明 | 示例 | +|------|------|------| +| **攻击功法** | 造成伤害 | 御剑术、火球术、冰锥术 | +| **防御功法** | 减伤/格挡 | 金钟罩、水幕天障 | +| **辅助功法** | 增益/回复 | 回春术、聚灵阵 | +| **控制功法** | 限制敌人 | 定身术、缚灵索 | +| **身法** | 闪避/移动 | 踏云步、瞬移术 | + +#### 技能获取途径 +1. **出身自带**:根据灵根和出身获得1-2个初始技能 +2. **门派传授**:完成门派任务后由师父NPC传授 +3. **秘境获取**:探索秘境发现功法残卷 +4. **玩家交易**:部分功法秘籍可交易 +5. **自悟**:特定条件下触发"顿悟"事件(稀有奇遇) + +#### 技能升级 +- 技能通过反复使用获得熟练度 +- 熟练度满后可"领悟"下一层级 +- 最高10层,每3层有质变效果(音效/威力都会变化) + +### 4.5 修炼(挂机)系统 + +玩家可在特定地点(灵脉处、门派修炼室等)进入"打坐修炼"状态: + +- 双击开始修炼,播放修炼环境音(舒缓的修炼BGM) +- 修炼期间自动获得经验值,速率由地点灵气浓度决定 +- 灵气潮汐期间修炼经验翻倍(会有音效提示) +- 被其他玩家攻击/周围发生事件时会被打断,有警告音效 + +#### 离线/后台修炼(服务端结算) + +> **移动浏览器限制**:移动端浏览器在后台会暂停 JavaScript 计时器、WebSocket 连接和音频播放。因此修炼收益**不依赖客户端持续运行**。 + +- 玩家开始修炼时,服务端记录 `{start_time, room_id, cultivation_rate}` +- 玩家离线/切换应用/关闭屏幕后,服务端按时间差计算离线收益 +- 下次上线时,服务端一次性结算离线期间的经验并语音播报: + - "你打坐修炼了3小时42分,获得经验1860点。当前等级:练气四层。" +- 离线修炼收益 = 在线修炼收益 × 0.5(鼓励在线但不惩罚离线) +- 离线修炼有上限(最多8小时有效),超出部分不计算 + +--- + +## 五、地图与导航系统 + +### 5.1 地图数据结构 + +采用经典MUD的**房间-连接**模型: + +``` +世界 = {房间节点} + {连接边} + +房间节点 = { + id: 唯一标识, + name: "青云山·山门前", + description: "你站在青云山的山门前,两座石狮子威严矗立。前方石阶蜿蜒上山,背后是下山的土路。", + area: "青云山脉", + exits: { north: room_id, south: room_id, ... }, + ambient: "qingyun_gate.ogg", // 环境氛围音 + npcs: [...], // 驻留NPC列表 + items: [...], // 地面物品 + events: [...], // 可触发事件 + pvp_allowed: false, // 是否允许PvP + level_range: [1, 10], // 推荐等级范围 +} +``` + +### 5.2 区域设计 + +#### 新手区域:落星平原·清风镇 + +玩家出身为"落星平民"时的起始区域。等级 1-5。 + +``` + ┌──────────┐ + │ 镇北郊外 │ ← 通往野外(等级5+) + └────┬─────┘ + ┌────▼─────┐ + ┌───────│ 镇中广场 │───────┐ + │ └────┬─────┘ │ + ┌────▼───┐ ┌───▼────┐ ┌───▼────┐ + │ 铁匠铺 │ │ 药材店 │ │ 客栈 │ + └────────┘ └────────┘ └───┬────┘ + ┌───▼────┐ + │客栈二楼 │ ← 休息/修炼 + └────────┘ + ┌────────┐ + │ 镇南码头 │ ← 通往沧澜海域(等级20+) + └────────┘ +``` + +每个房间详细设计: + +| 房间 | 环境音 | NPC | 功能 | +|------|-------|-----|------| +| 镇中广场 | 人声嘈杂、商贩吆喝 | 镇长赵伯、告示牌 | 任务集散、公告 | +| 铁匠铺 | 打铁声、炉火轰鸣 | 铁匠陈师傅 | 装备购买/修理 | +| 药材店 | 研磨声、药香描述 | 药师李婆婆 | 丹药/材料交易 | +| 客栈 | 说书声、杯碟碰撞 | 掌柜、说书人 | 休息、听故事(获取线索) | +| 客栈二楼 | 安静、偶尔鸟鸣 | 无 | 打坐修炼(安全区) | +| 镇北郊外 | 风声、草虫鸣叫 | 巡逻卫兵(偶尔) | 野外入口、低级怪物 | +| 镇南码头 | 水波拍岸、渔船吱呀 | 船夫老周 | 传送至其他区域 | + +#### 主要区域概览 + +| 区域 | 等级 | 房间数(MVP) | 核心声景 | +|------|------|-------------|---------| +| 清风镇(新手) | 1-5 | 8-10 | 市井生活 | +| 青云山外围 | 5-10 | 12-15 | 山林清幽 | +| 青云宗山门内 | 10-15 | 10-12 | 仙门庄严 | +| 落星平原野外 | 5-15 | 15-20 | 荒野旷远 | +| 赤炎荒原入口 | 15-20 | 8-10 | 灼热干燥 | +| 幽冥沼泽边缘 | 20-25 | 8-10 | 阴森潮湿 | +| 沧澜海域码头 | 15-25 | 6-8 | 海浪风声 | +| 各势力总坛 | 15-30 | 10-15(每个) | 各有特色 | +| 秘境(副本入口区) | 随等级 | 5-8(每个) | 神秘空灵 | + +### 5.3 导航语音播报方案 + +#### 进入新房间时的播报顺序 + +``` +1. 移动音效(脚步声/飞行声,0.5秒) +2. 环境音渐变(旧房间环境音淡出,新房间环境音淡入,1秒过渡) +3. 房间名称播报:"青云山·山门前" +4. 简短描述播报:"山门巍峨,两侧石狮威严。" +5. 出口提示:"可往北上山,或向南下山。" +6. 特殊提示(如有NPC/物品/玩家):"张道长站在山门旁。附近有两名修士。" +``` + +#### 单击查看详情的播报 + +``` +1. 当前位置:"你在青云山·山门前。" +2. 详细环境描述 +3. 所有出口 +4. NPC列表 +5. 地面物品 +6. 附近玩家 +7. 当前天气/时辰 +``` + +#### 切换出口的播报 + +左滑/右滑在可用出口间循环切换: +``` +右滑 → "北面——登山石阶" +右滑 → "南面——下山土路" +右滑 → "北面——登山石阶"(循环) +上滑 → 沿当前选中方向移动 +``` + +### 5.4 随机事件系统 + +玩家在探索过程中有概率触发随机事件: + +| 事件类型 | 触发条件 | 示例 | +|---------|---------|------| +| 奇遇 | 低概率随机 | "你发现路边一块异常的石头在微微发光……" | +| 伏击 | 进入高危区域 | "前方灌木丛中传来异响!小心——"(进入战斗) | +| 遭遇NPC | 随机生成 | "一位云游道人挡住了你的去路。" | +| 天象异变 | 定时全服 | "天空突然暗了下来,灵气剧烈波动——灵气潮汐来了!" | +| 物品发现 | 机缘属性相关 | "你的脚踢到了什么东西——一个落满灰尘的储物袋。" | + +--- + +## 六、音频系统设计 + +### 6.1 音频分层架构 + +游戏音频分为四个独立的混音层,可以同时播放: + +``` +┌─────────────────────────────────────────────┐ +│ 混音输出 │ +├──────────┬──────────┬──────────┬─────────────┤ +│ BGM 层 │ 氛围层 │ 音效层 │ 语音层 │ +│ (循环) │ (循环) │ (单次) │ (队列) │ +│ 音量:30% │ 音量:40% │ 音量:80% │ 音量:100% │ +├──────────┼──────────┼──────────┼─────────────┤ +│区域BGM │环境声 │操作反馈 │NPC对白 │ +│战斗BGM │天气声 │战斗音效 │系统播报 │ +│修炼BGM │昼夜声 │UI音效 │物品/状态描述 │ +└──────────┴──────────┴──────────┴─────────────┘ +``` + +#### 层级规则 +- **BGM层**:每个区域/状态一首BGM,进出时交叉淡入淡出(2秒) +- **氛围层**:环境声循环播放,可叠加天气音效 +- **音效层**:即时触发,可并行播放最多3个音效 +- **语音层**:**优先级队列**播放,具体规则见下方"音频播报状态机" + +### 6.2 语音播报规范 + +#### 音频播报状态机 + +这是纯音频游戏的**核心系统**,必须行为明确。 + +``` +语音层状态机: + + ┌─────────┐ 新消息入队 ┌─────────┐ 播完当前 ┌─────────┐ + │ 空闲 │ ──────────→ │ 播放中 │ ─────────→│ 取下一条 │ + └─────────┘ └────┬────┘ └────┬────┘ + ▲ │ │ + │ P0消息到达 队列空? + │ ▼ 是↙ ↘否 + │ ┌─────────┐ 回空闲 播放下一条 + └──────────────────│ 打断播放 │ + └─────────┘ +``` + +#### 播报优先级定义 + +| 优先级 | 类型 | 示例 | 被什么打断 | +|--------|------|------|-----------| +| P0-紧急 | 战斗致命警告 | "小心!敌人发动了致命一击!" | 不可被打断 | +| P1-重要 | 战斗结算、状态突变 | "你受到了87点伤害" | 仅被P0打断 | +| P2-常规 | 移动描述、NPC对话 | "你来到了药材店" | 被P0/P1打断 | +| P3-补充 | 风味文本、详细描述 | "店里弥漫着淡淡的药草香气" | 被P0/P1/P2打断,也可被玩家操作打断 | + +#### 队列规则(完整定义,无歧义) + +**入队规则:** +1. P0 消息:**立即打断**当前正在播放的任何消息,插到队首 +2. P1 消息:插到队列中所有 P2/P3 消息之前(不打断当前播放) +3. P2 消息:按到达顺序排到队尾 +4. P3 消息:按到达顺序排到队尾 + +**队列溢出:** +- 队列上限 5 条。超出时,从队尾开始丢弃最低优先级的消息 +- 被丢弃的 P3 消息不做任何提示(风味文本丢失无影响) + +**玩家操作与播报的关系:** +- **音效层**(操作反馈音):手势触发后 **立即播放**,不进队列,不受语音层影响 +- **浏览类操作**(单击查看、上下滑切换技能/目标):在语音播报过程中 **立即生效**,对应音效立即播放 +- **单击**(查看状态):打断当前 P3 播报,不打断 P0/P1/P2;状态播报以 P2 优先级插入队列 +- **确认类操作**(双击出招/使用/购买等不可逆操作):受**操作窗口**约束(见下方) +- 新的操作产生的语音播报按正常优先级入队 + +**操作窗口(防误确认机制):** + +> 核心问题:语音播报还没说完时,游戏状态可能已经更新(如敌方回合结算完毕、技能/目标已变化)。如果玩家此时双击,可能确认的是过时的技能或目标。 + +- 每次游戏状态变化(进入新回合、目标变化、可选项变化)时,服务端下发一个 `state_version` 编号 +- 客户端记录玩家最后一次**浏览过的** `state_version`(通过单击查看或上下滑动切换时更新) +- **双击确认时**:如果玩家浏览过的版本 = 当前版本,立即执行;如果版本不一致(说明状态已变但玩家还没听到),则播放提示音 + 短语"状态已更新",不执行操作,等玩家重新浏览后再确认 +- 简单来说:**你听到了最新状态,才能确认操作;没听到就不能盲按** + +``` +示例: + 服务端:敌方回合结束,进入玩家回合 (state_version=7) + 语音队列:正在播报"赤焰蟒对你造成89点伤害..."(版本6的结算) + 玩家此时双击 → 检查:玩家最后浏览版本=6,当前版本=7 → 不一致 + → 播放提示音 + "状态已更新" → 不出招 + 玩家单击(查看状态)→ 更新浏览版本=7 → 播报"你的回合,当前技能:御剑术" + 玩家再双击 → 版本一致 → 出招生效 +``` + +> **核心原则**:音效反馈永远即时(保证操作手感),语音播报按优先级排队(保证信息不混乱),浏览操作不阻塞(随时可查看/切换),确认操作需状态同步(防止误操作)。 + +#### 语音拼装方案 + +语音采用**预生成片段 + 动态拼接**的方式: + +``` +模板:"你对{target}使用了{skill},造成{damage}点{type}伤害。" + +预生成片段: + - "你对" (通用前缀) + - "{target}" (怪物/玩家名,按需生成) + - "使用了" (通用连接) + - "{skill}" (技能名,预生成全部技能名) + - "造成" (通用连接) + - "{damage}" (数字,预生成常用数字0-9999) + - "点" (通用) + - "{type}" (伤害类型:物理/火焰/冰霜/雷电/毒) + - "伤害" (通用后缀) + +拼接规则: + 1. 按模板顺序拼接音频片段 + 2. 片段间插入 50ms 静音过渡 + 3. 统一归一化音量 + 4. 缓存已拼装的完整音频(LRU缓存) +``` + +#### 需预生成的语音库 + +| 类别 | 数量估算 | 生成工具 | +|------|---------|---------| +| 数字(零到九千九百九十九) | ~40 个基础数字片段 | VoxCPM2 | +| 通用连接词 | ~50 个 | VoxCPM2 | +| 技能名称 | ~60 个 | VoxCPM2 | +| 物品名称 | ~200 个 | VoxCPM2 | +| 怪物名称 | ~80 个 | VoxCPM2 | +| NPC名称 | ~30 个 | VoxCPM2 | +| 房间描述 | ~150 段 | VoxCPM2 | +| NPC对话 | ~500 段 | VoxCPM2(不同NPC用不同参考音色) | +| 系统提示语 | ~100 段 | VoxCPM2 | +| 主线剧情旁白 | ~200 段 | VoxCPM2 | + +#### 动态生成触发条件 +- 新玩家注册时:生成该玩家名的语音片段(调用 VoxCPM2 API) +- 玩家自定义内容:公会名、自定义喊话等 +- 生成后永久缓存,避免重复生成 + +### 6.3 音效设计清单 + +#### 操作反馈音效(Web Audio API 实时合成) + +| 音效 | 描述 | 触发条件 | +|------|------|---------| +| 上滑确认 | 升调叮音 | 上滑操作 | +| 下滑确认 | 降调咚音 | 下滑操作 | +| 左滑确认 | 左划过音 | 左滑操作 | +| 右滑确认 | 右划过音 | 右滑操作 | +| 单击确认 | 轻滴音 | 单击操作 | +| 双击确认 | 双滴音 | 双击操作 | +| 操作无效 | 低沉嗡音 | 无效操作 | +| 菜单打开 | 翻书音 | 进入菜单 | +| 菜单关闭 | 合书音 | 退出菜单 | +| 列表切换 | 轻微刻度音 | 菜单项翻页 | +| 确认执行 | 清脆确认音 | 双击确认操作 | +| 错误提示 | 不和谐短音 | 操作失败 | +| 获得物品 | 叮铃收纳音 | 拾取物品 | + +#### 战斗音效(预生成,ACE-Step / Stable Audio) + +| 音效 | 描述 | 时长 | +|------|------|------| +| 剑击 | 金属碰撞+剑气破空 | 0.5-1s | +| 拳击 | 沉闷肉体打击 | 0.3-0.5s | +| 火球 | 火焰呼啸+爆炸 | 1-1.5s | +| 冰锥 | 冰晶凝聚+碎裂 | 0.8-1s | +| 雷击 | 电弧+雷鸣 | 1-1.5s | +| 治愈 | 温暖光芒+叮铃 | 1-1.5s | +| 防御/格挡 | 金属盾击 | 0.3-0.5s | +| 闪避 | 快速位移风声 | 0.3s | +| 暴击 | 强化攻击音+震击 | 1s | +| 未命中 | 空气划过 | 0.3s | +| 中毒 | 冒泡腐蚀 | 0.5s | +| 战斗开始 | 剑鸣+鼓点 | 2s | +| 战斗胜利 | 胜利号角+灵光音 | 3s | +| 战斗失败 | 低沉悲鸣 | 2s | +| 怪物咆哮 | 各种怪物叫声 | 1-2s(每种怪物不同) | + +#### 环境/氛围音效(预生成,ACE-Step / Stable Audio) + +| 音效 | 描述 | 循环 | 时长 | +|------|------|------|------| +| 山林清风 | 松风+鸟鸣+溪流 | 是 | 30s | +| 市集喧嚣 | 人声+吆喝+脚步 | 是 | 30s | +| 幽暗洞穴 | 水滴+回声+远处兽吼 | 是 | 30s | +| 沼泽瘴气 | 冒泡+蛙鸣+虫鸣 | 是 | 30s | +| 海岸波涛 | 海浪+海风+海鸥 | 是 | 30s | +| 火山灼热 | 岩浆翻涌+热风 | 是 | 30s | +| 仙门庄严 | 钟声+仙乐+鹤鸣 | 是 | 30s | +| 夜晚静谧 | 虫鸣+夜风+猫头鹰 | 是 | 30s | +| 雨天 | 雨声+雷声(远) | 是 | 30s | +| 雷暴 | 暴雨+近雷+强风 | 是 | 30s | +| 灵气潮汐 | 空气嗡鸣+能量涌动 | 是 | 30s | +| 修炼冥想 | 低频嗡鸣+心跳+呼吸 | 是 | 60s | + +### 6.4 BGM设计清单 + +| BGM名称 | 场景 | 风格 | 时长 | 循环 | +|---------|------|------|------|------| +| 苍玄主题 | 登录/主菜单 | 大气磅礴、古筝开篇 | 120s | 是 | +| 市井烟火 | 城镇区域 | 轻快、笛子为主 | 90s | 是 | +| 山林问道 | 野外探索 | 空灵、古琴为主 | 90s | 是 | +| 仙门晨钟 | 正道门派 | 庄严、钟磬为主 | 90s | 是 | +| 暗流涌动 | 邪道区域 | 阴沉、低音弦乐 | 90s | 是 | +| 碧波万顷 | 海域区域 | 悠扬、洞箫为主 | 90s | 是 | +| 烈焰熔炉 | 赤炎区域 | 激烈、打击乐为主 | 90s | 是 | +| 短兵相接 | 普通战斗 | 紧张、鼓点驱动 | 60s | 是 | +| 强敌来袭 | Boss战斗 | 激昂、管弦齐奏 | 90s | 是 | +| 生死对决 | PvP战斗 | 急促、琵琶扫弦 | 60s | 是 | +| 灵台清明 | 修炼/打坐 | 极简、空灵、低频 | 120s | 是 | +| 突破天堑 | 境界突破 | 渐进激昂、以爆发收尾 | 60s | 否 | +| 胜利凯旋 | 战斗胜利 | 明快、短旋律 | 15s | 否 | +| 故事讲述 | 剧情对话 | 舒缓、叙事感 | 90s | 是 | + +--- + +## 七、战斗系统 + +### 7.1 回合制战斗流程 + +``` +战斗开始 + │ + ▼ +┌─────────────────────────┐ +│ 回合开始(播报回合数+双方状态摘要)│ +└────────────┬────────────┘ + ▼ +┌─────────────────────────┐ +│ 玩家行动阶段 │ +│ 上/下滑 = 切换技能 │ +│ 左/右滑 = 切换目标 │ +│ 单击 = 查看详细状态 │ +│ 双击 = 确认出招 │ +│ (10秒未操作 = 自动普攻) │ +└────────────┬────────────┘ + ▼ +┌─────────────────────────┐ +│ 行动结算 │ +│ 播报:技能名 → 命中判定 │ +│ → 伤害数值 → 目标状态 │ +└────────────┬────────────┘ + ▼ +┌─────────────────────────┐ +│ 敌方行动 │ +│ 播报:敌人使用XX技能 │ +│ → 命中/闪避判定 │ +│ → 伤害/效果 │ +└────────────┬────────────┘ + ▼ +┌─────────────────────────┐ +│ 回合结算 │ +│ 持续效果结算(中毒、灼烧等)│ +│ 状态摘要播报 │ +│ 判定胜负 │ +└────────────┬────────────┘ + ▼ + 胜负已分? + / \ + 是 否 → 返回回合开始 + │ + ▼ + 结算播报(经验、掉落物品) +``` + +### 7.2 战斗音频流示例 + +以一个完整回合为例: + +``` +[BGM: 短兵相接 持续播放] + +语音:"第二回合。" +(0.5秒间隔) +语音:"你的回合。当前技能:御剑术。目标:赤焰蟒。" + +--- 玩家操作阶段 --- +玩家下滑 → 音效:降调咚 → 语音:"火球术" +玩家双击 → 音效:双击确认 → + +--- 行动结算 --- +音效:火焰呼啸 +语音:"你施展火球术!" +音效:爆炸 +语音:"命中赤焰蟒,造成156点火焰伤害!" +(0.3秒) +语音:"赤焰蟒气血降至23%。" + +--- 敌方行动 --- +音效:怪物咆哮 +语音:"赤焰蟒发动尾扫!" +音效:风声+打击 +语音:"你受到89点伤害。气血降至71%。" + +--- 回合结算 --- +(0.5秒) +语音:"回合结束。你:气血71%,灵力45%。" +``` + +### 7.3 战斗数值公式 + +#### 伤害计算 +``` +基础伤害 = 技能系数 × (攻击力 - 目标防御力 × 0.5) +最终伤害 = 基础伤害 × 属性克制系数 × 暴击系数 × 随机浮动(0.9-1.1) +``` + +#### 命中判定 +``` +命中率 = 基础命中(90%) + (攻方等级 - 守方等级) × 2% + 技能命中加成 +闪避率 = 基础闪避(5%) + 身法加成 +最终命中 = 命中率 - 闪避率(下限50%,上限99%) +``` + +#### 属性克制 + +| 攻\守 | 金 | 木 | 水 | 火 | 土 | +|-------|----|----|----|----|-----| +| 金 | 1.0 | 1.3 | 0.7 | 1.0 | 1.0 | +| 木 | 0.7 | 1.0 | 1.0 | 0.7 | 1.3 | +| 水 | 1.3 | 1.0 | 1.0 | 1.3 | 0.7 | +| 火 | 1.0 | 1.3 | 0.7 | 1.0 | 1.0 | +| 土 | 1.0 | 0.7 | 1.3 | 1.0 | 1.0 | + +克制伤害 ×1.3,被克制伤害 ×0.7。 + +### 7.4 PvE 怪物设计 + +#### 怪物分级 + +| 等级 | 名称标识 | 战力 | 音效特征 | +|------|---------|------|---------| +| 普通 | 无前缀 | 同级玩家0.6倍 | 普通叫声 | +| 精英 | "凶" | 同级玩家1.2倍 | 更低沉/更响亮 | +| 头目 | "妖王/魔将" | 同级玩家2倍 | 独特Boss音效 | +| 世界Boss | 专有名号 | 需组队 | 专属BGM+音效 | + +#### 怪物列表(MVP版本) + +| 区域 | 怪物 | 等级 | 属性 | 特色音效 | +|------|------|------|------|---------| +| 清风镇郊外 | 野兔精 | 1-3 | 木 | 尖细叫声 | +| 清风镇郊外 | 灰狼 | 2-4 | 土 | 狼嚎 | +| 青云山外围 | 云雾蛇 | 5-8 | 水 | 嘶嘶声+水滴 | +| 青云山外围 | 落石傀儡 | 6-10 | 土 | 石头碰撞+碎裂 | +| 青云山外围 | 凶·山魈 | 8-10 | 木 | 诡异笑声 | +| 落星平原 | 盗匪 | 5-10 | 金 | 刀剑碰撞 | +| 落星平原 | 妖狐 | 8-12 | 火 | 妖媚笑声+火焰 | +| 幽冥沼泽 | 沼泽毒蛙 | 15-18 | 水/毒 | 粘腻跳跃+毒液 | +| 赤炎荒原 | 赤焰蟒 | 15-20 | 火 | 火焰吐息 | + +### 7.5 PvP 对战规则 + +#### 切磋模式(友好PvP) +- 双方玩家互相同意后进入 +- 不损失物品/经验 +- 胜者获得切磋积分(排行榜用) +- 语音:"[玩家A]向你发起切磋邀请。双击接受,左滑拒绝。" + +#### 自由PvP +- 仅在标记为"可PvP"的野外区域生效 +- 攻击方先行(但被攻击方可选择逃跑) +- 败者损失少量灵石(不超过持有量的5%) +- 不掉落装备 +- 有杀戮值系统防止恶意屠杀: + - 杀戮值随击杀累加 + - 杀戮值高的玩家名字播报前会加"煞气浓重的"前缀 + - 杀戮值过高会被NPC卫兵追杀 + +--- + +## 八、副本系统 + +### 8.1 副本类型 + +| 类型 | 人数 | 特点 | +|------|------|------| +| **秘境探索** | 1人 | 线性关卡,主打剧情+机关解谜 | +| **组队试炼** | 2-4人 | 多Boss,需要配合(输出+治疗+肉盾) | +| **门派大比** | 5v5 | PvP副本,门派间竞技 | + +### 8.2 副本结构设计 + +以"青云山·古修士洞府"(单人秘境,等级10-15)为例: + +``` +入口 → 石门谜题 → 走廊(伏击战)→ 分岔路 + │ + ┌───────────┼───────────┐ + ▼ ▼ ▼ + 藏经阁 丹房 密室 + (功法奖励) (丹药奖励) (Boss战) + │ │ │ + └───────────┼───────────┘ + ▼ + 宝库 + (最终奖励) +``` + +#### 音频流设计 + +``` +[进入副本] +环境音切换:空旷洞穴回声+水滴 +语音:"你踏入了一座古老的洞府。空气中弥漫着陈旧的灵气。前方有一扇刻满符文的石门。" + +[石门谜题] +语音:"石门上有三个凹槽,分别刻着金、木、水的符文。请按照五行相生的顺序排列。" +(玩家通过上下滑动选择符文,双击确认,左滑重置) +正确 → 音效:石门缓缓开启 +错误 → 音效:闷响 + 语音:"符文暗淡下去。再想想。" + +[分岔路] +语音:"前方通道一分为三。左边传来翻书声,中间飘来药香,右边似有怪物的低吼。" +左滑:藏经阁方向 +右滑:密室方向 +上滑:确认前进 +``` + +### 8.3 Boss机制的音频传达 + +纯音频游戏中Boss技能预警是关键设计: + +| 机制 | 音频传达方式 | 玩家应对 | +|------|------------|---------| +| Boss蓄力 | 能量聚集的渐强音效 + 语音"它在蓄力!" | 在蓄力结束前使用防御技能 | +| Boss大招 | 独特前摇音效(如龙吟) + 语音预警 | 双击使用闪避身法 | +| Boss进入暴走 | BGM节奏加快 + 语音"它进入了狂暴状态!" | 提高输出/拉开距离 | +| Boss可打断 | 特殊音效(咳嗽/喘息) + 语音"它露出了破绽!" | 立即双击使用控制技能 | +| 场地危险 | 警告音效 + 语音"地面开始龟裂!" | 上滑选择闪避 | + +### 8.4 组队副本的语音协调 + +组队副本中,系统会播报队友的关键行动: + +``` +语音:"[队友A]使用了金钟罩,为你抵挡了伤害。" +语音:"[队友B]使用了回春术,你恢复了120点气血。" +语音:"[队友C]被Boss击晕了!" +``` + +简化播报规则: +- 只播报对玩家有直接影响的队友行动 +- 队友的普通攻击不播报 +- 队友使用的增益/治疗技能播报 +- 队友进入危险状态时播报 + +--- + +## 九、任务与剧情系统 + +### 9.1 主线剧情大纲 + +**第一章:初入修途**(等级1-10) + +玩家初入苍玄大陆,在清风镇学习修炼基础,拜师入门,了解世界的基本规则。 + +关键节点: +1. 清风镇遇到一位神秘老人(引导教程) +2. 镇外遭遇妖兽(首次战斗教学) +3. 发现身上携带的古玉碎片有异样(主线伏笔) +4. 前往青云山拜师或加入散修联盟 +5. 第一次进入秘境(副本教学) + +**第二章:暗流涌动**(等级10-20) + +正邪两道势力冲突加剧,古修士遗迹接连被发现,各方势力暗中争夺。 + +关键节点: +1. 门派内接到调查任务,发现邪修活动痕迹 +2. 在废弃矿洞中遭遇万魂殿弟子(首次与邪修交手) +3. 古玉碎片引发异变,获得神秘能力 +4. 被卷入正邪势力争端,必须选择立场 +5. 大型剧情副本:正邪对峙于落星城 + +**第三章:风云变幻**(等级20-30) + +上古秘境大量出现,灵气异变加剧,更大的阴谋浮出水面。 + +关键节点: +1. 发现灵气异变的根源与古玉碎片有关 +2. 集齐碎片的线索分布在各大区域 +3. 遭遇各势力的阻拦或拉拢 +4. 揭露幕后黑手——一位即将渡劫的上古修士 +5. 大型副本:上古秘境·天元之地 + +**第四章:天地大劫**(等级30-50) + +最终决战,玩家集结力量对抗终极Boss,决定苍玄大陆的命运。 + +(后续章节随版本更新扩展) + +### 9.2 支线任务类型 + +| 类型 | 刷新 | 示例 | 奖励类型 | +|------|------|------|---------| +| **日常任务** | 每日刷新 | "帮药师李婆婆采集5株灵草" | 经验+灵石 | +| **悬赏任务** | 告示牌随机 | "清剿镇北10只灰狼" | 灵石+随机物品 | +| **门派任务** | 每日3个 | "在青云峰顶打坐修炼30分钟" | 门派贡献+经验 | +| **奇遇任务** | 随机触发 | "你发现一只受伤的灵兽……" | 稀有物品/功法 | +| **连环任务** | 特定条件 | 一系列关联任务组成支线故事 | 剧情+稀有奖励 | + +### 9.3 任务追踪与播报 + +``` +[接取任务] +语音:"接取任务——清剿灰狼。前往镇北郊外,击败10只灰狼。" +音效:任务接取确认音 + +[任务进度] +(每击败一只灰狼后) +语音:"灰狼 3/10。" +(超过一半时) +语音:"灰狼 6/10。已过半。" + +[任务完成] +音效:任务完成乐曲 +语音:"任务完成——清剿灰狼。获得经验200点,灵石50枚。" + +[查看进行中任务] +菜单态 → 任务列表: +语音:"当前任务3个。第一个:清剿灰狼,进度6/10。第二个……" +``` + +### 9.4 NPC对话系统 + +NPC对话采用**对话树**结构: + +``` +NPC: 张道长 +├── 第一次见面 → 独立开场白 + 引导教程 +├── 已认识后 → 日常问候 +│ ├── [请教修炼] → 给予修炼建议/出售功法 +│ ├── [询问近况] → 推进支线剧情 +│ ├── [交易] → 打开交易界面 +│ └── [告辞] → 退出对话 +└── 特定剧情阶段 → 特殊对话内容 +``` + +每个NPC有独立的声音风格(通过VoxCPM2的不同参考音频实现): +- 老者NPC:苍老沉稳的声音 +- 年轻女NPC:清脆柔和的声音 +- 商贩NPC:精明活泼的声音 +- Boss NPC:低沉威严的声音 + +--- + +## 十、经济与物品系统 + +### 10.1 货币体系 + +| 货币 | 获取途径 | 用途 | +|------|---------|------| +| **灵石** | 击怪、任务、交易 | 通用货币:购买物品、修理装备 | +| **门派贡献** | 门派任务、门派活动 | 门派商店:高级功法、专属物品 | +| **声望** | 各势力日常任务 | 解锁势力专属内容 | + +不设充值货币(纯免费游戏)。 + +### 10.2 物品分类 + +#### 装备 + +| 部位 | 说明 | 音效关联 | +|------|------|---------| +| 武器 | 影响攻击力 | 攻击音效随武器类型变化(剑/拳/法杖) | +| 护甲 | 影响防御力 | 受击音效随护甲变化 | +| 法宝 | 特殊主动技能 | 有独立使用音效 | +| 饰品×2 | 属性加成 | 无独立音效 | + +#### 装备品质 + +| 品质 | 颜色概念 | 音频标识 | 属性加成 | +|------|---------|---------|---------| +| 凡品 | 白 | 无特殊音效 | 基础属性 | +| 灵器 | 绿 | 获得时有轻微灵光音 | +10-20% | +| 宝器 | 蓝 | 获得时有明显灵光音 | +20-40% | +| 仙器 | 紫 | 获得时有华丽仙乐 | +40-70% | +| 太古神器 | 金 | 获得时有震撼天地音效 | +70-100%+特殊效果 | + +#### 消耗品 + +| 物品 | 效果 | 获取 | +|------|------|------| +| 回灵丹 | 恢复灵力 | 商店/炼丹 | +| 续命丹 | 恢复气血 | 商店/炼丹 | +| 突破丹 | 辅助突破 | 副本/炼丹 | +| 传送符 | 传送至指定城镇 | 商店 | +| 隐身符 | 短时间隐身(PvP逃跑用) | 商店/任务 | + +#### 材料 + +用于炼丹、炼器的基础材料,按品级分为1-5星。 + +### 10.3 交易系统 + +#### NPC商店 +- 双击NPC进入对话 → 选择"交易"选项 → 进入商店态 +- 商店态操作:上下滑动浏览商品,单击查看详情,双击购买 +- 每次购买语音播报:"购买回灵丹×1,花费灵石20枚。剩余灵石:480枚。" + +#### 玩家交易 +- 在同一房间的两个玩家可以发起交易 +- 流程: + 1. 发起方:选中对方 → 双击 → 选择"交易" + 2. 接收方收到语音:"[玩家A]向你发起交易请求。双击接受。" + 3. 交易界面:双方各放入物品 → 确认 + 4. 双方双击确认后交易完成 + +### 10.4 背包管理的音频方案 + +背包容量:初始30格,可通过任务/购买扩展至100格。 + +物品分类筛选(菜单态进入背包后): +``` +右滑 → 切换分类:"全部" → "装备" → "丹药" → "材料" → "其他" +上/下滑 → 在当前分类内翻页 +单击 → 播报物品详情 +双击 → 使用/装备 +``` + +物品满时获得新物品: +``` +语音:"背包已满。获得铁剑。是否丢弃一件物品腾出空间?双击打开背包。左滑放弃此物品。" +``` + +--- + +## 十一、多人社交系统 + +### 11.1 玩家登录与账号系统 + +#### 注册流程 +1. 打开游戏页面(全黑屏幕) +2. 语音:"欢迎来到《听仙》。如果你是新修士,请双击开始你的修仙之旅。如果你已有道号,请单击登录。" +3. 新用户 → 输入用户名/密码(唯一的文字输入环节)→ 进入角色创建 +4. 老用户 → 输入用户名/密码 → 登录进入游戏世界 + +#### 登录态 +- 支持游客登录(快速体验,数据临时保存) +- 账号密码登录 +- 第三方登录(微信/手机号,后续扩展) + +### 11.2 好友系统 + +| 操作 | 方式 | +|------|------| +| 添加好友 | 在同一房间,选中玩家 → 双击 → 选择"加为道友" | +| 好友列表 | 菜单 → 社交 → 道友列表(上下翻页,单击查看状态,双击发消息) | +| 好友消息 | 收到时语音:"道友[名字]传音:[消息内容]" | +| 好友定位 | 查看好友时播报其所在区域 | + +### 11.3 门派/公会系统 + +#### 创建门派 +- 等级20+,消耗10000灵石 +- 需要3名玩家联名 +- 门派有独立的总坛房间(可自定义描述和氛围音) + +#### 门派功能 +| 功能 | 说明 | +|------|------| +| 门派聊天 | 门派内广播消息 | +| 门派仓库 | 共享物品存储 | +| 门派任务 | 门派专属日常和周常 | +| 门派副本 | 需要门派成员协作 | +| 门派等级 | 通过门派任务升级,解锁更多功能 | +| 门派技能 | 门派等级解锁的被动加成 | + +### 11.4 聊天系统 + +纯音频游戏中的聊天方案: + +#### 频道 +| 频道 | 范围 | 播报方式 | +|------|------|---------| +| 当前房间 | 同一房间玩家 | 自动播报 | +| 私聊 | 指定玩家 | 仅双方听到 | +| 门派 | 门派成员 | 门派成员听到 | +| 世界 | 全服 | 可选择开关 | + +#### 发送消息 +- 玩家输入文字消息(调起键盘的唯一场景之一) +- 系统将文字通过TTS转为语音播报给接收方 +- 接收方听到:音效提示 + "[频道标识][玩家名]说:[消息内容]" + +#### 快捷消息 +预设一组常用消息,无需打字: +- "你好" / "谢谢" / "救命" / "组队吗" / "交易吗" / "告辞" +- 菜单 → 社交 → 快捷消息 → 上下选择 → 双击发送 + +### 11.5 玩家间互动 + +| 互动 | 触发方式 | 说明 | +|------|---------|------| +| 查看 | 选中+单击 | 播报对方道号、境界、门派 | +| 切磋 | 选中+双击→切磋 | 友好PvP | +| 交易 | 选中+双击→交易 | 物品交易 | +| 组队 | 选中+双击→组队 | 邀请组队 | +| 加好友 | 选中+双击→加为道友 | 添加好友 | +| 攻击 | 选中+双击→攻击(PvP区域) | 自由PvP | + +"选中"操作:在同一房间中,左右滑动在NPC/玩家/物品之间切换聚焦。 + +--- + +## 十二、AI游历修士系统 + +### 12.1 设计目标 + +在线玩家不足时(特别是测试阶段),AI控制的"游历修士"填充世界,让玩家感受到一个活跃的世界: +- 游历修士在城镇中走动、对话 +- 游历修士在野外修炼、打怪 +- 游历修士可以与玩家进行有限度的互动 +- **明确标识为NPC**:游历修士名字后带"(游历)"标记,不伪装为真人玩家。这既避免伦理问题,也让玩家对交互深度有合理预期 + +### 12.2 游历修士行为模型 + +每个游历修士有一个**日程表**驱动的行为循环: + +``` +05:00-08:00 起床修炼(在修炼室打坐) +08:00-10:00 采购物资(在商店区域活动) +10:00-14:00 外出历练(在野外区域打怪) +14:00-15:00 回城休整(客栈/修炼室) +15:00-18:00 外出历练(继续打怪或探索) +18:00-20:00 社交活动(在广场闲逛,与其他玩家/NPC互动) +20:00-22:00 修炼(在灵脉/修炼室) +22:00-05:00 休息(下线或待在安全区) +``` + +(时间为游戏内时间,一个游戏日=现实2小时,日程表按比例压缩) + +### 12.3 游历修士人格系统 + +每个游历修士有随机生成的人格特征: + +| 维度 | 可选值 | 影响 | +|------|-------|------| +| 性格 | 热情/冷淡/话多/沉默/傲慢/谦逊 | 主动搭话频率、对话风格 | +| 目标 | 修炼狂/探索者/社交达人/财迷 | 日程权重调整 | +| 实力 | 菜鸟/普通/高手 | 战斗AI水平 | +| 阵营 | 正道/邪道/中立 | 活动区域、对话内容 | + +#### 对话模板 + +游历修士对话从预设模板库中选取,根据人格和上下文填充: + +``` +热情型·初次遇见: +"道友,初次见面!我是{name},在这{area}修行已有些日子了。你是刚来的吧?要不要一起去打{nearby_monster}?" + +冷淡型·被搭话: +"嗯。有事?" + +话多型·同区域闲聊: +"你也在这里修炼啊,这地方灵气还行,不过我听说{other_area}的灵脉更好。上次我去那边差点被{monster}给宰了,还好跑得快……" +``` + +### 12.4 动态填充策略 + +``` +目标在线感知数 = max(10, 实际在线数 × 2) // 至少10,让世界不空旷 +游历修士数量 = 目标在线感知数 - 实际在线数 +分布策略: + - 50% 分布在玩家活跃区域(让玩家遇到人) + - 30% 分布在任务相关区域 + - 20% 随机分布 +``` + +### 12.5 游历修士与玩家的交互边界 + +| 可以 | 不可以 | +|------|-------| +| 主动打招呼(带"游历"标识) | 主动发起PvP攻击 | +| 接受组队邀请 | 主动邀请组队(除非玩家在副本门口) | +| 参与组队战斗 | 恶意抢怪/抢物品 | +| 进行NPC式对话(玩家知道是AI) | 在世界频道刷屏 | +| 交易(以NPC价出售) | 欺诈交易 | + +> **标识方式**:查看游历修士时播报"游历修士·[名字],练气三层",其中"游历修士"前缀明确其NPC身份。 + +--- + +## 十三、技术架构概要 + +### 13.1 整体架构 + +``` +┌─────────────────────────────────────────────────────────┐ +│ 玩家手机浏览器 │ +│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ +│ │手势识别模块│ │音频播放引擎│ │网络通信模块│ │ +│ │ Touch API │ │Web Audio │ │WebSocket │ │ +│ └─────┬────┘ └─────┬────┘ └─────┬────┘ │ +│ └──────────────┼──────────────┘ │ +│ ┌────▼────┐ │ +│ │游戏状态机│ │ +│ └─────────┘ │ +└──────────────────────┬──────────────────────────────────┘ + │ WebSocket (JSON) + ▼ +┌──────────────────────────────────────────────────────────┐ +│ 游戏服务器 │ +│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │ +│ │连接管理 │ │世界模拟 │ │战斗引擎 │ │游历修士 │ │ +│ │Session │ │Map/NPC │ │Turn-based│ │NPC Mgr │ │ +│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │ +│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ +│ │任务系统 │ │经济系统 │ │社交系统 │ │ +│ │Quest │ │Economy │ │Social │ │ +│ └──────────┘ └──────────┘ └──────────┘ │ +└──────────────────────┬──────────────────────────────────┘ + │ + ┌────────────┼────────────┐ + ▼ ▼ ▼ + ┌───────────┐ ┌──────────┐ ┌──────────┐ + │ 数据库 │ │音频资源CDN│ │TTS服务 │ + │ (持久化) │ │(静态文件) │ │(按需生成) │ + └───────────┘ └──────────┘ └──────────┘ +``` + +### 13.2 客户端技术栈 + +| 模块 | 技术 | 说明 | +|------|------|------| +| 手势识别 | Touch Events API / Pointer Events | 识别上下左右滑动、单击、双击 | +| 音频引擎 | Web Audio API | 4层混音、音量控制、音效合成 | +| 语音播放 | HTMLAudioElement + AudioBuffer | 语音队列管理、拼装播放 | +| 网络通信 | WebSocket | 双向实时通信 | +| 状态管理 | 有限状态机 | 管理探索/战斗/菜单/对话等状态 | +| 数据缓存 | IndexedDB | 缓存已下载的音频资源 | +| 页面 | 单页HTML | 全黑背景,无视觉元素 | + +### 13.3 服务端技术栈 + +| 模块 | 技术建议 | 说明 | +|------|---------|------| +| 游戏服务器 | Node.js / Go | WebSocket服务 + 游戏逻辑 | +| 数据库 | PostgreSQL / MongoDB | 玩家数据、世界状态 | +| 缓存 | Redis | 在线状态、会话、排行榜 | +| 音频资源 | 静态文件服务 / CDN | 预生成音频文件托管 | +| TTS服务 | VoxCPM2 REST API | 动态语音生成 | +| 任务队列 | Redis Queue | TTS生成任务排队 | + +### 13.4 通信协议设计 + +客户端和服务器之间通过 WebSocket 传输 JSON 消息: + +#### 客户端 → 服务器 + +```json +// 移动 +{"type": "move", "direction": "north"} + +// 战斗操作 +{"type": "combat_action", "action": "use_skill", "skill_id": "fireball", "target_id": "mob_123"} + +// 对话选择 +{"type": "dialog_choice", "npc_id": "zhang_daochang", "choice_id": 2} + +// 使用物品 +{"type": "use_item", "item_id": "healing_pill", "slot": 3} + +// 聊天 +{"type": "chat", "channel": "room", "message": "你好"} +``` + +#### 服务器 → 客户端 + +```json +// 房间信息(进入新房间时) +{ + "type": "room_enter", + "room": { + "name": "青云山·山门前", + "description_audio": "room_qingyun_gate.mp3", + "ambient_audio": "ambient_mountain.ogg", + "bgm": "bgm_mountain.ogg", + "exits": ["north", "south"], + "exit_descriptions": { + "north": "exit_desc_stone_stairs.mp3", + "south": "exit_desc_dirt_road.mp3" + }, + "entities": [ + {"type": "npc", "id": "zhang_daochang", "name_audio": "npc_name_zhang.mp3"}, + {"type": "player", "id": "player_456", "name_audio": "player_name_456.mp3"} + ] + } +} + +// 战斗事件 +{ + "type": "combat_event", + "events": [ + {"action": "skill_use", "actor": "player", "skill_audio": "skill_fireball.mp3", "sfx": "sfx_fire.mp3"}, + {"action": "damage", "target": "mob_123", "amount": 156, "narration_audio": "combat_hit_156.mp3"}, + {"action": "status", "narration_audio": "combat_status_mob_hp_23pct.mp3"} + ] +} + +// 语音播报(通用) +{ + "type": "narration", + "priority": 2, + "audio_segments": ["seg_you_arrived.mp3", "seg_room_name_xxx.mp3", "seg_desc_xxx.mp3"], + "fallback_text": "你来到了青云山·山门前。" +} +``` + +### 13.5 音频资源管理 + +#### 资源分级加载策略 + +| 级别 | 内容 | 加载时机 | 缓存策略 | +|------|------|---------|---------| +| L0-核心 | 操作音效、通用语音片段 | 游戏启动时预加载 | 永久缓存(IndexedDB) | +| L1-区域 | 当前区域BGM、氛围音 | 进入区域时加载 | LRU缓存(50MB上限) | +| L2-内容 | NPC对话、房间描述 | 进入房间/触发对话时加载 | LRU缓存 | +| L3-动态 | 动态生成的玩家名等 | 首次遇到时生成并缓存 | 永久缓存 | + +#### 音频格式 + +| 用途 | 格式 | 码率 | 原因 | +|------|------|------|------| +| BGM/氛围 | OGG Vorbis | 128kbps | 循环播放,体积优先 | +| 语音片段 | MP3 | 64kbps | 兼容性最好,单句语音对码率要求低 | +| 短音效 | WAV/PCM | 无压缩 | 延迟敏感,直接用AudioBuffer | +| UI音效 | Web Audio合成 | — | 无需文件,实时合成 | + +### 13.6 数据存储方案 + +#### 玩家数据(PostgreSQL) + +``` +players + id, username, password_hash, created_at, last_login + +characters + id, player_id, name, origin, element, + level, exp, realm, + hp, max_hp, mp, max_mp, + str, int, agi, spi, luk, + current_room_id, current_state, + money, guild_id + +inventories + id, character_id, item_id, quantity, slot, equipped + +skills + id, character_id, skill_id, level, proficiency + +quests + id, character_id, quest_id, status, progress_json +``` + +#### 世界数据(JSON配置 + Redis运行时) + +``` +rooms.json — 静态房间定义 +npcs.json — NPC定义和对话树 +monsters.json — 怪物属性 +items.json — 物品定义 +skills.json — 技能定义 +quests.json — 任务定义 + +Redis: + room:{id}:players — 房间内玩家列表 + room:{id}:monsters — 房间内怪物实例 + player:{id}:state — 玩家当前状态 + combat:{id} — 战斗实例数据 + wanderer:{id}:state — 游历修士状态 +``` + +--- + +## 十四、内容生产管线与版本规划 + +### 14.1 音频资源生产流程 + +``` +策划输出文本 → TTS批量生成 → 人工质检 → 音频后处理 → 打包上传 + │ │ │ │ │ + │ VoxCPM2 API 听取抽检 ffmpeg CDN/服务器 + │ │ 修正重生 归一化音量 + │ │ 格式转换 + ▼ ▼ 去底噪 + 同步生成 ACE-Step / + 音效需求 Stable Audio + │ │ + │ 音效/BGM生成 + │ │ + └──────────────┘ +``` + +#### 批量TTS生成脚本工作流 + +``` +1. 准备文本清单(CSV格式): + id, text, voice_ref, priority + room_desc_001, "你来到了清风镇的中心广场...", narrator.wav, P2 + npc_zhang_001, "少侠,初来乍到吧?", old_man.wav, P2 + +2. 调用 VoxCPM2 批量生成: + POST http://localhost:8000/tts + Body: { text, ref_audio, output_format: "mp3" } + +3. 质检:随机抽取 20% 人工试听 + +4. 后处理: + ffmpeg -i input.wav -af "loudnorm=I=-16:TP=-1.5" -ar 22050 -b:a 64k output.mp3 + +5. 部署到音频服务器 +``` + +### 14.2 对接本机工具链 + +| 工具 | 用途 | 调用方式 | +|------|------|---------| +| VoxCPM2 (port 8000) | 全部语音播报 | REST API,支持批量 | +| CosyVoice2 | 高品质NPC音色(备选) | 手动启动,WebUI | +| ACE-Step 1.5 | BGM、长音效(>5s) | conda acestep,命令行 | +| Stable Audio Open | 短音效、高品质氛围 | conda stableaudio,Gradio/脚本 | +| ffmpeg | 后处理全流程 | 命令行批处理 | + +### 14.3 MVP版本范围定义 + +> **设计原则**:纯音频交互、移动浏览器限制、音频资产生产、多人实时系统——这四个风险同时上量会导致失控。MVP 必须做到"先验证纯音频核心体验",内容量最小化,不同时引入多人和游历修士。 + +**MVP(最小可玩版本)** 目标:验证"黑屏+手势+语音"这套交互模式是否成立。一位玩家能完成:打开游戏→移动→遇怪→战斗→领任务→完成任务。 + +| 模块 | MVP范围 | +|------|--------| +| 区域 | 清风镇 3-5 个房间(广场、客栈、郊外) | +| 等级 | 1-3 | +| 境界 | 凡人 → 练气期1-3层 | +| 功法 | 3个基础技能(1攻击+1防御+1恢复) | +| 怪物 | 2种普通(野兔精、灰狼) | +| NPC | 1个(教程引导NPC兼任务发放) | +| 任务 | 1条教学任务线(引导移动→战斗→回城) | +| 副本 | 无 | +| 物品 | 5种(1武器+1防具+2丹药+1材料) | +| 多人 | **无**(纯单机验证) | +| 游历修士 | **无** | + +#### MVP音频资产清单 + +按"必需首包 / 首次进入区域 / 可按需生成"分类: + +| 分类 | 类别 | 数量 | 说明 | +|------|------|------|------| +| **首包必需** | UI音效(Web Audio合成) | 13 | 6手势反馈+菜单音+确认音等,无需文件 | +| **首包必需** | 系统提示语音 | 20 | 教程引导、通用播报("你的回合""战斗胜利"等) | +| **首包必需** | 通用词汇片段 | 15 | 数字0-9、"点""伤害""恢复"等高频拼接词 | +| **首包必需** | 战斗音效 | 6 | 剑击、拳击、防御、闪避、命中、战斗开始 | +| **首包必需** | BGM | 2 | 城镇BGM、战斗BGM | +| **首次进入** | 房间描述语音 | 5 | 每个房间1段描述 | +| **首次进入** | 环境氛围 | 2 | 市集喧嚣、山林清风 | +| **首次进入** | NPC对话语音 | 15 | 教程NPC的对话树 | +| **首次进入** | 怪物名称+音效 | 4 | 2种怪物×(名称+叫声) | +| **首次进入** | 技能名称语音 | 3 | 3个技能名 | +| **首次进入** | 物品名称语音 | 5 | 5种物品名 | +| | **合计预生成文件** | **~90** | 不含Web Audio合成的13个UI音效 | + +### 14.4 版本迭代路线图(渐进验证) + +> **核心策略**:每个版本只引入一个新的风险维度,验证通过后再叠加下一个。 + +| 版本 | 新增风险维度 | 具体内容 | 验证目标 | 音频资产增量 | +|------|------------|---------|---------|------------| +| **v0.1 纯单机原型** | 纯音频交互 | 黑屏+手势识别+音频播报队列+3-5个房间移动+状态播报 | 手势操作是否直觉、音频队列是否清晰、玩家能否理解所处环境 | ~40个文件 | +| **v0.2 战斗原型** | 回合制战斗 | 2种怪+3个技能+完整回合制语音流+战斗结算 | 纯音频回合制是否可玩、操作节奏是否舒适 | +30个文件 | +| **v0.3 内容原型** | 任务/对话系统 | 1个NPC+1条教学任务+物品/装备基础操作+菜单系统 | 能否通过音频完成"接任务→打怪→交任务"闭环 | +20个文件 | +| **v0.4 联机原型** | 多人同步 | 登录+同房间玩家可见+房间聊天(文字转语音)+WebSocket | 多人状态同步+语音播报是否混乱 | +15个文件 | +| **v0.5 内测MVP** | 内容量+游历修士 | 扩展至15-20个房间+主线第一章前半+3-5个游历修士+日常任务 | 首次完整体验测试、留存观察 | +150个文件 | +| **v0.7 社交扩展** | PvP+组队+副本 | 切磋系统+组队副本+好友+新区域 | 多人玩法验证 | +200个文件 | +| **v1.0 正式版** | 完整内容 | 5大区域+主线前3章+门派+公会+完整经济系统 | 公开上线 | +1500个文件 | + +--- + +## 附录A:音频资源总量估算 + +| 类别 | v0.1原型 | v0.3内容原型 | v0.5内测MVP | v1.0正式版 | +|------|---------|-------------|------------|-----------| +| 房间描述语音 | 5 | 5 | 20 | 150 | +| NPC对话语音 | 0 | 15 | 80 | 1500 | +| 技能名称语音 | 0 | 3 | 8 | 60 | +| 物品名称语音 | 0 | 5 | 20 | 200 | +| 怪物名称+音效 | 0 | 4 | 14 | 160 | +| 系统提示语音 | 10 | 20 | 40 | 100 | +| 通用词汇片段 | 5 | 15 | 30 | 80 | +| 数字语音 | 0 | 10 | 40 | 40 | +| 主线旁白 | 0 | 0 | 15 | 200 | +| 战斗音效 | 0 | 6 | 15 | 50 | +| 环境氛围 | 2 | 2 | 5 | 20 | +| BGM | 1 | 2 | 5 | 15 | +| UI音效 | 13(合成) | 13(合成) | 13(合成) | 13(合成) | +| **合计预生成文件** | **~23** | **~90** | **~292** | **~2575** | + +> 各版本数字为累计值。UI音效通过 Web Audio API 实时合成,不计入预生成文件数。 + +## 附录B:完整手势映射速查表 + +| 状态 | 上滑 | 下滑 | 左滑 | 右滑 | 单击 | 双击 | +|------|------|------|------|------|------|------| +| 探索态 | 前进 | **打开菜单** | 切焦点(左) | 切焦点(右) | 查看状态 | 互动(不移动) | +| 战斗态 | 上一技能 | 下一技能 | 上一目标 | 下一目标 | 查看状态 | 出招 | +| 菜单态 | 上一项 | 下一项 | 返回 | 展开子菜单 | 查看详情 | 确认 | +| 对话态 | 上一选项 | 下一选项 | 结束对话 | 重听 | 当前选项 | 选择 | +| 背包态 | 上一物品 | 下一物品 | 返回 | 操作菜单 | 物品详情 | 使用/装备 | +| 商店态 | 上一商品 | 下一商品 | 返回 | 切分类 | 商品详情 | 购买 | + +> **一致性规则**:单击在所有状态下 = "告诉我现在的情况"(只读,不改变状态)。双击在所有状态下 = "确认/执行当前操作"。左滑在列表类状态下 = "返回/退出"。 + +## 附录C:术语表 + +| 术语 | 说明 | +|------|------| +| 房间 | MUD中的基本空间单元,一个场景/位置 | +| 出口 | 房间之间的连接通道 | +| 声景 | 一组环境音效组合,定义一个地点的听觉特征 | +| 语音拼装 | 将预生成的语音片段按模板拼接为完整句子 | +| 灵气潮汐 | 游戏内周期性灵气涨落事件 | +| 境界突破 | 修炼到一定程度后跨入更高修炼阶段的过程 | +| 奇遇 | 低概率触发的随机特殊事件 | diff --git a/docs/策划案任务拆分.md b/docs/策划案任务拆分.md new file mode 100644 index 0000000..53f8638 --- /dev/null +++ b/docs/策划案任务拆分.md @@ -0,0 +1,173 @@ +# 仙侠纯听觉MUD游戏 — 策划案任务拆分 + +> 创建日期:2026-05-21 +> 修订日期:2026-05-21 +> 状态:修订完成(技术架构前置至第一层,AI游历修士明确标识为NPC) + +--- + +## 项目概览 + +| 项目 | 说明 | +|------|------| +| 类型 | 纯听觉交互手机游戏(屏幕全黑) | +| 题材 | 仙侠 | +| 参考 | 传统 MUD 游戏 | +| 平台 | 纯 HTML5(浏览器运行) | +| 操作 | 上滑、下滑、左滑、右滑、单击、双击(共6种手势) | +| 输出 | 语音播报 + 音效 + 环境氛围音乐(无视觉元素) | +| 战斗 | 回合制 | +| 联机 | 大型MUD在线世界,支持PvP/PvE/副本,低人数时游历修士NPC填充 | +| 商业模式 | 纯免费 | +| 玩法 | 主线剧情 + 自由探索/修炼 | +| 语音策略 | 预生成 + 按需生成 + 播报时拼装 | + +--- + +## 任务拆分 + +策划案共分为 **14 个模块**,按依赖关系分为 4 层。 + +> **关键原则**:技术架构前置。手势识别、音频引擎、WebSocket 协议、资源缓存、服务端权威状态等技术约束会反过来决定玩法能否成立,因此必须与基础设计同层确定。 + +### 第一层:基础框架 + 技术架构(无依赖,必须最先确定) + +#### 任务 1:游戏概述与核心设计理念 +- 游戏定位、目标用户 +- 核心体验描述("闭眼修仙"的体验承诺) +- 与传统MUD的异同对比 +- 纯音频游戏的设计原则与约束 + +#### 任务 2:世界观与背景设定 +- 仙侠世界观框架(天地灵气、修炼体系的宏观设定) +- 大陆/区域划分 +- 主要势力/门派 +- 时间线与历史大事件 +- 世界运行规则(昼夜、天气、灵气潮汐等) + +#### 任务 3:交互设计 — 手势映射与UI流转 +- 6 种手势在不同场景下的功能映射表(严格6种,不引入长按等额外手势) +- 场景上下文切换逻辑(探索态、战斗态、菜单态、对话态等) +- 导航与寻路的音频交互方案 +- 无障碍设计原则 +- 操作容错与撤销机制 + +#### 任务 4:技术架构概要(从第四层前置) +- 客户端架构(HTML5 + Web Audio API + WebSocket) +- 移动浏览器限制调研(后台暂停、音频自动播放策略、内存限制) +- 服务端架构(游戏逻辑服务 + 音频资源服务) +- 通信协议设计 +- 数据存储方案 +- 音频资源缓存策略 +- 服务端权威状态设计(离线收益由服务端结算,不依赖客户端持续运行) + +### 第二层:核心系统(依赖第一层) + +#### 任务 5:角色与修炼系统 +- 角色创建流程(纯音频引导) +- 基础属性体系(根骨、悟性、灵力等) +- 修炼境界体系(练气→筑基→金丹→元婴→…) +- 功法/技能树设计 +- 属性成长与突破机制 + +#### 任务 6:地图与导航系统 +- 地图数据结构(房间/节点 + 连接,MUD经典模式) +- 区域设计(新手村、城镇、野外、秘境、副本入口等) +- 导航语音播报方案(到达/离开/方位描述) +- 环境氛围音设计(每个区域的声景特征) +- 随机事件触发机制 + +#### 任务 7:音频系统设计 +- 音频分层架构(BGM层、氛围层、音效层、语音层) +- 语音播报规范(播报优先级、队列管理、打断规则) +- 音效设计清单(按场景/动作分类) +- BGM设计清单(按区域/情境分类) +- 语音拼装方案(预生成片段 + 动态拼接规则) +- 音频资源生产管线(对接本机 TTS/音乐/音效工具链) + +### 第三层:玩法系统(依赖第二层) + +#### 任务 8:战斗系统 +- 回合制战斗流程(纯音频版) +- 技能/功法在战斗中的使用 +- 战斗音频反馈设计(攻击、防御、闪避、暴击等音效) +- PvE 怪物设计(种类、AI行为) +- PvP 对战规则 +- 战斗结算与奖励 + +#### 任务 9:副本系统 +- 副本类型(单人、组队、公会) +- 副本结构设计(线性/分支) +- Boss 机制设计(纯音频下如何传达Boss技能预警) +- 副本奖励与难度分级 +- 组队匹配机制 + +#### 任务 10:任务与剧情系统 +- 主线剧情大纲 +- 支线任务类型(日常、悬赏、奇遇、门派) +- 任务追踪与播报方式 +- 剧情分支与选择机制 +- NPC对话系统(对话树 + 语音播报) + +#### 任务 11:经济与物品系统 +- 货币体系(灵石、贡献点等) +- 物品分类(装备、丹药、材料、法宝) +- 装备系统(穿戴、强化、品质) +- 交易系统(玩家间交易、NPC商店) +- 背包管理的音频交互方案 + +### 第四层:社交与运营(依赖第三层) + +#### 任务 12:多人社交系统 +- 玩家登录与账号系统 +- 好友系统 +- 门派/公会系统 +- 聊天系统(文字转语音播报) +- 玩家间互动(切磋、交易、组队) + +#### 任务 13:AI游历修士系统(原"机器人") +- 游历修士行为模型(巡逻、修炼、社交、战斗) +- 游历修士人格与对话风格 +- 动态填充策略(根据在线人数调节数量) +- 游历修士明确标识为NPC,不伪装真人玩家 +- 与真实玩家的交互规则 + +#### 任务 14:内容生产管线与版本规划 +- 音频资源生产流程(TTS → 音效 → BGM → 拼装 → 质检) +- 对接本机工具链的具体方案 +- MVP版本范围定义 +- 后续版本迭代路线图 + +--- + +## 依赖关系图 + +``` +第一层(并行) 第二层(并行) 第三层(并行) 第四层(并行) +┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ +│ 1.游戏概述 │──┬────────→│ 5.角色修炼 │───┬──→│ 8.战斗系统 │───┬──→│12.社交系统 │ +└──────────┘ │ └──────────┘ │ └──────────┘ │ └──────────┘ +┌──────────┐ │ ┌──────────┐ │ ┌──────────┐ │ ┌──────────┐ +│ 2.世界观 │──┼────────→│ 6.地图导航 │───┼──→│ 9.副本系统 │───┼──→│13.AI游历修士│ +└──────────┘ │ └──────────┘ │ └──────────┘ │ └──────────┘ +┌──────────┐ │ ┌──────────┐ │ ┌──────────┐ │ ┌──────────┐ +│ 3.交互设计 │──┼────────→│ 7.音频系统 │───┘──→│10.任务剧情 │───┘──→│14.生产管线 │ +└──────────┘ │ └──────────┘ └──────────┘ └──────────┘ +┌──────────┐ │ ┌──────────┐ +│ 4.技术架构 │──┘ │11.经济物品│ +│ (前置!) │ └──────────┘ +└──────────┘ +``` + +> **变更说明**:技术架构从第四层提升至第一层。手势识别、音频引擎、WebSocket协议、移动浏览器限制等技术约束会直接决定玩法设计能否落地,必须前置验证。 + +--- + +## 输出标准 + +每个任务模块在策划案中应包含: +1. **设计目标** — 该模块要解决什么问题 +2. **详细设计** — 具体规则、数值、流程 +3. **音频需求清单** — 该模块需要哪些语音/音效/BGM资源 +4. **交互流程** — 玩家操作手势 → 系统响应音频 的完整流转 +5. **边界条件** — 异常情况处理(网络延迟、操作冲突等)