DirectPlay特性
DirectPlay提供的特性,使多人游戏在开发中得到了很多简化。其中包括:
1 创建和管理点对点,客户/服务会话(Session)
2 在一个会话中管理用户(User)和组(Group)
3 管理在不同网络平台上进行会话的成员之间发送的消息
4 使游戏在大厅(Lobby)中互动
5 使用户可以进行语音互动
这部分的文档(Introduction To DirectPlay)高度概括了DirectPlay的功能。随后的章节将告诉你DirectPlay的细节和如何在你的游戏中使用DirectPlay。
DirectPlay Network Communication
Communicating with DirectPlay Objects
Creating and Managing Sessions
DirectPlay9.0新特性
DirectPlay
应用程序接口(APIs)可以运行在Microsoft Windows® Powered Pocket PC 2002系统上。详细内容请查看DirectPlay for Pocket PC 2002。
DPN_MSGID_SEND_COMPLETE消息结构允许你利用其内部的两个成员在短时间内进行消息往返性质的传输。
DirectPlay提供一个新的
网络服务层,你可以使用IDP8SimControl的方法去调试一个多样性的网络环境(PS:我认为这里是说在一个应用程序中同时使用多个协议) DirectPlay has a new service provider for network simulation. You can use the IDP8SimControl methods to test applications under a variety of network conditions.
DirectPlay有一个新的接口,IDirectPlay8ThreadPool,它允许你管理应用程序中的多个线程。
应用程序可以取消所有消息发送,前提是一个特殊的玩家在调用以下几个函数中使用了DPNCANCEL_PLAYER_SENDS标志位
IDirectPlay8Peer::CancelAsyncOperation, IDirectPlay8Server::CancelAsyncOperation, IDirectPlay8Client::CancelAsyncOperation.
玩家们可以在DPN_MSGID_CONNECT_COMPLETE消息中接收他们的本地玩家标识符(ID).
主机可以预防从进程枚举中提取到被设置为DPNSESSION_NOENUMS 标志位的DPN_APPLICATION_DESC结构。该消息在调用IDirectPlay8Peer::Host and IDirectPlay8Server::Host时发出.
如果消息发送到一个没有任务玩家的组中,它将马上返回DPNSUCCESS_NOPLAYERSINGROUP以替代了原来的DPNERR_GENERIC.
信息包的签名可用在所有DirectPlay通信上。
在调用以下几个方法时,将标志位设置为DPNCLOSE_IMMEDIATE,那么该应用程序可以被立即关闭。
IDirectPlay8Peer::Close,
IDirectPlay8Client::Close,
IDirectPlay8Server::Close.
DirectPlay 9.0 增强了反向连接欺骗的防御措施
在以下方法中使用DPNINITIALIZE_HINT_LANSESSION 标志位初始化 IDirectPlay8Peer::Initialize,
IDirectPlay8Client::Initialize,
IDirectPlay8Server::Initialize.
在调用发送信息的函数时,信息包是可以被连接合并的。只要在以下函数中设置DPNSEND_COALESCE标志位
IDirectPlay8Peer::SendTo,
IDirectPlay8Client::Send,
IDirectPlay8Server::SendTo.
应用程序可以利用DPN_CAPS_EX结构对DirectPlay的协议进行调整。适用函数:IDirectPlay8Peer::GetCaps,IDirectPlay8Client::GetCaps,
IDirectPlay8Server::GetCaps,IDirectPlay8Peer::SetCaps,
IDirectPlay8Client::SetCaps,IDirectPlay8Server::SetCaps.
当一个组被加入到DPNMSG_CREATE_GROUP结构中,就会拥有上下关联的值。
如果在调用IDirectPlay8Peer::Host或者 IDirectPlay8Server::Host方法时,没有在DPN_APPLICATION_DESC结构中设置DPNSESSION_NODPNSVR标志位,并且没有运行dpnsvr.exe,那么创建主机的行为将会出错并返回DPNERR_DPNSVRNOTAVAILABLE.
Less reliable connections should now perform better with improved DirectPlay protocol behavior.
Network Address Translation (NAT) support has improved. This includes the new IDirectPlay8NATResolver interface, which allows you to create a NAT resolver application.
DirectPlay now supports Internet Protocol (IP) v6.