在我们玩的多人对战游戏中,游戏的每一方客户端需要保持每一个时刻大家的数据是一致的,常见的同步方式分为帧同步和状态同步。帧同步服务器不需要知道游戏逻辑,只是将客户端的操作进行转发,然后客户端自己计算逻辑。比如我们常玩的《王者荣耀》使用的就是这样的技术,那么作为 Unity3D游戏开发人员,我们应该如何去实现这样的功能呢?且听千锋讲师和你说。
帧同步实现流程
设定游戏的逻辑帧率和关键帧率,在这我们假定游戏1s执行20个逻辑帧,每5帧是一个关键帧。
服务器1s向客户端广播所有的关键帧,在这,服务器每1s向客户端广播4次关键帧,每次广播内容为上一个关键帧到这一个关键帧之间玩家的所有操作。
客户端收到服务器广播的关键帧后,开始执行所有的帧操作,例如A在第7帧要执行移动命令。如果这段时间没有任何操作,意味着这段时间玩家没有操作。游戏每一帧都要执行正常的游戏逻辑,该回血的回血,该攻击的攻击,跟关键帧是否携带操作信息没有关系,只要收到关键帧,则一直执行到当前收到的最大关键帧为止。
客户端的每次操作不会立即生效,而是上传给服务器,客户端执行操作的时间以收到服务器发送的为准,服务器保证的是所有客户端都以同一帧执行该操作。
如果你想学习到系统的Unity游戏开发技巧,可以来千锋教育Unity开发培训班。千锋Unity游戏开发培训课程深入教学的图形技术,讲解包括OpenGL渲染管线,着色器,高光计算、菲尼尔色散、雾方程式等高阶课程。对于从事过Unity游戏开发的人员也具有相当的学习价值。
相关文章
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