Multiplayer-FPS游戏的网络架构
先列出骨架,慢慢填坑
游戏趋势
- 游戏角色GamePlay逻辑日益复杂
- TitanFall:载具
- Overwatch、枪火游侠:技能
- 游戏模式玩法多变、规模变大
- Killzone的玩法模式
- 吃鸡的大规模大逃杀
游戏需求
- 应对复杂的GamePlay
- 世界状态的切换
- Killcam
- 精彩时刻
重点问题
- 响应性:Responsive
- 服务器权威:Server Authority
同步方案的选择
- LockStep的指令同步
- Client-Server的状态同步
Lowlevel的Network
- RUDP的实现
HighLevel的Network
- 类似UNet和Unreal的接口封装
- RPC
- SyncVar
- ECS(服务但不仅限于网络架构)
LocalPlayer的状态预测和确认
- 可靠通道
- 基于Pattern
- 基于Sequence或者Tick
- 两者结合
- 不可靠通道
- Unreal(还未研究)
移动同步
LocalPlayer
- 目的:响应及时,少拉扯
- prediction
- reconciliation
RemotePlayer
- 目的:平滑、少闪现
- Dead Reckoning
- Entity Interpolation
- 引入Interpolation Delay(IND)
HitReg
- 由于引入IND的延迟补偿
- Rewind机制
目标
- 不断填充Network架构的内容
- 不断细化每个内容
- 讨论并实现每个细节