# FPS 多人联机 Demo 开发纲要（Unity + C#）

> **项目代号：Project Mercury（暂定）**
> 
> **项目定位：**
> 
> 一个用于学习 FPS 游戏开发全流程的多人联机 Demo，以 CS2 为参考对象，学习现代 FPS 游戏开发架构与技术，为后续原创游戏《未来之城》积累技术基础。

---

# 一、项目目标

## 技术栈

| 模块   | 技术选型                                            |
| ---- | ----------------------------------------------- |
| 游戏引擎 | Unity 6（URP）                                    |
| 编程语言 | C#                                              |
| 网络同步 | Netcode for GameObjects（后续可迁移 Mirror / FishNet） |
| 后端服务 | Spring Boot                                     |
| 数据库  | MySQL                                           |
| 缓存   | Redis                                           |
| 登录认证 | JWT                                             |
| 通信   | HTTP + WebSocket                                |
| 版本管理 | Git                                             |
| 美术工具 | Blender、ProBuilder                              |
| IDE  | JetBrains Rider / Visual Studio                 |

---

# 二、开发目标

## Demo 功能

- 第一人称射击
- 多人联机
- AI Bot
- 基础枪械
- 一张完整地图
- UI 系统
- 音效系统
- 登录大厅
- 房间系统

最终形成一个可以正常游玩的 FPS Demo。

---

# 三、项目目录规划

```text
Assets
├── Art
├── Audio
├── Materials
├── Models
├── Prefabs
├── Scenes
├── ScriptableObjects
├── Scripts
│   ├── Core
│   ├── Player
│   ├── Weapon
│   ├── Enemy
│   ├── Network
│   ├── UI
│   ├── Manager
│   ├── Utils
│   └── Editor
├── Shaders
└── StreamingAssets
```

---

# 四、开发阶段

---

# 第一阶段：项目基础框架

## 周期

**预计：2 周**

## 学习内容

- Unity 工程规范
- Git 工作流
- Input System
- ScriptableObject
- Addressables
- 游戏初始化流程
- 场景管理

## 实现目标

- 创建 Unity 项目
- 主菜单
- 设置菜单
- 游戏入口
- 摄像机系统
- 工程目录规范

## 阶段成果

✅ 可以正常进入游戏。

---

# 第二阶段：第一人称角色

## 周期

**预计：2~3 周**

## 学习内容

- Character Controller
- Rigidbody
- 输入控制
- 摄像机控制
- 动画状态机

## 实现功能

- WASD 移动
- 鼠标视角
- 跳跃
- 下蹲
- 冲刺
- 重力
- 台阶处理
- 坡道处理
- （可选）滑步

## 阶段成果

实现类似 CS 的人物移动手感。

---

# 第三阶段：枪械系统

## 周期

**预计：3 周**

## 学习内容

- Raycast
- 武器架构设计
- ScriptableObject 配置
- 动画
- 特效

## 枪械

- AK
- M4
- USP
- Knife

## 实现功能

- 射击
- 后坐力
- 子弹扩散
- 换弹
- 子弹数量
- 枪口火焰
- 抛壳
- 枪械动画
- 准星

## 阶段成果

完成基础枪械系统。

---

# 第四阶段：命中检测

## 周期

**预计：2 周**

## 学习内容

- Raycast
- Layer
- Collider
- Physics

## 实现功能

- 爆头
- 身体伤害
- 命中特效
- 命中音效
- 木材反馈
- 金属反馈
- 玻璃反馈

## 阶段成果

完成完整射击反馈。

---

# 第五阶段：AI 敌人

## 周期

**预计：3 周**

## 学习内容

- NavMesh
- FSM（有限状态机）
- AI 行为树（后续）

## 实现功能

- 巡逻
- 搜索
- 追击
- 射击
- 死亡
- 重生

## 阶段成果

可以进行单人 PVE。

---

# 第六阶段：地图制作

## 周期

**预计：3 周**

## 学习内容

- ProBuilder
- Blender
- 光照
- LOD
- Occlusion Culling

## 实现功能

制作第一张地图。

参考：

- Dust2
- Mirage（简化）

## 阶段成果

拥有完整可玩的地图。

---

# 第七阶段：UI 系统

## 周期

**预计：2 周**

## 实现内容

- 血量
- 护甲
- 子弹数量
- 准星
- 设置菜单
- 暂停菜单
- 死亡界面
- 排行榜

---

