chapter12网络游戏编程.pptxVIP

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章 网络游戏编程 浙江大学软件学院 梁秀波 Email:liangxb@ 网络游戏的基本架构 网络游戏通信协议 网络游戏多线程编程 常见的游戏开发网络框架 Cocos2d-x中的网络通信 游戏实例——坦克大战网络版 小结 主要内容 网络游戏的通信传输结构 封装层:基本数据类型的读写 传输层:数据压缩和加密 应用层:发送和接收封装好的数据包 网络游戏的基本架构 对等通信结构(peer-to-peer) 网络游戏的最常见的基本架构 对等通信结构图示 网络游戏的基本架构 会话大厅架构 网络游戏的另一种架构是基于游戏大厅代理的架构,为不同玩家牵线搭桥,既直接管理客户端,也管理游戏局,是回合制网络游戏的常见类型。 网络游戏的基本架构 会话大厅架构图示 网络游戏的基本架构 客户端 / 服务器架构 特别适合于多人同时在线游戏,如RPG,成千上万人进行同一场游戏。 在服务器上有完整的游戏世界模型,玩家在客户端去观察和操纵这个世界,并与之互动。 网络游戏的基本架构 客户端 / 服务器架构图示 网络游戏的基本架构 客户端 / 服务器架构示例 网络游戏的基本架构 一个典型的基于C/S架构的回合制游戏的运行流程如图 定义 游戏通信协议是在网络模型的应用层定义的一个高层通信协议,类似于FTP和SMTP协议等,使得网络游戏的客户端和服务器端程序通过预先设定好的格式传输数据。 网络游戏通信协议 例子——简单邮件传输协议过程 客户端与服务器建立TCP连接 客户端发送HELLO命令标识发件人身份 客户端发送MAIL命令,服务器以OK应答 客户端发送RCPT命令,标识电子邮件接收人 客户端发送“.”,表示会话结束 客户端发送QUIT命令,结束会话 网络游戏通信协议 游戏通信协议特点 根据游戏开发者主观要求制定 通信协议的要求并不严格 游戏通信协议常用组织方式 XML JSON 网络游戏通信协议 游戏通信协议结构 - XML 网络游戏通信协议 Data Version%Version%/Version // 版本信息 GameName%GameName%/GameName // 游戏名字 GameType%GameType%/GameType // 游戏类型 UserID%UserID%/UserID // 用户ID ...... /Data 游戏通信协议结构 - JSON 网络游戏通信协议 { “Version” : %Version% , “GameName” : %GameName% , “GamaType” : %GameType% , “UserID” : %UserID% } 协议打包 / 解包 注意: 协议打包 / 解包的实现代码应该最大限度地保持通用性和灵活性。 游戏通信协议并不是一个标准的协议,很有可能在游戏开发过程中需要不断地修改和补充,甚至推倒重来。 协议打包/解包程序的编写必须从一开始就尽量做到内核的独立性,只留几个协议相关的外部接口。这样,即使协议发生了很大的变化,打包/解包代码也只需很少的修改即可。 网络游戏通信协议 网络游戏服务器程序主要功能模块 网络通讯 业务逻辑处理 数据存储 守护监控 服务器实现 一般是异步而非同步执行 网络游戏多线程编程 异步执行方式1 ——单进程多线程 网络通讯、业务逻辑和数据存储等由不同的线程处理 各线程处于同一进程,无独立监控进程 架构简单,编码容易 适用于小型网络游戏 网络游戏多线程编程 单进程多线程的缺陷 更能模块集中于同一进程,无法应用分布式架构 各线程状态难以监控,容易出现死锁 单线程出错就容易导致服务器进程崩溃 网络游戏多线程编程 异步执行方式2——多进程单线程 网络通讯、业务逻辑和数据存储等由不同的进程处理 各进程只有单个线程,并发性强 允许不能进程分布于不同服务器 适用于大型网络游戏 网络游戏多线程编程 多线程例子 网络游戏多线程编程 std::thread threadTest(HelloWorld::testThread,this); main Std::cout “main thread” endl testThread() { CCLOG(in my thread); } 常见网络库——Boost asio(高性能网络开发库) 具有稳定的跨平台特性 方便的服务器扩展机制 易于使用 提供了高层次的抽象 网络游戏多线程编程 常见网络库——RakNet(跨平台开源C++网

文档评论(0)

wendan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档