## 1. 云游戏技术
### 1.1 云游戏架构
```
玩家端 (Thin Client)
├── 视频解码 (H.264/H.265/AV1)
├── 输入采集 (键鼠/手柄/触屏)
├── 网络栈 (UDP/RTC)
└── 本地音频播放
↓ 上行: 输入 + 控制信令
↑ 下行: 视频流 + 音频流
云端服务器 (Game Server)
├── 游戏实例 (VM/容器)
├── GPU渲染 (帧抓取)
├── 视频编码 (硬件编码器)
└── 网络分发 (边缘节点)
```
### 1.2 主要云游戏服务对比
| 服务 | 厂商 | 状态 | 技术栈 | 定价模式 | 特点 |
|------|------|------|--------|----------|------|
| **Xbox Cloud Gaming** | Microsoft | 运营中 | Azure + xCloud | 订阅(XGPU) | 主机库、快速启动 |
| **PlayStation Plus** | Sony | 运营中 | PSNow技术 | 订阅 | PS独占、云存档 |
| **GeForce NOW** | NVIDIA | 运营中 | RTX服务器 | 免费/订阅 | 玩已购Steam库 |
| **Amazon Luna** | Amazon | 运营中 | AWS + Intel | 订阅/频道 | 区域限制多 |
| **Blacknut** | Blacknut | 运营中 | 自研 | 订阅 | 家庭友好 |
| ~~Stadia~~ | ~~Google~~ | ~~已关停~~ | ~~Linux/Vulkan~~ | ~~买断~~ | ~~教训:生态不足~~ |
| ~~Luna (早期)~~ | ~~Amazon~~ | ~~转型~~ | ~~Windows~~ | ~~订阅~~ | ~~与AWS整合~~ |
### 1.3 延迟构成与优化
```
总延迟 = 输入采集(1-5ms) + 上行网络(5-50ms) + 服务器处理(16-33ms)
+ GPU渲染(16-33ms) + 视频编码(5-15ms) + 下行网络(5-50ms)
+ 客户端解码(5-15ms) + 显示输出(5-20ms)
理想总延迟: 60-100ms (竞技游戏要求 <80ms)
可接受延迟: 100-150ms (单人/RPG)
不可接受: >200ms (明显卡顿)
```
| 延迟来源 | 优化技术 | 效果 |
|----------|----------|------|
| **网络往返** | 边缘计算、就近调度、QUIC协议 | 减少20-50ms |
| **渲染** | GPU直通、帧率稳定60fps | 减少8-16ms |
| **编码** | 硬件NVENC/AMF、低延迟模式 | 减少5-10ms |
| **解码** | 硬件解码、零拷贝渲染 | 减少5-10ms |
| **输入** | 本地预测、客户端插值 | 感知减少10-30ms |
### 1.4 视频编码参数
| 参数 | 竞技游戏 | 单机RPG | 说明 |
|------|----------|---------|------|
| **分辨率** | 1080p | 4K | 高分辨率增加编码延迟 |
| **帧率** | 60fps | 30-60fps | 高帧率=低延迟但高码率 |
| **码率** | 15-25Mbps | 25-50Mbps | 取决于画面复杂度 |
| **编码器** | H.264(低延迟) | H.265/AV1 | 新编码器效率更高但延迟稍高 |
| **关键帧间隔** | 1-2s | 2-5s | 短间隔=恢复快但码率低效 |
| **缓冲模式** | 零缓冲 | 极低缓冲 | 任何缓冲都增加延迟 |
---
## 2. VR/AR/MR 基础
### 2.1 沉浸式技术谱系
```
现实 ←————————————————————————→ 虚拟
| | | |
AR MR VR 完全虚拟
增强 混合 虚拟
现实 现实 现实
| 技术 | 环境 | 交互 | 代表设备 |
|------|------|------|----------|
| AR | 真实世界+叠加信息 | 手势/语音/手机 | HoloLens, Magic Leap |
| MR | 真实世界+虚拟物体共存 | 手势/控制器/眼动 | Vision Pro, Quest 3 |
| VR | 完全虚拟环境 | 控制器/手势/全身追踪 | Quest 3, PSVR2, Index |
| XR | 以上统称 | 统称 | — |
```
### 2.2 主流设备参数对比
| 设备 | 类型 | 分辨率(单眼) | 刷新率 | FOV | 追踪 | 价格(USD) |
|------|------|-------------|--------|-----|------|-----------|
| **Meta Quest 3** | VR/MR | 2064×2208 | 72/90/120Hz | 110° | Inside-out | $499 |
| **Meta Quest 3S** | VR/MR | 1832×1920 | 72/90/120Hz | 96° | Inside-out | $299 |
| **Apple Vision Pro** | MR | 3660×3200 | 90/100Hz | ~100° | 多传感器 | $3,499 |
| **PlayStation VR2** | VR | 2000×2040 | 90/120Hz | 110° | Inside-out | $549 |
| **Valve Index** | VR | 1440×1600 | 80/90/120/144Hz | 130° | Lighthouse | $999套装 |
| **PICO 4** | VR/MR | 2160×2160 | 72/90Hz | 105° | Inside-out | $429 |
| **HoloLens 2** | AR | 1440×936 | 60Hz | 52° | Inside-out | $3,500 |
---
## 3. VR 设计与开发
### 3.1 VR 核心设计原则
| 原则 | 说明 | 违反后果 |
|------|------|----------|
| **帧率至上** | 必须恒定72/90/120fps,绝不掉帧 | 眩晕、恶心 |
| **舒适移动** | 避免加速度、提供传送选项 | 晕动症 |
| **人体工学** | 交互在手臂自然活动范围内 | 疲劳、不适 |
| **尺度真实** | 虚拟物体按真实比例 | 认知失调 |
| **环境安全** | Guardian边界、Passthrough提醒 | 物理碰撞受伤 |
| **音频空间化** | 3D音频增强临场感 | 沉浸感缺失 |
### 3.2 移动机制对比
| 机制 | 实现 | 舒适度 | 沉浸感 | 适用 |
|------|------|--------|--------|------|
| **传送 (Teleport)** | 指向+瞬移 | ⭐⭐⭐ 最高 | ⭐⭐ 较低 | 所有VR新手友好 |
| **平滑移动** | 摇杆持续移动 | ⭐ 易晕 | ⭐⭐⭐ 最高 | 经验丰富的用户 |
| **-dash/短跳** | 快速滑动小段 | ⭐⭐ 较好 | ⭐⭐⭐ 高 | 动作游戏 |
| **舱室/载具** | 固定参照系移动 | ⭐⭐ 较好 | ⭐⭐⭐ 高 | 赛车、飞行 |
| **轨道移动** | 预设路径自动 | ⭐⭐⭐ 高 | ⭐⭐ 中 | 叙事体验 |
| **攀爬** | 手势抓取移动 | ⭐⭐ 较好 | ⭐⭐⭐ 高 | 攀岩、探索 |
| **空间移动** | 真实行走(房间尺度) | ⭐⭐⭐ 最高 | ⭐⭐⭐ 最高 | 房间尺度体验 |
### 3.3 晕动症 (Motion Sickness) 缓解
**生理原因:** 视觉前庭冲突(眼睛看到移动,内耳感觉不到)。
| 技术 | 原理 | 效果 |
|------|------|------|
| **舒适 vignette** | 移动时边缘变黑,减少周边视觉 | 显著降低眩晕 |
| **固定参照点** | 显示虚拟鼻子/座舱框架 | 提供稳定参考 |
| **降低FOV** | 移动时临时缩小视野 | 减少视觉运动刺激 |
| **高刷新率** | 90/120Hz减少运动模糊 | 基础要求 |
| **预测渲染** | 根据头部运动预测补偿帧 | 减少感知延迟 |
| **传送优先** | 默认传送,平滑为选项 | 最稳妥 |
| **加速度限制** | 匀速运动,避免加减速 | 减少内耳刺激 |
### 3.4 交互设计
| 交互类型 | 实现 | 最佳实践 |
|----------|------|----------|
| **射线交互** | 手柄发射射线指向UI/物体 | 射线颜色变化提示可交互、距离显示 |
| **直接抓取** | 虚拟手与物体碰撞抓取 | 抓取点附近高亮、物理反馈 |
| **手势识别** | 裸手追踪捏合/点击 | 清晰的手势提示、容错区域 |
| **眼动交互** | 注视选择 + 确认 | Dwell时间1-1.5s、避免误触 |
| **语音交互** | 语音识别命令 | 备选方案、噪音环境退化 |
| **全身追踪** | 额外追踪器/摄像头 | 社交VR、舞蹈游戏 |
**UI设计特殊要求:**
- 距离: 0.5-3米,最佳1-2米
- 尺寸: 最小可读文字对应视角 >0.5°
- 曲率: 大面板应轻微弯曲包裹视野
- 锚定: 世界锚定(固定位置) vs 头部锚定(跟随) vs 身体锚定(胸前)
---
## 4. AR/MR 设计
### 4.1 空间计算基础
| 能力 | 技术 | 应用 |
|------|------|------|
| **空间映射** | SLAM、深度相机 | 理解房间几何、放置虚拟物体 |
| **平面检测** | 水平/垂直面识别 | 桌面游戏、墙上挂画 |
| **遮挡** | 深度图融合 | 虚拟物体被真实物体遮挡 |
| **光照估计** | 环境光颜色/强度/方向 | 虚拟物体与真实光照匹配 |
| **锚点持久化** | 空间坐标保存 | 下次进入同一空间物体仍在 |
| **手势追踪** | 计算机视觉 | 无手柄交互 |
| **眼动追踪** | IR相机 | 注视交互、注视点渲染 |
### 4.2 MR 设计原则 (Apple Vision Pro / Quest 3)
| 原则 | 说明 |
|------|------|
| **尊重用户空间** | 不突然占据整个视野,默认窗口化 |
| **深度层次** | 内容按重要性分层,重要内容更近 |
| **真实光照匹配** | 虚拟内容接受真实环境光照 |
| **阴影接地** | 虚拟物体投射到真实地面的阴影 |
| **Passthrough优先级** | 用户随时可见真实世界 |
| **社交在场** | 显示用户眼睛(Persona/EyeSight) |
### 4.3 共享空间 (Shared Space) vs 全沉浸
| 模式 | 特点 | 适用 |
|------|------|------|
| **窗口 (Window)** | 2D/3D内容像悬浮窗口 | 多任务、生产力、轻游戏 |
| **体积 (Volume)** | 3D内容在共享空间中 | 棋盘游戏、模型查看 |
| **空间 (Space)** | 全沉浸替换环境 | 游戏、影院、冥想 |
| **多用户共享** | 多人看到同一虚拟内容 | 协作、社交、派对游戏 |
---
## 5. 性能优化
### 5.1 VR 性能预算
| 指标 | 最低要求 | 良好 | 优秀 | 说明 |
|------|----------|------|------|------|
| **帧率** | 72fps | 90fps | 120fps | 绝不允许掉帧 |
| **每帧GPU时间** | <13.9ms | <11.1ms | <8.3ms | 含渲染+后处理 |
| **Draw Calls** | <100 | <50 | <30 | 单眼 |
| **三角面数** | <200K/眼 | <100K/眼 | <50K/眼 | 视锥内 |
| **纹理内存** | <1GB | <500MB | <300MB | 总和 |
| **Overdraw** | <3层 | <2层 | <1.5层 | 像素填充 |
### 5.2 注视点渲染 (Foveated Rendering)
| 技术 | 原理 | 节省 | 要求 |
|------|------|------|------|
| **固定注视点** | 屏幕中心高分辨率,边缘降低 | 20-30% | 无额外硬件 |
| **眼动追踪注视点** | 跟随真实注视点降低周边分辨率 | 50-70% | 眼动追踪硬件 |
| **动态分辨率** | 根据GPU负载调整整体分辨率 | 10-30% | 软件实现 |
**实现注意:**
- 边缘降采样需配合抗锯齿(TAA)隐藏锯齿
- 降采样区域需要逐渐过渡,不能有明显边界
- 注视点区域至少10°视角直径
### 5.3 单帧渲染优化
```
VR单帧流程(以90fps为例,11.1ms预算):
1. 游戏逻辑更新 (1-2ms)
2. 并行渲染准备 (culling, sorting)
3. 左眼渲染 (3-4ms)
- 阴影贴图
- 不透明物体 ( front-to-back )
- 透明物体 ( back-to-front )
- 后处理 ( tone mapping, but no heavy AA )
4. 右眼渲染 (2-3ms) — 通常复用左眼部分计算
5. 畸变/ Timewarp (1ms)
6. 输出到头盔 (0.5ms)
```
**双眼优化:**
- 阴影贴图、环境贴图双眼共享
- 遮挡剔除结果复用
- 立体实例化渲染 (Stereo Instancing / Multi-View)
---
## 6. 开发与测试
### 6.1 开发工作流
| 阶段 | 工具 | 注意 |
|------|------|------|
| **原型** | Unity XR Interaction Toolkit / Unreal VR Template | 先用简易几何验证交互 |
| **开发** | 引擎XR插件 + 头显设备 | 频繁真机测试,不能只在编辑器 |
| **迭代** | 快速构建到设备 | Quest用Link/AirLink加速 |
| **测试** | 自动化性能测试 + 用户测试 | 收集帧时间、温度、电池 |
| **发布** | 平台商店 (Quest Store/PSN/Steam) | 通过平台性能/舒适审核 |
### 6.2 无头显开发辅助
| 方法 | 工具 | 局限 |
|------|------|------|
| **编辑器模拟** | Unity XR Device Simulator | 无真实体感、延迟感 |
| **视频透传** | 捕获头显画面到显示器 | 开发者仍需戴头显 |
| **桌面镜像** | Quest Cast / SteamVR View | 便于团队观察 |
| **自动化测试** | 录制输入回放 | 无法测舒适度 |
### 6.3 用户测试要点
| 测试项 | 方法 | 通过标准 |
|--------|------|----------|
| **舒适度** | 30分钟连续使用问卷 | <10%报告不适 |
| **帧率稳定性** | 自动化帧时间捕获 | 99%帧达标率 |
| **交互误操作** | 观察新手首次使用 | 核心操作无需提示完成 |
| **IPD适配** | 测试不同瞳距用户 | 58-72mm范围清晰 |
| **续航/发热** | 满电连续游玩 | 满足标称续航的80% |
---
## 7. 最佳实践清单
- [ ] **帧率优先** — VR必须稳定达标帧率,画质可妥协
- [ ] **传送默认** — 默认传送移动,平滑移动为选项
- [ ] **舒适选项** — 提供vignette、固定参照物、FOV缩减选项
- [ ] **真实比例** — 虚拟物体按真实世界尺寸
- [ ] **交互反馈** — 所有交互有视觉+音频+触觉确认
- [ ] **安全边界** — 尊重Guardian边界,出界前警告
- [ ] ** seated/standing/roomscale** — 支持多种游玩空间
- [ ] **快速启动** — 从戴头显到游戏 < 30秒
- [ ] **Passthrough切换** — 双击头显或按钮快速看真实世界
- [ ] **社交尊重** — 显示用户是否在VR中(Quest LED / EyeSight)
- [ ] **云游戏适配** — 如果做云版本,降低输入延迟为最高优先级
- [ ] **跨平台输入** — 同一游戏支持手柄、手势、眼动多种方式
---
> 评分: 80/100
> 完整性: 云游戏架构、延迟优化、VR设计、AR/MR、性能、开发流程
> 改进空间: 可补充Unity XR Toolkit和Unreal VR的具体项目设置步骤