一、同步

所谓同步,就是要多个客户端表现效果是一致的,例如我们玩王者荣耀的时候,需要十个玩家的屏幕显示的英雄位置完全相同、技能释放角度、释放时间完全相同,这个就是同步。就好像很多个人一起跳街舞齐舞,每个人的动作都要保持一致。而对于大多数游戏,不仅客户端的表现要一致,而且需要客户端和服务端的数据是一致的。所以,同步是一个网络游戏概念,只有网络游戏才需要同步,而单机游戏是不需要同步的。

二、状态同步和帧同步的区别

最大的区别就是战斗核心逻辑写在哪,状态同步的战斗逻辑在服务端,帧同步的战斗逻辑在客户端。战斗逻辑是包括技能逻辑、普攻、属性、伤害、移动、AI、检测、碰撞等等的一系列内容,这常常也被视为游戏开发过程中最难的部分。由于核心逻辑必须知道一个场景中的所有实体情况,所以MMO游戏(例如魔兽世界)就必须把战斗逻辑写在服务端,所以MMO游戏必须是状态同步的,因为MMO游戏的客户端承载有限,并不能把整张地图的实体全部展现出来(例如100米以外的NPC和玩家就不显示了),所以客户端没有足够的信息计算全图的人的所有行为。
具体到客户端和服务端通信上,在状态同步下,客户端更像是一个服务端数据的表现层,举个例子,一个英雄的几乎所有属性(例如血量、攻击、防御、攻速、魔法值等等)都是服务端传给客户端的,而且在属性发生改变的时候,服务端需要实时告诉客户端哪些属性改变了,客户端并不能改变这些属性,而是服务端传来多少属性就显示多少属性(虽然可以改变客户端数值达到表现上的效果,例如无限血量,但是服务端那边的血量属性为0时,一样要死)。再举个例子,一个英雄要释放一个非指向性技能(例如伊泽瑞尔的Q),具体的过程就是,客户端通知服务端“我要释放一个技能”-》服务端通知客户端“在某地以什么方向释放某技能”-》客户端根据这些信息创建一个特效放在某地,然后以某个方向飞行-》服务端根据碰撞检测逻辑判断到某个时刻,这个技能碰到了敌方英雄,通知客户端-》客户端根据服务端信息,删除特效,被打的英雄减血同时播放受击特效。
而在帧同步下,通信就比较简单了,服务端只转发操作,不做任何逻辑处理。以下图为例:

现在同一局里有4个玩家,也就是4个客户端,这时客户端A释放了一个技能x,此时将操作传递给服务端,服务端不做任何判断,直接把A的操作全部分发给ABCD,则ABCD同时让客户端A控制的英雄释放技能x。

三、流量

状态同步比帧同步流量消耗大,例如一个复杂游戏的英雄属性可能有100多条,每次改变都要同步一次属性,这个消耗是巨大的,而帧同步不需要同步属性;例如释放一个技能,服务端需要通知客户端很多条消息(必须是分步的,不然功能做不了),而帧同步就只需要转发一次操作就行了。

四、回放&观战

帧同步的回放&观战比状态同步好做得多,因为只需要保存每局所有人的操作就好了,而状态同步的回放&观战,需要有一个回放&观战服务器,当一局战斗打响,战斗服务器在给客户端发送消息的同时,还需要把这些消息发给放&观战服务器,回放&观战服务器做储存,如果有其他客户端请求回放或者观战,则回放&观战服务器把储存起来的消息按时间发给客户端。

五、安全性

状态同步的安全性比帧同步高很多,因为状态同步的所有逻辑和数值都是在服务端的,如果想作弊,就必须攻击服务器,而攻击服务器的难度比更改自己客户端数据的难度高得多,而且更容易被追踪,被追踪到了还会有极高的法律风险。而帧同步因为所有数据全部在客户端,所以解析客户端的数据之后,就可以轻松达到自己想要的效果,例如moba类游戏的全图挂,吃鸡游戏的透视挂,都是没办法防止的,而更改数据达到胜利的作弊方式(例如更改自己的英雄攻击力)可以通过服务器比对同局其他人的战斗结果来预防。

六、服务器压力

状态同步服务器压力比较大,因为要做更多运算。

七、开发效率

首先要说,状态同步的游戏占主流,其次就是状态同步开发起来比较难。而帧同步服务器开发难度低,同一套方案可以给很多不同类型的游戏使用,反正都是转发操作;减少了服务端客户端沟通,老实说,没有扯皮的时间,开发效率最起码提高20%,状态同步的方案下,同一个功能至少需要一个客户端和服务端共同完成;PVP和PVE基本用的是同一套代码,做完PVP很容易就可以做单机的PVE。

八、知名游戏

王者荣耀、魔兽争霸3、所有格斗类游戏

九、断线重连

状态同步的断线重连很好做,无非就是把整个场景和人物全部重新生成一遍,各种数值根据服务端提供加到人物身上而已。帧同步的断线重连就比较麻烦了,例如客户端在战场开始的第10秒短线了,第15秒连回来了,就需要服务端把第10秒到第15秒之间5秒内的所有消息一次性发给客户端,然后客户端加速整个游戏的核心逻辑运行速度(例如加速成10倍),直到追上现有进度。

十、注意点

需要保证每次随机的数字都相同,所以需要自己实现一套随机数,不能用unity自带的那个随机数接口,而且需要服务端发送相同的随机种子;因为非常微小的误差就有可能产生蝴蝶效应,所以所有float型的参数必须变成int型,保证计算结果一致。

