同步

转载 2017年01月03日 12:33:08


主流的同步方案有两种:帧同步和CS同步。
正好这两天在整理这块的东西,就一并分享一下!也希望能够得到一些讨论的机会。

看到评论,补充一个观点:CS和帧同步其实各有有优缺点,并不是某一项方案一定能够取代另一项方案,当游戏类型对实时性要求很高时(比如,实时格斗、体育竞技类游戏(NBA2K)),帧同步可能就是唯一的方案了。



以下是正式答案

概念定义:


1 ArenaServer

  • 战斗核心逻辑及数据所在
  • 不关心表现
  • 由客户端的输入驱动运行
  • CS同步架构里,这个部分是在服务器的
  • 帧同步架构里,这个部分是在客户端的。


2 ArenaServer[预表现层]

  • 战斗的预表现层,一定在客户端
  • 对于一些需要本地预表现的逻辑,如行走。需要先在这里模拟实现。
  • ArenaServer的真实数据反馈到预表现层后,会修改本地数据。
  • ArenaClient只知道预表现层,并不知道真正的ArenaServer的存在。
  • 所以,当游戏要改变同步方案时,Client层并不需要修改。


3 ArenaClient:ArenaInput+ArenaRender

  • 负责客户端输入和渲染
  • 只与预表现层交互。

4 FrameServer
  • 以每秒30次(假设)的频率,收集各个客户端上报上来的ClientInput。
  • 组装为FrameInput,广播给各个客户端。
  • 即为帧同步的服务器所有逻辑
<img data-rawwidth="611" data-rawheight="710" src="https://pic3.zhimg.com/a58b8ba96f844b3e8f124ad0aae496aa_b.jpeg" class="origin_image zh-lightbox-thumb" width="611" data-original="https://pic3.zhimg.com/a58b8ba96f844b3e8f124ad0aae496aa_r.jpeg">
<img data-rawwidth="618" data-rawheight="799" src="https://pic1.zhimg.com/520e56f53720fd9c308c710d014dc778_b.jpeg" class="origin_image zh-lightbox-thumb" width="618" data-original="https://pic1.zhimg.com/520e56f53720fd9c308c710d014dc778_r.jpeg">


<img data-rawwidth="1410" data-rawheight="694" src="https://pic4.zhimg.com/8a63b07968d3918e2a3c4f7586e8356b_b.jpeg" class="origin_image zh-lightbox-thumb" width="1410" data-original="https://pic4.zhimg.com/8a63b07968d3918e2a3c4f7586e8356b_r.jpeg">

=================================

如何将两个blog的内容自动同步

求解。。。 

适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?  NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。NTP 实现什么目的?  目的很简单,就是为了提供准确时间。...
  • maxsky
  • maxsky
  • 2016年12月25日 02:47
  • 36247

ntp时间同步脚本

  • 2017年11月30日 11:46
  • 3KB
  • 下载

C# Socket 同步和异步通信

  • 2017年11月28日 13:39
  • 343KB
  • 下载

C#远程时间同步助手软件设计

C#远程时间同步助手软件设计 本程序才C#语言开发,实现远程时间同步功能,可以将本地时间每隔一段时间与时间服务器时间进行同步! 软件开发环境:Visual Studio 2010 软件安装简单说明 时...

软件设计师考试同步辅导.pdf

  • 2017年11月16日 11:24
  • 45.81MB
  • 下载

银行取款[多线程]{使用volatile修饰共享变量,但此场景并不保证线程同步}

经典例子:老婆(朱丽叶)老公(罗密欧),使用银行卡和存折,或者网银等,同时对同一账户操作的安全问题。 此处用多线程实现,同时取款的模拟实现,使用volatile修饰共享变量,但此场景并不保证线程同步...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:同步
举报原因:
原因补充:

(最多只允许输入30个字)