ロビーの作成

プレイヤーが新しいロビーを作成する際に、作成呼び出しを使用して以下のプロパティを設定できます。

  • ロビー名 (必須)
  • ロビーの可視性 (Public または Private)
  • ロビーサイズ (最大専有領域)
    • コードでは、これは Max Players (最大プレイヤー数) と呼ばれます。
  • パスワード
    • ロビーに参加するために必要な 8 - 64 文字のパスワード。
  • 初期カスタムロビーデータ
    • これには任意のデータを含めることができます。例えば、マップ ID やゲームモードなどです。
    • 文字列または数値を含むロビーデータにはインデックスを作成でき、クエリでそれらのインデックスのフィルタリングや並べ替えを行うことができます。
  • 初期 (ホスト) プレイヤーデータ
    • 例えば、プレイヤーの表示名、スキル、キャラクターなど。

ノート: プレイヤーがロビーを作成すると、そのプレイヤーは自動的にホストになります。

Public ロビーの作成

Public ロビーは、参加するためにロビーコードを要求せず、誰でも参加できるようにクエリ結果に表示されます。

以下のコードサンプルは、Public ロビーの作成方法を示しています。

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.IsPrivate = false;

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

Private ロビーの作成

Private ロビーはクエリ結果に表示されず、ロビーコードまたは ID を手動で入力することを新規プレイヤーに要求します。

以下のコードサンプルは、Private ロビーの作成方法を示しています。

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.IsPrivate = true;

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

標準のインデックスなしデータを使用したロビーの作成

ロビーデータは、作成リクエストおよび後続の更新リクエストに含めることができます。

以下のコードサンプルは、標準のインデックスなしデータを使用してロビーを作成する方法を示しています。

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.Data = new Dictionary<string, DataObject>()
{
    {
        "ExamplePublicLobbyData", new DataObject(
            visibility: DataObject.VisibilityOptions.Public, // Visible publicly.
            value: "ExamplePublicLobbyData")
    },
};

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

インデックスあり文字列データを使用したロビーの作成

以下のコードサンプルは、インデックスあり文字列データを使用してロビーを作成する方法を示しています。

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.Data = new Dictionary<string, DataObject>()
{
    {
        "GameMode", new DataObject(
            visibility: DataObject.VisibilityOptions.Public, // Visible publicly.
            value: "Conquest",
            index: DataObject.IndexOptions.S1)
    },
};

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

インデックスあり数値データを使用したロビーの作成

以下のコードサンプルは、インデックスあり数値データを使用してロビーを作成する方法を示しています。

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
options.Data = new Dictionary<string, DataObject>()
{
    {
        "MinimumSkillLevel", new DataObject(
            visibility: DataObject.VisibilityOptions.Public, // Visible publicly.
            value: "25",
            index: DataObject.IndexOptions.N1)
    },
};

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

ホストのプレイヤーデータを使用したロビーの作成

ロビーデータと同様に、ホストのプレイヤーデータも、別の更新リクエストで追加するのではなく、作成リクエストに含めることができます。

以下のコードサンプルは、ホストのプレイヤーデータを使用してロビーを作成する方法を示しています。

C#

string lobbyName = "new lobby";
int maxPlayers = 4;
CreateLobbyOptions options = new CreateLobbyOptions();
// Ensure you sign-in before calling Authentication Instance.
// See IAuthenticationService interface.
options.Player = new Player(
    id: AuthenticationService.Instance.PlayerId,
    data: new Dictionary<string, PlayerDataObject>()
    {
        {
            "ExampleMemberPlayerData", new PlayerDataObject(
                visibility: PlayerDataObject.VisibilityOptions.Member, // Visible only to members of the lobby.
                value: "ExampleMemberPlayerData")
        }
    });

Lobby lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options);

アクティブロビーと非アクティブロビー

ロビーが過去 30 秒間に更新されておらず、heartbeat リクエストも送信されていない場合は、非アクティブ としてマークされます。このタイムアウト期間を設定できます。非アクティブ Public ロビーはクエリ結果に表示されず、Public と Private 両方の非アクティブロビーは自動的に削除されます。非アクティブロビーは、更新するか heartbeat リクエストを送信すると再びアクティブにすることができます。

30 秒あたり 5 heartbeat リクエストのレート制限があるため、ユーザーが一度にホスティングできるロビーの上限は 5 つになります。詳細については、ロビーの heartbeat を参照してください。