帧同步的基本流程
程序员文章站
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)帧同步可以理解为做单机游戏;
上一篇: Android动画详解(属性动画、视图动画和帧动画)
下一篇: 帧同步控制下的子弹