564 lines
8.5 KiB
Markdown
564 lines
8.5 KiB
Markdown
# 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,学习现代游戏开发全流程;再在此基础上逐步演进,最终打造属于自己的原创游戏。**
|