8.5 KiB
8.5 KiB
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。
三、项目目录规划
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 发布
五、整体开发路线图
第一阶段
██████
工程搭建
第二阶段
██████
人物控制
第三阶段
████████
枪械系统
第四阶段
█████
射击命中
第五阶段
███████
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,学习现代游戏开发全流程;再在此基础上逐步演进,最终打造属于自己的原创游戏。