# 第八阶段：音效系统

## 周期

**预计：1 周**

## 实现内容

- 枪声
- 脚步
- 环境音
- Hit Sound
- 混响
- 方向音

---

# 第九阶段：多人联机

## 周期

**预计：4~6 周**

## 学习内容

- Client/Server
- RPC
- Tick
- Prediction
- Interpolation

## 实现功能

- 玩家同步
- 射击同步
- 血量同步
- 死亡同步
- 房间同步
- 聊天

## 阶段成果

多人在线游玩。

---

# 第十阶段：大厅服务器

## 周期

**预计：3 周**

## 后端

Spring Boot

负责：

- 登录
- 注册
- JWT
- 好友
- 房间
- 匹配

## Unity Server

负责：

- 游戏逻辑
- 玩家同步
- 房间运行

整体架构：

```
客户端
      │
HTTP/WebSocket
      │
Spring Boot
      │
匹配成功
      │
Unity Dedicated Server
      │
多人同步
```

---

# 第十一阶段：游戏模式

## 周期

**预计：3 周**

## 实现玩法

- Death Match
- Team Death Match
- Bot 模式

后续扩展：

- 爆破模式
- 感染模式
- 夺旗模式

---

# 第十二阶段：性能优化

## 周期

**预计：2~4 周（持续进行）**

## 优化内容

- Object Pool
- Addressables
- GPU Instancing
- LOD
- Occlusion
- GC 优化
- Profiler 分析
- 内存优化

---

# 第十三阶段：发布

## 周期

**预计：2 周**

## 实现内容

- Windows 打包
- 自动更新
- Crash 日志
- 配置管理
- 版本管理

后续：

- Steam 发布

---

# 五、整体开发路线图

```text
第一阶段
██████
工程搭建

第二阶段
██████
人物控制

第三阶段
████████
枪械系统

第四阶段
█████
射击命中

第五阶段
███████
AI

第六阶段
███████
地图

第七阶段
█████
UI

第八阶段
███
音效

第九阶段
██████████
多人同步

第十阶段
██████
服务器

第十一阶段
██████
玩法

第十二阶段
████████████
优化

第十三阶段
████
发布
```

---

# 六、整体开发周期

| 阶段    | 内容     | 周期    |
| ----- | ------ | ----- |
| 第一阶段  | 项目框架   | 2 周   |
| 第二阶段  | 第一人称角色 | 2~3 周 |
| 第三阶段  | 枪械系统   | 3 周   |
| 第四阶段  | 命中检测   | 2 周   |
| 第五阶段  | AI 敌人  | 3 周   |
| 第六阶段  | 地图制作   | 3 周   |
| 第七阶段  | UI 系统  | 2 周   |
| 第八阶段  | 音效系统   | 1 周   |
| 第九阶段  | 多人联机   | 4~6 周 |
| 第十阶段  | 大厅服务器  | 3 周   |
| 第十一阶段 | 游戏模式   | 3 周   |
| 第十二阶段 | 性能优化   | 2~4 周 |
| 第十三阶段 | 打包发布   | 2 周   |

---

# 七、预计总开发周期

| 开发模式            | 预计时间     |
| --------------- | -------- |
| 全职开发            | 8~10 个月  |
| 业余开发（每天 2~3 小时） | 12~18 个月 |

---

# 八、开发原则

整个项目遵循以下开发流程：

## ① 学习原理

了解每个模块的底层原理和设计思想。

## ② 实现最小可运行版本（MVP）

先实现核心功能，确保功能可用。

## ③ 功能迭代

逐步增加动画、音效、特效、交互体验等细节。

## ④ 代码重构

每完成一个阶段，整理项目结构，优化代码设计，减少技术债。

## ⑤ 文档沉淀

记录开发过程中的设计思路、踩坑经验和解决方案，形成完整的项目文档。

---

# 九、最终目标

完成本项目后，将具备以下能力：

- 熟悉 Unity 游戏开发全流程
- 掌握现代 FPS 游戏架构设计
- 掌握 C# 面向对象开发
- 理解多人联机同步原理
- 熟悉客户端与服务器协同开发
- 具备完整游戏项目开发经验
- 为原创游戏《未来之城》的开发奠定坚实基础

> **一句话总结：**
> 
> **先做一个"能玩、能联机、结构合理"的 FPS Demo，学习现代游戏开发全流程；再在此基础上逐步演进，最终打造属于自己的原创游戏。**
