帧同步和状态同步
来源:互联网 发布:佳能照片打印机软件 编辑:程序博客网 时间:2024/06/06 17:02
帧同步和状态同步
去英雄互娱面试突然说到了对游戏中的网络实现问题,面试官告诉我两个名词:帧同步和状态同步
小白并不懂所以开贴记录下来
帧同步:
帧同步,根据wiki百科的定义是,一种对同步源进行像素级同步显示的处理技术,对于网络上的多个接入者,一个信号将会通过主机同步发送给其他人,并同步显示在各个终端上。同步信号可以是每帧的像素数据,也可以是影响数据变化的关键事件信息。
帧同步常被RTS(即时战略)游戏常采用。在游戏中同步的是玩家的操作指令,操作指令包含当前的帧索引。一般的流程是客户端上传操作到服务器, 服务器收到后并不计算游戏行为, 而是转发到所有客户端。这里最重要的概念就是 相同的输入 + 相同的时机 = 相同的输出。
状态同步
状态同步:同步的是游戏中的各种状态。一般的流程是客户端上传操作到服务器,服务器收到后计算游戏行为的结果,然后以广播的方式下发游戏中各种状态,客户端收到状态后再根据状态显示内容。状态同步最广泛的应用应该是在回合制游戏中。
状态同步其实是一种不严谨的同步。它的思想中,不同玩家屏幕上的表现的一致性并不是重要指标, 只要每次操作的结果相同即可。所以状态同步对网络延迟的要求并不高。像玩RPG游戏,200-300ms的延迟也可以接受。 但是在RTS游戏中,50ms的延迟也会很受伤。
自我理解
面试官问我魔兽世界和魔兽争霸的不同,通过上述的描述就可以比较清楚的知道:
针对魔兽争霸来说用的是帧同步,首先因为魔兽来说单位特别多,全部都占用服务器资源会很伤,只是广播玩家的操作,不需要计算,对于实时性也会很好,计算需求都在客户端使用。这也体现了我在玩赤潮下的一个问题,赤潮万到后期6个人超多个单位,所有计算都在手机上,渲染什么的都非常卡,特别影响体验,技能也丢不出去,这也是我后来不玩赤潮的主要原因之一。在想后期出安卓版的赤潮,有多少手机带不动。
针对魔兽世界来说用的是状态同步,实时性不是很好,并且占用服务器的资源,但是对于玩家来说屏幕的一致性并不是重要指标,我的每次操作都可以得到正确的结果,对游戏的体验性会好很多。但是在网络环境较差的情况下,使用状态同步,会造成我明明向前走了很多步,突然就会回退到前面的位置,服务器因为网络延迟没有收到你中间的一系列的操作指令。
参考1 http://blog.csdn.net/david_dai_1108/article/details/73437736
参考2 http://blog.sina.com.cn/s/blog_674f1bd20101omv7.html
- 帧同步和状态同步
- 帧同步和状态同步
- 帧同步和状态同步(一)
- 状态同步与帧同步
- 状态同步与帧同步
- 状态同步与帧同步
- 帧同步和状态同步(二)案例分析
- 状态同步和桢同步的区别
- 【面试必读(编程基础)】网络游戏同步方式(帧同步和状态同步)
- 移动游戏 状态同步 帧同步
- 游戏后台状态同步与帧同步
- 比特同步和帧同步的区别
- MySQL主从同步状态
- 病案同步状态修改
- 战斗同步策略之状态同步
- 游戏 场景同步 实现(状态同步)
- 用于应用程序状态同步的方法和设备
- android WebView登录状态session id 和cookie同步
- RBTree——红黑树
- 二维数组动态分配内存
- UE4引擎架构
- 剑指offer 查找二位数组
- 开启分享经济的新时代!消费者也能成为“资本家”
- 帧同步和状态同步
- Useful tips to scrapy web pages with Python(Request)
- 狗宝宝取名大全2018款之提前为宝宝取名好吗
- window7下手动启动MySQL-server
- 21.2 日志格式
- 京东家电决战双11:规模优势下不仅仅是薄利多销
- Java 中的Integer Pool 和 autoboxing-same-value-to-different-objects问题
- Spring 事务基础练习
- JQuery基礎.show();.hide();