DirectPlay编程基础.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在线网络游戏架构 七 DirectPlay编程基础 DirectPlay简介 DirectPlay是DirectX中的一部分,是由微软公司提供的一个独立于网络底层连接的抽象层。 通过DirectPlay,游戏程序不需要知道网络当前的连接状况。DirectPlay通过抽象化通信方法做到这一点。当应用程序使用DirectPlay来实现底层结构联网时,就不必考虑具体使用的联网方法了。 本章主要讨论: 服务提供商 游戏会话 DirectPlay地址 DirectPlay消息处理器 服务供应商( Service Providers?) 服务供应商: DirectPlay中可用的通信方法,如 TCP/IP,通常被称为服务供应商。 通过列举,可以发现有效的服务供应商。 本书中将TCP/IP设置为服务供应商,因为它是最常用的游戏开发协议,并且很适合于互联网。 游戏会话 (Game Sessions) “游戏会话” 是指运行在两个或更多计算机上的多玩家游戏的一个实例。 DirectPlay中的游戏会话类型有两种: 端对端会话类型 客户端/服务器端会话类型 游戏会话 (Game Sessions) 端对端 (Peer-to-Peer) 游戏会话 所有玩家都需要负责与其他玩家之间的指令通信。 一个显而易见的问题是较大的网络流量。 仍然使用了一个服务器,被称为“主机”,负责: 提供一个连接中心,接收新玩家进入游戏。 监视谁在游戏中 当新玩家加入到游戏中,通知每一个玩家 当一个玩家离开游戏时,通知每一个玩家 接收或拒绝新玩家加入到游戏 除了主机,其他的端都必需建立一个连接,以参与到一个端对端会话中。 游戏会话 (Game Sessions) 客户端/服务器端(Client/Server, C/S)会话 服务器负责所有游戏间的通信。客户端只与服务器“交谈”,而不与其他客户端“交谈”。 服务器作为一个独立的控制台应用程序运行,不必处理图形。 服务器需要设置一个可供玩家连接的端口 客户端首先定位所要连接的服务器,然后建立连接。客户端只能向服务器发送或接收数据包,而不能发送包到其他玩家或接收来自其他玩家的包。 DirectPlay地址 用DPlay,则必须创建一个能包含各类信息的特殊地址。 DPlay地址中可以包含大量信息。 创建DirectPlay的地址,需要多个步骤,主要包括: 创建地址对象 设置地址对象的服务供应商 设置地址对象中的组件 DirectPlay地址 1.创建地址对象 首先必须创建IDirectPlay8Address接口对象 hReturn = CoCreateInstance(CLSID_DirectPlay8Address, NULL, CLSCTX_INPROC_SERVER, IID_IDirectPlay8Address, (LPVOID*)g_pHostAddress ); if( FAILED(hReturn) ){ MessageBox( hWindow, “Failed to Create Host Address()”, “Invalid Param”,MB_ICONERROR); return -l; } DirectPlay地址 2.设置地址对象的服务供应商 使用CoCreateInstance()函数创建了地址对象,但所创建的只是一个空地址。为地址准备它所要包含的数据类型,必须先设置它使用的服务供应商。 //将主机地址设置为TCP/IP if ( FAILED (hReturn = g_pHostAddress - SetSP( CLSID_DP8SP_TCPIP ) ) ){ MessageBox ( hWindow, “Failed to SetSP for Host Address”, “Invalid Param”, MB_ICONERROR); return -l; } DirectPlay地址 2.设置地址对象的服务供应商 TCP/IP并不是唯一可用的服务供应商,下表列举了更多可用的供应商。 #定义 用途 CLSID_DP8SP_IPX 基于IPX的地址对象 CLSID_DP8SP_MODEM modem-to-modem连接 CLSID_DP8SP-SERIAL 非modem电缆连接 CLSID_DP8SP_TCPIP TCP/IP连接 DirectPlay地址 3.设置地址对象中的组件 当创建一个地址时,可指定不同的组件并将它们添加到地址中。 本质上,DPlay地址只是一个包含数值对?的字符串,例如: x_directplay:/provider=%7BEBFE7BAO-628D-LLD2-AEOF- 006

文档评论(0)

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

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

1亿VIP精品文档

相关文档