[转贴] 网络游戏实时动作同步方案手记(3)

出处 http://blog.csdn.net/akara/article/details/5936744

(2)网上根本找不到,我也试图私信过原作者询问,没有回复。

------------------------------------------------------

基于上面的(1)(2)两篇同步方案知识,可以写个demo来试验同步的效果。

需要找一个p2p库来做系列同步算法的demo。选了RakNet-4.0.Beta5。
  官方网站是http://www.jenkinssoftware.com/
  RakNet提供了如下基于UDP的信道功能:
  > 丢包重发
  > 高效包排序
  > 包数据安全性保证,自动发现并报告被修改的包
  > 流控制和包合并
  > ....
  在频繁发送大量大体积数据包的情况下,可能选择RakNet并不高效;
  但对于选用RakNet制作游戏而言,你总可以优化发送频率和体积。
  RakNet的SDK文档和Demo丰富,接口友好,跨平台,自用免费,商用收费(贵)。

要实现同一副本游戏中各peer间互联,可以用RakNet提供的几种方法:
* 所有Peer在同一局域网内,可进行预定义指令广播来发现peer,
  接到指令的peer来请求连接对方。

* 针对互联网上的普遍情况互联,则要建立几种服务器来实现NAT穿透:

Directory Server
    提供每个副本游戏独立的peers信息表(由其中各peer自己先行提交),
    信息表中包含各peer的ip:port,guid等信息,而每个peer在网络帧中对
    Directory Server的新peer信息进行处理并向NATPunchthroughServer发起
    穿透NAT的请求。
 
    Directory Server在RakNet中有几种形式的实现:
    (1)SQLite plugin
    (2)lobby server
    (3)PHP Directory Server
    可以随便选一种,但写demo简单起见,用PHP Directory Server。
    更方便的是有一个官方的PHP Directory Server可以直接用:)

NAT类型检测Server
    写Demo暂时不建立这个服务。大多数NAT还是可穿透的。

NATPunchthroughServer
    提供NAT穿透服务。即所说的UDP打洞(Punching)技术。
    打洞的大致原理网络上有很多很好的文章可以查阅。
    因为对port的映射方式和持续方式不同,并不是所有的NAT类型都可以穿透。
    具体的NAT类型和是否可以穿透的关系如下表:
    
    据一些调查报告称国内存在约5%的NAT不可穿透。
    但一些P2P VOD的实践者称不可穿透的NAT比例在15%左右。
    所以当peer间无法进行NAT穿透时,UDPProxyCoordinator + UDPProxyServer
    便是终极方案,虽然成本增加,但forwarding总不会有事。
    
  > UDPProxyCoordinator
    UDPProxyServer管理器。一个UDPProxyCoordinator可接多个UDPProxyServer,
    它负责指派UDPProxyServer的信息给peer进行UDP转发,
    也监控各UDPProxyServer的负载情况做负载均衡,
    UDPProxyServer可以动态挂接添加到UDPProxyCoordinator上。
    挂接UDPProxyCoordinator时需要输入UDPProxyCoordinator的挂接密码认证。
  
  > UDPProxyServer
    负责UDP包转发。开发者可以按负载需求增添UDPProxyServer的数量。

---------------------------------------------------------------------

以上的互联结构在我的搭建方案中大致如下图:

 
时间: 2024-11-08 23:03:29

[转贴] 网络游戏实时动作同步方案手记(3)的相关文章

(转) 网络游戏实时动作同步方案手记

和MMORPG不同,实时动作型网络游戏 追求操作的响应要求极高(<150ms).动作型网络游戏的制作人希望做到单机游戏的体验,网络游戏的服务.    网络指令在多客户端间的同步算法,从原理上来说,围绕两种特性的取舍而定:  * 牺牲局部实时性:某程度的互等待,保证各客户端间指令集在指定时间段一致.  * 牺牲局部一致性:容许客户端本机先行模拟,等待后续指令到达纠正.(DR) 网络的存在导致鱼与熊掌不可兼得,所以现在市面上的动作网络游戏都有如下的妥协和折衷实现:  * 在客户端本机上算大量关键运算

