DirectPlay简介
1. DirectPlay允许开发者提供不考虑传输媒介细节特征的多人参与功能,DirectX对不同的媒介同等对待(无论是TCP/IP网,IPX网或是调制解调器)
2. DirectPlay对象
DirectPlay:提供DirectPlay的核心功能,它的接口给管理游戏者、组、游戏会话和数据传送提供各种方法。
DirectPlayLobby:为DirectPlay游戏提供场所空间,与实际的大厅一样,游戏者在这里见面并互相作用,此对象为启动和跟踪DirectPlay会话提供方法
3. 结构:DirectPlay主要目的和DirectX其他部件一样,都是提供展示硬件功能的一致接口
服务提供器:为开发者提供一致的接口、隐藏了通信协议间的差别、允许第三方开发者编制自己的服务提供器
最终解决方案的结构:游戏或其他应用程序与管理着一组服务提供器的DirectPlay交换信息,这些服务提供器中有思想DirectPlay连在一起:网络IPX/SPX、网络TCP/IP,调制解调器以及串行连接,网络服务器以Winsock作为基础,调制解调器以Windows的TAPI作为基础
4. 用DirectPlay游戏
(1) 基于所有的服务提供器,程序可以同时拥有在同一传输媒介上运行的不同游戏的多个不同会话,DirectPlay为列举会话,创建新会话以及与现存会话相连提供多种方法,另外也可以用密码对会话进行保护,这时要求对用户的鉴定,会话被创建后,游戏就可以与之相连.DirectPlay提供了创建、删除、列举、描述游戏者的方法,游戏者也可结成小组以使管理更加容易,通信效果得以改进。
(2) 通信:DirectPlay在游戏者间既可以共享数据也可使用消息机制来传递消息。传送的数据可以被加密或用数字签名,DirectPlay还产生系统消息,可由此获知会话的状态
DirectPlay通讯机构是对等的和客户/服务器式的兼而有之。
对等结构:对于网络服务提供器而言,每一新连入的DirectPlay对象在与会话主连接时都会收到一份其他DirectPlay对象的列表清单,这一表单在会话之中始终被保留着,每一DirectPlay对象都知道其它的对象,所以它们直接进行消息传送而不用通过会话主,所得到的会话也是对等的
客户/服务器结构:每一条消息都必须传给会话主
5. 应用程序设计
设计多人参与的应用程序需解决的最重要问题是同步问题
输入同步:一个游戏者的输入也输到其他游戏者那里,并当成同一机器具有多个输入设备处理(易于理解、易于实现、没有有效利用带宽、不健全)
状态同步:由本会话将状态传给其他会话
6. DirectPlay标签项
使用DirectPlay
7. DirectPlay的设置要求比其它的大部分DirectX部件困难得多
8. GUID知识(全局唯一标识)
(1) GUID与COM结合使用,来识别对象和接口,并在需要有独特的标识符时出现
(2) 创建GUID(用于创建GUID的短小命令行程序称为