## About DirectPlay™

The DirectPlay Team

July 1, 1997

### Introduction

The Microsoft® DirectPlay™ application programming interface (API) for Windows® 95 is a software interface that simplifies application access to communication services and provides high level functionality for managing multi-player applications.

DirectPlay has become a technology family that provides a way for applications to communicate with each other that is independent of the underlying transport, protocol, or online service. Instead of forcing the developer to deal with the differences that each of these connectivity solutions represents, DirectPlay provides well defined, generalized communication capabilities. DirectPlay shields the developer from the underlying complexities of diverse connectivity implementations, freeing them to concentrate on producing a great application.

DirectPlay also supplies the basic functions to help the application manage distributed application state and interaction among all the users. Functions are available to manage the players and groups in the game, messaging between players and groups, associating data with these entities and propagating the data.

The DirectPlay Lobby functionality provides a standard way for users to meet using lobby servers and start application sessions or join sessions already in progress without having to do any configuration of their network options. This strong integration with lobby servers allows the overall end user experience to be much more pleasant.

### DirectPlay Architecture

The DirectPlay architecture is composed of several components: DirectPlay itself, Service Providers and Lobby Providers. DirectPlay presents a common interface to the application, binds to the appropriate provider and manages all interaction with the provider in order to implement all the DirectPlay functionality. The service providers and lobby providers furnish network and server-specific communications services as requested by DirectPlay. Online services and lobby operators will supply service providers and lobby providers that utilize specialized network resources like servers, routers, multicasting and quality of service.

Microsoft supplies 4 standard service providers for head-to-head modem (TAPI) connections, COM port serial connections, Internet TCP/IP, and IPX protocols with DirectPlay. The SDK will also install a test lobby server and a corresponding lobby provider.

The DirectPlay interface hides the complexities and unique tasks required to establish an arbitrary communications link inside the DirectPlay service provider implementation. An application using DirectPlay need only concern itself with the performance of the communications medium (e.g. bandwidth and latency), not whether that medium is a modem, network, or online service.

DirectPlay supports both a peer-to-peer communication model and client/server.

DirectPlay features:

- Network independence - an application written to DirectPlay can run on any network or online service that has a service provider available. No need to change the application at all! This allows DirectPlay applications to take advantage of proprietary gaming networks for broader exposure.
- Simple send/receive model for exchanging messages between players.
- Player and group management functions - automatic messages generated when new players are created, destroyed, added/deleted from groups, etc.; function to help manage application specific data associated with the player/group.
- Naming of players and groups.
- Remote shared data - changes in remote data are propagated to all the other machines automatically.
- Unicode and ANSI support.
- Keep alive - DirectPlay will monitor when players lose their connection.
- Lobby functions - a matchmaking service can bring together players and automatically start the application on all the participant's machines and connect them to each other in a communications channel. Once the game is in progress the lobby software and the application can exchange information while the session is in progress.

DirectPlay 5.0 features:

- Lobby Client API - enables applications to connect directly to a lobby server in order to socialize, find sessions in progress and opponents in order to create new session. This is all independent of the implementation of the lobby server through the use of a Lobby Provider architecture.
- Client/Server Applications - enables developer to build two versions of the application - a client and a server. Client communicates only with a server application and each client only maintains a subset of the entire session state. Allows for much more scalable games.
- Multicast Server - improves the efficiency of group messaging
- Security - sessions hosted on a secure server with a membership database can require client machines to login and supply a password. Messages can then be digitally signed for authentication of the sender and/or encrypted for privacy. See the README.TXT for instructions how to set up a secure server.
- Improved Session Password Support - applications can now enumerate password protected sessions and supply the password when joining the session.
- Suppression of Service Provider Dialogs - applications can suppress the service provider dialogs and use their own user interface to obtain information from the user.
- Asynchronous EnumSessions - applications can maintain a self-refreshing list of active sessions without blocking.
- SetSessionDesc implemented
- Support for multiple DirectPlay objects in an application
- Session wide shared data
- Better performance using fewer resources