Platform SDK: DirectX |
このセクションでは、非ロビー型マルチプレーヤー ゲームまたはその他のネットワーク アプリケーションに参加するために、典型的なアプリケーションがとる基本ステップについて簡単に説明する。
これらのステップを実行したコード例を確認するには、Duel サンプルのコードを参照すること。また、「チュートリアル 2 : ダイアログ ボックスを使用した接続」も参照すること。
1. DirectPlay を初期化する
アプリケーションは、最初に IDirectPlay4 インターフェイスのインスタンスを作成して、DirectPlay オブジェクトを作成しなければならない。このインターフェイスのメソッドを使用して、ロビーの外部における通信の要素をすべて管理する。
2. サービス プロバイダを列挙する
アプリケーションは、IDirectPlay4::EnumConnections メソッドを使用して、システム上で利用可能なサービス プロバイダを列挙する。通常は利用可能な接続がリスト ボックスで提示され、ユーザーはその中から 1 つを選択するように求められる。
3. 接続を初期化する
ユーザーが接続を選択すると、アプリケーションは IDirectPlay4::InitializeConnection を呼び出す。このとき、サービス プロバイダはユーザーに対し、使用するモデムや電話番号などの追加情報を求める場合がある。ユーザーがサービス プロバイダのダイアログをキャンセルした場合、セッションを作成することは可能だが、既存のセッションに参加することはできない。
4. セッションを作成するか、またはセッションに参加する
アプリケーションでは通常、新しいセッションを作成するか、既存のセッションに参加するかをユーザーに選択させる。既存のセッションのリストを取得するには、IDirectPlay4::EnumSessions を呼び出す。セッションを作成したり、既存のセッションに参加したりするには、IDirectPlay4::Open メソッドまたは IDirectPlay4::SecureOpen メソッドを使用する。セッションを作成するアプリケーションは、自動的にそのセッションに参加し、通常はそのセッションのホストになる。
5. プレーヤーを作成する
アプリケーションは、セッションに参加すると、識別とメッセージ管理のために最低 1 人のプレーヤーを作成しなければならない。それには、IDirectPlay4::CreatePlayer メソッドを使用する。
IDirectPlay4::EnumPlayers を呼び出すと、作成したプレーヤーを列挙することができる。アプリケーションは、たとえばセッションに現在参加しているプレーヤーの名前を一覧表示するために、このメソッドを呼び出すことができる。
また、プレーヤーをグループまたはサブグループで整理することもできる。詳細については、「グループ管理」を参照すること。
6. ゲームを開始する
アプリケーションは、ゲーム (またはその他の種類のセッション) をいつ、どのように開始するかを判断する。プレーヤーが一定の人数に達した後にホスト ユーザーがいつでもゲームを開始できるようにする場合もあれば、一定人数のユーザーが参加したときにゲームが自動的に開始されるようにする場合もある。ホストはすべてのプレーヤーにメッセージを送信し、ゲームが始まったことを通知する。プレーヤーは、IDirectPlay4::Send、IDirectPlay4::SendEx、および IDirectPlay4::Receive メソッドを使用してメッセージを交換し、ゲームの状態を更新する。
これらのステップを実行したコード例を確認するには、「チュートリアル 1 : 簡単なネットワーク ゲームの作成」を参照すること。
1. DirectPlay を初期化する
アプリケーションは、最初に DirectX7.DirectPlayCreate を呼び出して、DirectPlay4 オブジェクトを作成する必要がある。DirectPlay4 クラスのメンバを使用して、ロビーを使用しない場合の通信の要素をすべて管理する。
2. サービス プロバイダを列挙する
アプリケーションは、DirectPlay4.GetDPEnumConnections メソッドを使用して、システム上でさまざまなサービス プロバイダを介して利用可能な接続を列挙する。通常は利用可能な接続がリスト ボックスで提示され、ユーザーはその中から 1 つを選択するように求められる。
3. 接続を初期化する
ユーザーが接続を選択すると、アプリケーションは DirectPlay4.InitializeConnection を呼び出す。これにより、DirectPlay が特定のサービス プロバイダにバインドされる。このとき、サービス プロバイダはユーザーに対し、使用するモデムや電話番号などの追加情報を求める場合がある。ユーザーがサービス プロバイダのダイアログ ボックスをキャンセルした場合、セッションを作成し、別のプレーヤーが (ダイヤル インなどによって) 接続できるようになるまで物理接続の確立を延期することができる。
4.セッションを作成するか、またはセッションに参加する
アプリケーションでは通常、新しいセッションを作成するか、既存のセッションに参加するか (物理セッションが確立している場合) をユーザーに選択させる。既存のセッションのリストを取得するには、DirectPlay4.GetDPEnumSessions を呼び出す。セッションを作成したり、セッションに参加したりするには、DirectPlay4.Open メソッドまたは DirectPlay4.SecureOpen メソッドを使用する。セッションを作成するアプリケーションは、自動的にそのセッションに参加し、通常はそのセッションのホストになる。
5. プレーヤーを作成する
アプリケーションは、セッションに参加すると、識別とメッセージ管理のために最低 1 人のプレーヤーを作成しなければならない。それには、DirectPlay4.CreatePlayer メソッドを使用する。
DirectPlay4.GetDPEnumPlayers を呼び出すと、作成したプレーヤーを列挙することができる。アプリケーションは、たとえばセッションに現在参加しているプレーヤーの名前を一覧表示するために、このメソッドを呼び出すことができる。
また、プレーヤーをグループまたはサブグループで整理することもできる。詳細については、「グループ管理」を参照すること。
6. ゲームを開始する
アプリケーションは、ゲーム (またはその他の種類のセッション) をいつ、どのように開始するかを判断する。プレーヤーが一定の人数に達した後にホスト ユーザーがいつでもゲームを開始できるようにする場合もあれば、一定人数のユーザーが参加したときにゲームが自動的に開始されるようにする場合もある。ホストはすべてのプレーヤーにアプリケーションで定義されたメッセージを送信し、ゲームが始まったことを通知する。プレーヤーは、DirectPlay4.Send、DirectPlay4.SendEx、および DirectPlay4.Receive メソッドを使用してメッセージを交換し、ゲームの状態を更新する。