Microsoft DirectX 8.0 (Visual Basic) |
クライアント/サーバー ゲームは、ロビーを通じて起動することも、サーバー アプリケーションから直接起動することもできる。
クライアント/サーバー ゲームは、ロビーを通じて準備されることが多い。サーバーを起動する最も直接的な方法は、サーバーを "ロビー可能" アプリケーションとして実装することである。このアプローチでは、サーバーを起動する手段が提供され、セッション進行中にサーバーとロビーが通信を行うことができる。詳細については、「DirectPlay のロビー」を参照すること。
サーバーを直接起動してから、そのサーバーが利用可能であることを公表し、クライアントからの接続を待つこともできる。詳細については、「クライアント/サーバー ホストの選択」を参照すること。
サーバー アプリケーションは、起動されたら、その DirectPlay8Event 通知ハンドラ オブジェクトを登録しなければならない。DirectPlay8Event オブジェクトは、基本的には Microsoft® DirectPlay® から通知を受けるイベント ハンドラである。イベント ハンドラは、DirectPlay から提供されないので、アプリケーションで実装する必要がある。詳細については、リファレンス ドキュメントを参照すること。また、DirectPlay8Server.SetServerInfo を呼び出して現在のゲームの記述も行わなければならない。このメソッドが呼び出されていないと、クライアントがサーバーに接続できない。
実行すべき最初のステップの 1 つは、ゲームがロビー起動で起動されているかどうかを判断することである。これには、DirectPlay8LobbiedApplication オブジェクトと DirectPlay8LobbyEvent オブジェクトを作成する。DirectPlay8LobbiedApplication.RegisterMessageHandler を呼び出して、DirectPlay8LobbyEvent オブジェクトを Microsoft® DirectPlay® に登録する。DirectPlay8LobbyEvent オブジェクトは、基本的には、ロビー対象アプリケーションからは直接、ロビー クライアントとロビーからは間接的に、通知を受けるイベント ハンドラである。イベント ハンドラは、DirectPlay から提供されないので、アプリケーションで実装する必要がある。詳細については、リファレンス ドキュメントを参照すること。
アプリケーションがロビー起動で起動されている場合は、DirectPlay から DirectPlay8LobbyEvent.Connect メソッドが呼び出される。dlNotify パラメータには、セッション メンバのアドレス オブジェクトといった接続情報が付いた DPL_MESSAGE_CONNECT 型が格納される。
また、DirectPlay8Client オブジェクトを作成し、DirectPlay8Client.RegisterMessageHandler を呼び出して DirectPlay8Event 通知ハンドラ オブジェクトを登録する必要もある。これらのオブジェクトが、サーバーとの主な通信手段となる。