粤嵌教育
gzyueqian
13352868059

Unity培训机构讲解游戏开发中的帧同步是如何实现的?

更新时间: 2020-06-17 16:12:00来源: 粤嵌教育浏览量:7691

    对于开发游戏的人来说,粤嵌科技的小编相信场景里面的每一帧都是要很精确的,只有这样才可以给客户带来很好的体验感,在游戏行业中体验感是十分的重要的。今天粤嵌科技的小编就来和大家一起说在游戏开发中帧同步是如何实现的?要怎么样去实习这些功能的呢?下面就听unity培训机构粤嵌科技给大家讲讲。

unity

  帧同步实现流程


  设定游戏的逻辑帧率和关键帧率,在这我们假定游戏1s执行20个逻辑帧,每5帧是一个关键帧。


  服务器1s向客户端广播所有的关键帧,在这,服务器每1s向客户端广播4次关键帧,每次广播内容为上一个关键帧到这一个关键帧之间玩家的所有操作。


  客户端收到服务器广播的关键帧后,开始执行所有的帧操作,例如A在第7帧要执行移动命令。如果这段时间没有任何操作,意味着这段时间玩家没有操作。游戏每一帧都要执行正常的游戏逻辑,该回血的回血,该攻击的攻击,跟关键帧是否携带操作信息没有关系,只要收到关键帧,则一直执行到当前收到的关键帧为止。


  客户端的每次操作不会立即生效,而是上传给服务器,客户端执行操作的时间以收到服务器发送的为准,服务器保证的是所有客户端都以同一帧执行该操作。


  帧同步原理


  相同的输入 + 相同的时机 = 相同的显示


  客户端接受的输入是相同的,执行的逻辑帧也是一样的,那么每次得到的结果肯定也是同步一致的。为了让运行结果不与硬件运行速度快慢相关联,则不能用现实历经的时间(Time.deltaTime)作为差值阀值进行计算,而是使用固定的时间片段来作为阀值,这样无论两帧之间的真实时间间隔是多少,游戏逻辑执行的次数是恒定的,举例:


  我们预设每个逻辑帧的时间跨度是1秒钟,那么当物理时间经过10秒后,逻辑便会运行10次,经过100秒便会运行100次,无论在运行速度快的机器上还是慢的机器上均是如此,不会因为两帧之间的跨度间隔而有所改变。


  而渲染帧(一般为30到60帧),则是根据逻辑帧(10到20帧)去插值,从而得到一个“平滑”的展示,渲染帧只是逻辑帧的无限逼近插值,不过人眼一般无法分辨这种滞后性,因此可以把这两者理解为同步的.


  如果硬件的运行速度赶不上逻辑帧的运行速度,则有可能出现逻辑执行多次后,渲染才执行一次的状况,如果遇到这种情况画面就会出现卡顿和丢帧的情况.


  如果说你也想要学习关于unity这个方面的知识的话,那么粤嵌科技欢迎大家来我们公司的unity培训班进行实地考察,也可以点击我们文章下面的获取试听资格按钮来获取我们的unity课程免费试听资格,在试听中可以更加深入的了解我们粤嵌科技。

免费预约试听课

推荐阅读