游戏中的帧同步是一种客户端与服务器的同步方式,是为了实现高实时性的需求而设计的。在实时pvp游戏中,要求每个客户端高度同步,怎么做到精确的同步呢,那就是向同步的所有客户端广播同步消息。由于网络存在延迟,因此一个客户端发送消息给服务器的过程存在延迟,服务器广播同步消息给其他客户端也存在延迟,为了降低这个延迟,服务器应该尽量减少逻辑,快速地转发消息让客户端能够同步,因此在帧同步中,游戏的逻辑计算应该放到客户端来实现,服务器在收到消息后应该迅速地进行广播,而不应该做过多的逻辑计算。既然是客户端进行计算,那客户端在实现用户操作后,把操作后的状态进行同步可行不可行呢?答案是不可行,因为如果客户端先对用户指令进行计算再同步状态的话,状态信息到达其他客户端有一个网络延迟,这个延迟会导致收到消息的客户端的逻辑会滞后于发送消息的客户端。为了消除网络延迟,让所有客户端都同步显示,客户端应该发送的消息是一个指令集,指令集表示一个客户端进行了什么操作,然后这个指令集广播给所有客户端,假如所有客户端网络延迟差距不大,那么各个客户端收到指令的时间应该是非常接近的,客户端收到指令后进行逻辑计算,同样的计算得到同样的逻辑结果,这样就实现了各个客户端的同步显示。这里为了达到同样的计算得到同样结果的目的,对于随机数,我们应该保证各个客户端种子相同。游戏中玩家的操作指令集转化为网络数据流往往是比较小的,因此为了提高网络利用率,我们应该使得多个指令集转化为一个数据包进行发送,因此服务器在收到客户端指令后应该缓存起来,等待一个时间和其他指令集一起广播给其他客户端。这个时间叫做一个帧,因此这个同步过程取名为帧同步。由于帧同步是不同步状态,只同步指令的,因此对于每个客户端来说为了同步,必须收到和其他客户端同样的指令集,不能有指令集丢失的情况发生,因为一旦指令集不同,计算得出的结果显示就不同,各个客户端自然就不同步。所有在网络传输的时候我们要选择有重传机制的通信协议,如tcp或udp+kcp。假如网络很差,导致客户端断线了,那么当断线客户端重连的时候,为了与其他客户端同步,他需要知道其他客户端在他断线的时间内做了什么操作,所以服务器应该把他断线期间内所有的指令都发给重连的客户端,因此服务器需要缓存所有指令,直到帧同步结束。
什么是游戏中的帧同步
时间: 2024-11-20 22:42:21
什么是游戏中的帧同步的相关文章
游戏中的网络同步机制——Lockstep(帧同步)
本文来自: https://bindog.github.io/blog/2015/03/10/synchronization-in-multiplayer-networked-game-lockstep/#top 值得参考文章:https://blog.codingnow.com/2018/08/lockstep.html 可参考的项目工程:https://github.com/CraneInForest/LockStepSimpleFramework-Shared 0x00 前言 每个人或多或
让蔡徐坤来教你实现游戏中的帧动画(下)
拖了将近一个月,终于把帧动画这部分写完了,新关注的或者已经忘记的小伙伴可以看一下之前写的部分: 让蔡徐坤来教你实现游戏中的帧动画(上) 让蔡徐坤来教你实现游戏中的帧动画(中) ? 今天这个还是在上一篇的基础上进行修改的,主要讲解的如何在帧动画中添加事件,Cocos Creator 提供了两种添加事件的方式:可视化编辑帧事件和动态注册帧事件,下面将对这两种方式分别介绍. 没看过官方文档的小伙伴建议先熟悉一下官方文档哦! https://docs.cocos.com/creator/manual/z
位同步(比特同步)和帧同步的区别是什么?
在数据通信中最基本的同步方式就是“位同步”(bit synchronization)或比特同步.比特是数据传输的最小单位.位同步(比特同步)是指接收端时钟已经调整到和发送端时钟完全一样,因此接收端收到比特流后,就能够在每一位的中间位置进行判决(如下图所示).位同步(比特同步)的目的是为了将发送端发送的每一个比特都正确地接收下来.这就要在正确的时刻(通常就是在每一位的中间位置)对收到的电平根据事先已约定好的规则进行判决.例如,电平若超过一定数值则为1,否则为0. 但仅仅有位同步还不够.因为数据要以
Unity3D RTS游戏中帧同步实现
帧同步技术是早期RTS游戏常用的一种同步技术,本篇文章要给大家介绍的是RTX游戏中帧同步实现,帧同步是一种前后端数据同步的方式,一般应用于对实时性要求很高的网络游戏,想要了解更多帧同步的知识,继续往下看. 一.背景 帧同步技术是早期RTS游戏常用的一种同步技术.与状态同步不同的是,帧同步只同步操作,其大部分游戏逻辑都在客户端上实现,服务器主要负责广播和验证操作,有着逻辑直观易实现.数据量少.可重播等优点. 部分PC游戏如帝国时代.魔兽争霸3.星际争霸等,Host(服务器或某客户端)只当接收到所有
游戏中帧同步的实现
简介 帧同步是一种前后端数据同步的方式,一般应用于对实时性要求很高的网络游戏,常见于dota类和RTS类游戏,如端游中的dota,dota2,梦三国等:手游中的王者荣耀,自由之战等. 过程 帧同步的过程可以简述为: 各客户端实时上传操作指令集; 服务端保存这些操作指令集,并在下一帧将其广播给所有客户端; 客户端收到指令集后分别按帧序执行指令集中的操作. 示例 目前我们正在做的是一款格斗手游,下面是我们项目中使用的同步算法主要伪代码: 1 各客户端实时上传操作指令集 def op_fun(): n
帧同步在竞技类网络游戏中的应用
帧同步在竞技类网络游戏中的应用 帧同步在网上可以搜的资料比较少,关于游戏的更是没有,不过,实现的原理也比较简单,最近几天就写了份关于帧同步的文档,当作给同事扫扫盲,顺便也在这里发发,可以给其他人参考参考 --竞技类网络游戏设计方案 一. 前言 帧同步,根据wiki百科的定义是,一种对同步源进行像素级同步显示的处理技术,对于网络上的多个接入者,一个信号将会通过主机同步发送给其他人,并同步显示在各个终端上.同步信号可以是每帧的像素数据,也可以是影响数据变化的关键事件信息.
手游帧同步的研究
网络游戏的同步可以做的很简单,也可以做的很复杂.简单来说就是通过Http或者Socket来跟服务器同步数据.而如果往复杂了说,可以有p2p.帧同步.航位预测等等高级课题可以研究. 因为我们的项目需求----几百个独立单位的实时同步(带pvp的rts),所以研究了下帧同步.不过后来发现它其实有很多问题,所以具体如何还要看其他同事的研究成果.以我个人来说,修改游戏方案反而是最合理的解决方案. 首先从需求上来说,几百个独立单位的作战,本身结果和士兵强弱从策划的角度来看就是不可控制的.玩家更加不可控制.
Unity 3D实现帧同步技术
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解>电子工业出版社等. CSDN视频网址:http://edu.csdn.net/lecturer/144 现在竞技类网络游戏比较火,市面上也出现了很多这种类型的游戏竞赛,提到网络游戏就回避不了一个问题:同步技术,多个人在一个游戏场景围攻一个怪物或者说多人组队战斗等等.现在在移动端的游戏由
游戏中逻辑线程和逻辑线程的并行
为什么要将游戏的渲染线程和逻辑线程分离? 游戏中渲染是一个非常耗时的操作,特别是相对复杂的游戏,渲染通常会占据一帧中的大部分时间.而高品质的游戏都会要求FPS在60,所以一帧的时间仅仅16毫秒. 如果要在16毫秒内完成逻辑和渲染双重的任务,对于大型游戏来说,通常是艰难的,即使在极度优化的情况下,也可能只能满足性能较好的设备,在性能较差的设备上,几乎不可能在16毫秒内完成所有任务. 所以如果将渲染线程和逻辑线程分离,那么理论上,他们各自都有16毫秒的时间来完成各自的任务,因为他们是并行进行的,这样