Platform SDK: DirectX

外部ロビーによる開始のサポート

ロビーの起動を把握し、アプリケーション セッションに参加するための基本的なステップは、次のとおりである。

[C++]
  1. スタートアップ時に、CoCreateInstance 関数を使用して IDirectPlayLobby3 インターフェイスを作成する。
  2. IDirectPlayLobby3::GetConnectionSettings メソッドを呼び出す (通常は、必要なバッファのサイズを取得するためと、バッファを割り当てた後の合計 2 回呼び出す)。このメソッドが DPERR_NOTLOBBIED を返す場合、アプリケーションはロビーによって起動されておらず、ユーザーによって通常の方法で実行された可能性が高い。非ロビー セッションの作成または接続をユーザーに許可するコード パスに従って先に進む。GetConnectionSettings が成功した場合、ロビーによって設定された接続設定 (セッション記述を含む) を保持する DPLCONNECTION 構造体が返される。変更を加えるには、IDirectPlayLobby3::SetConnectionSettings を使用する。
  3. IDirectPlayLobby3::ConnectEx を呼び出して、アプリケーション セッションを作成するか、またはアプリケーション セッションに参加する (アプリケーションは DPLCONNECTION.dwFlags を調べて、セッションを作成するか、またはセッションに参加するかを判断する)。
  4. ステップ 2 で取得した DPLCONNECTION 構造体によって提供される名前情報を使用して、プレーヤーを作成する。

この時点で、アプリケーションは、ユーザーが接続を手動で選択し、セッションに参加するかまたは作成し、作成するプレーヤーの名前を入力した場合と同じコード パスに従って、先に進むことができる。

ゲームでロビーに情報を返す場合は、IDirectPlayLobby3 インターフェイスを保存できる (「ロビーとの関係の維持」を参照)。それ以外の場合は、Release メソッドを使用してこのインターフェイスを削除できる。

追加情報とサンプル コードについては、Duel (Lobby.c) サンプルと ChatConnect (Lobby.cpp) サンプル、および「チュートリアル 1 : ロビーを使用した接続」を参照すること。

[Visual Basic]
  1. スタートアップ時に、DirectX7.DirectPlayLobbyCreate メソッドを使用して DirectPlayLobby3 オブジェクトを作成する。
  2. DirectPlayLobby3.GetConnectionSettings メソッドを呼び出す。このメソッドにより DPERR_NOTLOBBIED エラーが発生する場合、アプリケーションはロビーによって起動されておらず、ユーザーによって通常の方法で実行された可能性が高い。非ロビー セッションの作成または接続をユーザーに許可するコード パスに従って先に進む。GetConnectionSettings が成功した場合、ロビーによって設定された接続設定 (セッション記述を含む) を表す DirectPlayLobbyConnection オブジェクトが返される。変更を加えるには、DirectPlayLobby3.SetConnectionSettings を使用する。
  3. DirectPlayLobby3.Connect を呼び出して、アプリケーション セッションを作成するか、またはそれに参加する (アプリケーションは、DirectPlayLobbyConnection.GetFlags によって返される値を調べて、セッションを作成するか、またはセッションに参加するかを判断する)。
  4. ステップ 2 で取得した irectPlayLobbyConnection オブジェクトによって提供される名前情報を使用して、プレーヤーを作成する。

この時点で、アプリケーションは、ユーザーが接続を手動で選択し、セッションに参加するかまたは作成し、作成するプレーヤーの名前を入力した場合と同じコード パスに従って、先に進むことができる。

ゲームでロビーに情報を返す場合は、DirectPlayLobby3 オブジェクトを保存できる (「ロビーとの関係の維持」を参照)。

ロビーの多くは、アプリケーションを起動してからサスペンド モードに入り、アプリケーションが終了するのを待機する。DirectPlay は、起動したアプリケーションが終了したときに、ロビーに通知する。そのため、ロビーによって起動されたアプリケーションがほかのアプリケーションを起動しないことが重要である (しかし、正しく登録されたアプリケーション自体をランチャによって起動することが可能である「リップル起動のサポート」を参照)。