如有侵权,请及时联系我删除,谢谢!

帧同步和状态同步区别相关推荐

  1. mtk 帧同步_【小松教你手游开发】【面试必读(编程基础)】网络游戏同步方式(帧同步和状态同步)...

    在做网络游戏的时候首先要做的是选择一种同步方式来使用,网上的文章都是说帧同步与状态同步的选择,但是又经常讲的模糊不清,我大概整理了一下,并且有一种我们现在项目用的网络同步方式 状态同步 状态同步就有好 ...

  2. 多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | 帧同步和状态同步

    今天继续开新坑,尽管过了很多 Unix 套接字编程的坑,但是实际还是有很多不同场景和性能的需求,以及最服务器架构的内容也就接触过 preforking 和 master 带 worker 而已. 所以 ...

  3. 【网络同步】浅析帧同步和状态同步

    前言 谈到网络游戏,不可避免要谈到现有两种比较常见的网游同步技术:帧同步和状态同步 说到这两个名词,大家夸夸奇谈,都能讲上些许自己的见解,我反正啥也不懂 这篇文章就打算着重学习一下这两种技术的基础和原 ...

  4. 帧同步与状态同步入门

    帧同步和状态同步是游戏客户端和服务器通信的两种方式: 适合帧同步的情况: 1,网络波动较大,比如移动端网络. 2,追求即是反馈,例如FPS.MOBA,SPT(这是啥游戏?) 3,控制大量单位,RTS( ...

  5. 网络游戏同步方式(帧同步和状态同步)

    在做网络游戏的时候首先要做的是选择一种同步方式来使用,网上的文章都是说帧同步与状态同步的选择,但是又经常讲的模糊不清,我大概整理了一下,并且有一种我们现在项目用的网络同步方式 状态同步 状态同步就有好 ...

  6. 帧同步_帧同步和状态同步该怎么选(上)

    这是一篇拖延了2年多的文章-2017年10月份开始写的,直到这次过年才写完... 前言 随着王者荣耀的崛起,使用帧同步(Lockstep)的游戏也越来越多,关于帧同步和状态同步的讨论争论也有不少,那么 ...

  7. Unity帧同步和状态同步

    帧同步 适用游戏类型 对于延迟要求较高的游戏,例如:FPS游戏, RTS游戏(即时战略游戏)等. 原理 帧同步不同步状态,只同步玩家的操作指令,操作指令包含当前的帧索引.这里最重要的概念就是 相同的输 ...

  8. 游戏帧同步和状态同步

    在网络游戏中,服务器和客户端的同步技术是一个绕不开的话题,也是在技术选型时,首先需要确定的方案.网游中的同步技术主要有两个技术方向,帧同步和状态同步.本文简单讨论了帧同步和状态同步,整理并对比了他们的 ...

  9. 帧同步与状态同步:方案比较

    状态同步:大型的MMOARPG ,比如魔兽世界 帧同步:网络条件好的局域网,比如魔兽争霸,优化过的MMRPG, 比如王者荣耀 相比之下状态同步适用型更广,特别适合复杂度高,延迟要求高,玩家多的游戏,例 ...

  10. 网络游戏中的帧同步与状态同步

    帧同步的基础概念 相同的输入 + 相同的时机 = 相同的输出. 客户端发送操作信息到服务器,服务器收到后转播给所有的客户端,客户端接收服务器的操作信息后计算游戏行为的结果, 然后通过广播下发游戏中各种 ...

最新文章

  1. 如何发布打印机文件夹及ICA 客户端打印机配置工具
  2. EventBus3.0 List事件遇到的坑
  3. ADO.NET入门教程(一) 初识ADO.NET
  4. sonar 质量配置 操作(质量规则)
  5. ES6 Map对象的使用
  6. 主成分分析PCA以及特征值和特征向量的意义
  7. 封装一个信号量集操作函数的工具
  8. 20165236 2017-2018-2 《Java程序设计》结对编程练习_四则运算
  9. 阿里腾讯的正面交锋:支付宝被薅羊毛 137 万依然乐此不疲
  10. 装机必备:借用IDM实现百度云高速下载
  11. 超好用json转excel工具
  12. 微信小程序调出选择好友聊天窗口
  13. 矩阵的转置例题MATLAB,MATLAB特殊矩阵以及矩阵转置
  14. BATH四巨头鼎立,中国云市场将走向何方?
  15. 什么叫弹性计算云服务器,弹性云服务器
  16. 计算机与控制工程学院用英语怎么说,计算机与控制工程学院副院长童向荣老师2017年开学典礼致辞...
  17. 未来计算机畅想英语作文,畅想未来的生活英语作文
  18. 记一次Mysql并发死锁,引出的问题及讨论
  19. WaterMark 1.0
  20. 东周列国志之春秋——简记

热门文章

  1. iPhone, iPad升级ios7正式版教程
  2. 现实困境下的“黑客旅馆”,从繁荣走向倒闭
  3. python条形统计图显示数值_Python+matplotlib+numpy绘制精美的条形统计图
  4. 从零开始使用ZBrush制作同人版Ellie游戏角色模型,这个教程不要错过!
  5. c语言scanf输入丢失问题和分析
  6. Java 静态代理模式_代购
  7. ip地址分类和网段详解
  8. apache配置请求转发
  9. 语音聊天软件LoudTalks 免费
  10. linux 软路由 带机量,Linux 软路由性能测试及分析[图文]