网站大量收购独家精品文档,联系QQ:2885784924

chapter12 网络游戏编程.pptx

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chapter12 网络游戏编程.pptx

第12章 网络游戏编程浙江大学软件学院梁秀波Email:mailto:liangxb@liangxb@主要内容网络游戏的基本架构网络游戏通信协议网络游戏多线程编程常见的游戏开发网络框架Cocos2d-x中的网络通信游戏实例——坦克大战网络版小结网络游戏的基本架构网络游戏的通信传输结构封装层:基本数据类型的读写传输层:数据压缩和加密应用层:发送和接收封装好的数据包网络游戏的基本架构对等通信结构(peer-to-peer)网络游戏的最常见的基本架构对等通信结构图示网络游戏的基本架构会话大厅架构网络游戏的另一种架构是基于游戏大厅代理的架构,为不同玩家牵线搭桥,既直接管理客户端,也管理游戏局,是回合制网络游戏的常见类型。网络游戏的基本架构会话大厅架构图示网络游戏的基本架构客户端 / 服务器架构特别适合于多人同时在线游戏,如RPG,成千上万人进行同一场游戏。在服务器上有完整的游戏世界模型,玩家在客户端去观察和操纵这个世界,并与之互动。网络游戏的基本架构客户端 / 服务器架构图示网络游戏的基本架构客户端 / 服务器架构示例一个典型的基于C/S架构的回合制游戏的运行流程如图网络游戏通信协议定义游戏通信协议是在网络模型的应用层定义的一个高层通信协议,类似于FTP和SMTP协议等,使得网络游戏的客户端和服务器端程序通过预先设定好的格式传输数据。网络游戏通信协议例子——简单邮件传输协议过程客户端与服务器建立TCP连接客户端发送HELLO命令标识发件人身份客户端发送MAIL命令,服务器以OK应答客户端发送RCPT命令,标识电子邮件接收人客户端发送“.”,表示会话结束客户端发送QUIT命令,结束会话 网络游戏通信协议游戏通信协议特点根据游戏开发者主观要求制定通信协议的要求并不严格游戏通信协议常用组织方式XMLJSON网络游戏通信协议游戏通信协议结构 - XMLData 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——多进程单线程网络通讯、业务逻辑和数据存储等由不同的进程处理各进程只有单个线程,并发性强允许不能进程分布于不同服务器适用于大型网络游戏网络游戏多线程编程多线程例子 maintestThread() { CCLOG(in my thread); } std::thread threadTest(HelloWorld::testThread,this);Std::cout “main thread” endl网络游戏多线程编程常见网络库——Boost asio(高性能网络开发库)具有稳定的跨平台特性方便的服务器扩展机制易于使用提供了高层次的抽象 网络游戏多线程编程常见网络库——RakNet(跨平台开源C++网络引擎) - 高性能 - 容易使用,在线用户手册全面 - 扩平台,多平台支持良好 - 在线技术支持 - 安全传输,自动使用SHA1、AES128、SYN 网络游戏多线程编程常见网络库——Pomelo(开源的Node.js服务器框架)快速、易上手高可伸缩的多进程架构方便的服务器扩展机制方便的请求、响应、广播、服务器通讯机制注重性能,在性能、可伸缩性上做了大量测试优化 Cocos2d-x中的网络通信——HTTPHTTP网络通信简介HTTP是超文本传输

文档评论(0)

cai + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档