欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

帧同步的基本流程

程序员文章站 2022-03-16 21:41:59
...

1)笔记

1)假设是一个单机游戏,那么用户输入,自己计算得出输出,帧同步是什么呢?

  是服务器接收每个客户端的输入,接收到输入以后呢,

  客户端也不会马上处理,

  服务器会按照固定的操作时序,广播给其它客户端,

  服务器有一个帧,每间隔一段时间,广播一下操作,广播完以后,去接收客户端的操作,
  
  那么当服务器发送一个帧事件给客户端的时候,客户端就处理,
    处理完以后,同时把客户端的当前输入发送给服务器,
    服务器把这个输入缓存起来,然后等下一帧的时候再发出去,
    这个就叫做帧同步

2)我们使用服务器来统一推进统一的这个流程,
  服务器等一下我们所有客户端的每个输入

3)帧同步核心理论: 输入一样,代码一样,就能跑出一样的结果

4)优点:
  (1)服务器比较简单,计算都放在了客户端上.
  (2)传输数据小,手感不错.

5)缺点: 
  容易作弊

6)服务器端的帧率:
  服务器每一帧都要广播给客户端,那么帧率是多少呢?
  一句玩家反映时间为50-100ms,一阵帧率设置为15-20左右,
  说白了就是: 服务器每秒发送15-20的逻辑帧出来,起一个定时器来做即可;

7)整体流程:
  服务器来采集所有客户端的输入,按照固定的时序广播给客户端,

  客户端接收到服务器广播的固定时序,来处理我们的游戏逻辑,
    这个帧带的有所有的用户的输入进来的,
    比如: A玩家往前走,B玩家往后走,其它的玩家往左走,我们先把运算输入进来,
      在本地运算和处理,


  处理完毕以后,我们再把当前用户的下一帧的输入传上去,
    上一帧的所有用户操作处理完了,这个时候我还要把这一帧自己的
    用户操作发送给对应的服务器, 服务器再把这一帧所有的用户操作收集起来,
    等下一帧的时候再广播出来,

  那么服务器就能接着接收客户端的这个输入,这样子不断往前推进,

  第一帧用户都有哪些操作,第二帧用户都有哪些操作,服务器收集起来,
    玩家断线了5s,那么服务器看它从哪一帧断线的,就从这个帧到当前帧的
    这些数据传给我们的客户端,我们的客户端再接收到这些数据之后,再拼命
    的在哪里算算算算算...算完以后,最终同步到服务器上面来

8)假设一个客户端没有收到这个数据包的话,我们由于保存了起来,那么等到你
  再发的时候,我们就知道这个用户这个帧没有处理,我们再把这个帧丢给我们这个用户,
  那么用户重新收到帧的时候,它就是从没有处理的这个帧开始,不断的运算,最后运算
  完我们对应的东西

9)当网络延时,用户的操作没有发送到服务器,会选择忽略;

10)帧同步可以理解为做单机游戏;