概述
目前有2种网络游戏拓扑结构:Peer to Peer和Client/Server模式。在RTS类型的游戏中大都使用Peer to Peer的帧锁定同步算法(如红警、帝国时代、war3等)。目前主流引擎都自带的是Client/Server模式的服务器(如Unity3d, UE4等)。在此推荐《multiplayer game programming》,该书对帧同步算法和CS模式的同步都有详细的阐述;并且该书介绍的对象同步思路与ue4的思路类似。
本文只对CS模式下的运动同步进行总结,CS模式下,server是绝对的权威,一切以server为准。
记住:延迟是无法消除的,要尽可能地隐藏延迟,让玩家具有良好的体验。
先定义一个符号:
运动状态 S: S表示某个运动状态(如位置、速度、转速等)
操作事件 I: I表示运动输入命令事件(如 加速度、立即停止、力等)
突发事件 E: 如受到阻挡、炮弹冲击等非人为直接输入。
0. Round Trip Time(RTT)
1. 哑终端方式(dump terminal)
类似早期的终端,只发送键盘和鼠标输入给服务器,客户端不具有逻辑计算功能。