Microsoft DirectX 8.0 (Visual Basic) |
Microsoft® DirectPlay® のメッセージは、基本的には、クライアントとサーバーの間でやり取りされるゲーム関連のデータ ブロックである。DirectPlay は、データ ブロックの内容や形式を限定せずに、データをやり取りするためのメカニズムのみを提供する。ゲームの進行中には、通常、各クライアントとサーバーの間で、メッセージが間断なくやり取りされる。これらのメッセージの主な目的は、各ユーザーのアプリケーションに同じ UI を表示するために、ゲームの状態の同期をとることにある。ただし、メッセージは、これに限らずゲーム固有の多様な目的に使用できる。
ゲーム (特に変化の速いゲーム) では、メッセージングを慎重に管理しなければならない場合が多い。DirectPlay は、流出するメッセージを、ターゲットが処理できるレベルに減速 (スロットリング) する。重要なメッセージを確実に届けるため、メッセージをあまり高速で送信しないように注意しなければならない。DirectPlay での効率的なメッセージング処理については、「ネットワーキングの基本」を参照すること。
クライアントにメッセージを送信するには、DirectPlay8Server.SendTo を呼び出す。DirectPlay が、データを指定してクライアントの DirectPlay8Event.Receive メソッドを呼び出す。
サーバーにメッセージを送信するには、DirectPlay8Client.Send を呼び出す。DirectPlay が、データを指定してサーバーの DirectPlay8Event.Receive メソッドを呼び出す。
注 DirectPlay にはクライアント間の通信メカニズムはなく、クライアントとサーバーの間の通信メカニズムだけが用意されている。クライアント間の通信は、すべてサーバー アプリケーションで実装する必要がある。
多くのゲームは、プレーヤーをグループ分けできるようになっている。たとえば、チーム対戦型ゲームでは、チームのプレーヤー全員を 1 つのグループのメンバにしてもよい。DirectPlay では、クライアント/サーバー ゲームのサーバーが、プレーヤーのグループを作成できる。DirectPlay のグループは、通常はゲームで定義されるグループに対応するが、グループ作成の目的が限定されているわけではない。DirectPlay のグループは、基本的にはメッセージングを簡略化する手段である。グループを定義すると、DirectPlay8Server.SendTo を 1 回呼び出すだけで、グループ メンバ全員にメッセージを送信できるようになる。
DirectPlay のグループを作成するには、DirectPlay8Server.CreateGroup を呼び出す。DirectPlay から、詳細を指定して DirectPlay8Event.CreateGroup メソッドが呼び出される。この通知には、グループにメッセージを送信するために使用するグループ ID が含まれる。グループを作成したら、次に DirectPlay8Server.AddClientToGroup を呼び出してプレーヤーを追加する。
グループを確立すると、そのグループにデータを送信できるようになる。これには、idSend パラメータにグループ ID を設定して DirectPlay8Server.SendTo を呼び出す。この結果、DirectPlay が、データを指定してグループ メンバの DirectPlay8Event.Receive メソッドを呼び出す。
グループからプレーヤーを削除するには、DirectPlay8Server.RemoveClientFromGroup を呼び出す。最後に、グループを使い終わったら、DirectPlay8Server.DestroyGroup を呼び出せば破棄できる。