DirectX8.0简介(5)
添加时间: 2007-4-9 0:35:08 作者: 程序员认证参考 阅读次数:43 来源: http://www.d9soft.com
directplay 是应用程序和通讯服务之间的高级软件接口。有了 directplay,通过 internet、调制解调器链接或 网络 来连接游戏将非常简单。directplay 既提供了高级的传输层服务(例如,有保证或无保证的传递,慢速链接上的通讯扼杀,以及放弃连接检测等),也提供了会话层服务(包括玩家名称表 管理 和点对点主机转移)。图 4 显示了 directplay 体系结构,以及它如何提供与通讯服务提供程序无关的独立性。

图 4:directplay 体系结构
下面是 microsoft directplay api for directx 8.0 的新特性列表:
• 接口已经完全重写。
• 前端操作现在与 directplay 的其他部分无关。
• 已经加入了语音传输。
• 寻址信息已经从基于 guid 的数据格式变为基于 url 的数据格式。
• 可伸缩性更强大,内存管理更完善。
• 对防火墙和网络地址翻译器 (nat) 的支持更佳。
分离创建点对点会话和客户端/服务器会话的接口,使创建网络应用程序的复杂度得到了奇迹般的简化。用于创建 directplay 传输会话的接口包括:
• idirectplay8peer,提供创建点对点会话的方法
• idirectplay8client,提供创建客户端/服务器应用程序的客户端部分的方法
• idirectplay8server,提供创建客户端/服务器应用程序的服务器端部分的方法
directplay 不再要求前端客户端只能与 directplay 应用程序配合使用。这样,前端服务提供程序和应用程序都可以实现 directplay,而无须相互匹配。前端实施现在分为两个简化的接口:
• idirectplay8lobbyclient,用于管理前端客户端,以及计算和启动前端识别应用程序。
• idirectplay8lobbiedapplication,用于在系统中注册可由前端启动的应用程序,使它真正能由前端启动。它也用于从前端获取连接信息,使游戏启动时无需查询用户。
directplay voice 提供了一组接口,用于给应用程序添加实时语音通讯。下列新接口提供了语音支持:
• idirectplayvoiceclient 提供了在 directplay voice 会话中创建和管理客户端的方法。
• idirectplayvoiceserver 提供了承载和管理 directplay voice 会话的方法。
• idirectplayvoicetest 用于测试客户端计算机上的音频设置。
图 5 显示了使用 directplay voice 时可用的组件。
图 5:directplay voice 组件
以前版本的 directplay 通过 guid 地址使用二进制数据块,难以实现和读取。在 directx 8.0 中,directplay 引入了 url 格式的地址表示方法,并使用一组新的接口来创建和操作新的寻址格式:
• idirectplay8address 提供用于创建和操作 directplay 地址的基本寻址方法。
• idirectplay8addressip 提供 ip 提供程序专用的寻址服务。
就 directx 8.0 而言,directplay 已经被彻底重写,以便提供卓越的性能和强大的可伸缩性。用户带宽的增长给网络游戏设计和实施带来了天翻地覆的影响。改进的 directplay 线程缓冲池管理使开发人员更容易设计可变化而且更可靠的应用程序,能够同时支持大量联机玩家。
编写跨越 nat、防火墙和其他 internet 连接共享 (ics) 方法的网络游戏可能会非常困难,针对无保证 (udp) 通讯编写网络游戏尤其困难。在 directx 8.0 中,directplay 开发时已经注意了这些问题,它将支持可能的 nat 解决方案。directplay tcp/ip 服务提供程序对游戏数据使用单一的、开发人员可选的 udp 端口,从而可以适当地配置防火墙和 nat。另外,directplay 使用了 udp,因此对于客户端/服务器体系结构的游戏来说,某些 nat 后的客户端可以直接连接到游戏,而无须进行额外的配置。
上一篇文章: 轻松应对高级程序员软件设计题 下一篇文章: C++程序员成长中最常走的4条弯路