[转载] 网络游戏实时动作同步方案手记(1)

出处 http://blog.csdn.net/akara/article/details/5885037 --------------------- 和MMORPG不同,实时动作型网络游戏 追求操作的响应要求极高(<150ms).动作型网络游戏的制作人希望做到单机游戏的体验,网络游戏的服务.    网络指令在多客户端间的同步算法,从原理上来说,围绕两种特性的取舍而定:  * 牺牲局部实时性:某程度的互等待,保证各客户端间指令集在指定时间段一致.  * 牺牲局部一致性:容许客户端本机先行模拟,等

企业实时同步方案----Rsync+Sersync

在博文企业实时同步方案----Sersync介绍中我们详细介绍了Sersync的原理,设计架构以及和 Inotify 等等的优势区别.这里我就带大家一起来做一下 Rsync +Sersync 这个同步分发架构案例. 实验环境介绍: 内核版本:2.6.32-431.el6.x86_64 系统采用最小化安装,系统经过了基本优化,selinux为关闭状态,iptables为无限制模式 源码包存放位置:/root Rsync客户端+Sersync服务器(SERSYNC),承担角色MASTER,IP:17

利用GoldenGate实现Oracle实时同步方案

利用GoldenGate实现Oracle实时同步方案 简介: OracleGolden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步.OracleGolden Gate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统.在线报表.实时数据仓库供应.交易跟踪.数据同步.集中/分发.容灾.数据库升级和移

linux运维、架构之路-实时同步方案

1.inotify+rsync实时同步 1.介绍         inotify-tools是一种强大的.细粒度的.异步的文件系统事件监控机制,可以用来监控文件系统的事件.inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他.inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数. 2.实现原理 3.根据原理进行部署 ①查看系统是否支持inotify [[em

云服务器之间实时文件同步和文件备份的最简单高效的免费方案

 分布于不同云计算中心的多台云服务器,通常需要进行文件同步,以满足业务的需要.传统的文件同步方案,部署繁琐,同步实时性差,无法令人满意. 端端Clouduolc,一款纯p2p方式的文件实时同步和实时备份软件,以最简单.最灵活.最安全的方式,成为广域网上多设备数据同步备份的不二选择.而且部署超级简单,只要10秒钟,不需要精深的专业知识,普通小白用户即可操作.最令人开心的是,它是免费的. 用户只需要到端端Clouduolc的官网,下载最新客户端以后,安装到Windows server上(目前还未

企业实时同步方案----Sersync介绍

Sersync 项目利用 Inotify 和 Rsync 技术实现对服务器数据实时同步的解决方案,其中 Inotify 用于监控 Sersync 所在服务器上文件系统的事件变化,而 Rsync 是目前广泛使用的本地以及异地数据同步工具,其优点是只对变化的目录数据操作,甚至是一个文件不同的部分进行同步,所以其优势大大超过使用挂接文件系统或 scp 等方式进行镜像同步. 目前使用比较多的同步工具为 Inotify-tools 和 Openduckbill.Inotify-tools 在前面的博文介绍

通过rsync+inotify实现文件的实时备份同步

原文参考:http://ixdba.blog.51cto.com/2895551/580280/ http://www.bamaol.com/Psy/Showposts-010000108-5048.html 一,rsync安装 目前rsync的最新版本是3.0.9 wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz tar-xvzfrsync-3.0.9.tar.gz;cdrsync-3.0.9; ./configure;make;

基于SymmetricDS的多主一从数据库同步方案

原文参照:https://blog.csdn.net/seattle0564/article/details/22096901 下面就记录下测试的一款第三方同步方案SymmetricDS(以下简称S)的使用过程,中文资料较少,而且存在一些版本上的差异,导致一些步骤根本不能通过或报错,自己简化了些操作,并没有按照官方的指导操作,鉴于英文水平有限,很多叙述都是基于自己的理解,也请有不同观点的兄弟留言指正或交流. 之所以选择SymmetricDS,大致三个原因: 1.  平台独立.不依赖其他组件包,独