init: init commit
This commit is contained in:
563
doc/项目纲要-参考.md
Normal file
563
doc/项目纲要-参考.md
Normal file
@@ -0,0 +1,563 @@
|
||||
# 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,学习现代游戏开发全流程;再在此基础上逐步演进,最终打造属于自己的原创游戏。**
|
||||
Reference in New Issue
Block a user