Microsoft DirectX 8.0 (C++) |
クライアント/サーバー ゲームは、ロビーを通じて起動することも、サーバー アプリケーションから直接起動することもできる。
クライアント/サーバー ゲームは、ロビーを通じて準備されることが多い。サーバーを起動する最も直接的な方法は、サーバーを "ロビー可能" アプリケーションとして実装することである。このアプローチでは、サーバーを起動する手段が提供され、セッション進行中にサーバーとロビーが通信を行うことができる。詳細については、「DirectPlay のロビー」を参照すること。
サーバーを直接起動してから、そのサーバーが利用可能であることを公表し、クライアントからの接続を待つこともできる。詳細については、「クライアント/サーバー ホストの選択」を参照すること。
サーバー アプリケーションは、起動されたら、IDirectPlay8Server::Initialize を呼び出してアプリケーション自体を初期化しなければならない。類似する Microsoft® DirectPlay® のほかのメソッドと同様、初期化の主な目的は、DirectPlay にコールバック メッセージ ハンドラへのポインタを提供することにある。また、IDirectPlay8Server::SetServerInfo を呼び出して現在のゲームの記述も行わなければならない。このメソッドが呼び出されていないと、クライアントがサーバーに接続できない。
実行すべき最初のステップの 1 つは、ゲームがロビー起動で起動されているかどうかを判断することである。これには、ロビー対象アプリケーション オブジェクト (CLSID_DirectPlay8LobbiedApplication) を作成し、初期化する。このとき、ロビー対象アプリケーションのコールバック メッセージ ハンドラへのポインタを、オブジェクトに渡す。このメッセージ ハンドラは、ロビー対象オブジェクトからは直接、ロビー クライアントおよびロビーからは間接的に、メッセージを受信する。
また、クライアント オブジェクト (CLSID_DirectPlay8Client) を作成し、初期化する必要もある。このオブジェクトが、Microsoft® DirectPlay® およびサーバーとの主な通信手段となる。セッションに複数のプレーヤーを参加させるためには、プレーヤーごとにこのオブジェクトのインスタンスを作成する必要がある。