Written By: Tom Curry
Participates: Patty Buchanan and Harris Phram
III. The DirectPlay Distributed Game Playing API.
The focus on our distributed computing project is the distributed communications technology known as the DirectPlay API from Microsoft, included as part of their suite of API’s known as DirectX. DirectPlay is a medium by which game players can experience real-time connectivity with other game players over a network, by modem connection, or the internet. DirectPlay does this by providing transport-independent functionality for organizing and synchronizing multi-player gaming sessions. The DirectPlay communication model is based on the transport-specific details handled by the service provider. Special purpose service providers are based on a published specification, and any application using DirectPlay can automatically take full advantage of these new communication channels.
The server portion of a DirectPlay connection is usually referred to as a "Lobby". The portion of the Lobby that receives incoming connection requests is known as the "Bellhop". The DirectPlay connection is initiated by the DirectPlay client through a "Launcher". The lobby can be configured to host multiple connections by multiple clients through a wide variety of connection configurations. The Launcher, which usually runs before any type of client application is activated, is usually where any communication protocols or service providers are configured. The launcher when run, connects to the remote Lobby server based on the set specification, and launches the client-side application with a server connection in place. After the bellhop receives the client connection, it acts as the interface between the client and whatever protocol the client is using, and the server. The server can then effectively broker communications between multiple clients in an environment virtually independent of transport level protocols.
DirectX, in and of itself, is billed as providing a set of API’s designed to give the developer direct access to hardware level specifications. This is not necessarily the case with DirectPlay. What DirectPlay gives you, is direct access to the transport layer of the communications protocol you are using (e.g. TCP/IP, IPX/SPX, etc.), which for all practical purposes, is a software based entity. This software-based entity is what accesses the hardware, potentially through other transport layers the protocol may be using. The only way DirectPlay could be made to access networking hardware directly, would be to form and develop its own universally accepted transport layer. As much as Microsoft loves to develop their own universally accepted standards, I honestly don’t think the world is quite ready for that one. It is also unfair to label DirectPlay as purely a video game technology. Many windows-base communications software, including NetMeeting and some video conferencing software, take full advantage of DirectPlay within the scope of their performance and development specifications.
DirectPlay Clients and Servers are application specific. A DirectPlay client application can only communicate to other DirectPlay client applications through a DirectPlay server application written specifically for use with the connected client applications. All clients communicate through their own interface. The only common interface involved between all DirectPlay applications, is the interface by which all the transport layer specifics regarding the connection are handled.