ドキュメント

サポート

Lobby

Lobby

ロビーの heartbeat

Send heartbeat requests to keep a lobby active and prevent it from being marked as inactive or deleted.
読み終わるまでの所要時間 1 分最終更新 2ヶ月前

特定の継続時間内にロビーが更新されず、ホストによって heartbeat リクエストも送信されない場合、そのロビーは 非アクティブ としてマークされます。ロビーのデフォルトのアクティブ生存期間は 30 秒です。プロジェクト内のロビーの activelifespan を設定 できます。 非アクティブロビーを非表示にする主な目的は、放棄されたロビーをプレイヤーが継続的に発見/参加するのを防ぐことです。非アクティブ Public ロビーはクエリ結果に表示されず、"Quick Join" を通じて参加することもできません。Public と Private 両方の非アクティブロビーは、最終的に自動的に削除されます。非アクティブロビーは、ホストが更新するか heartbeat リクエストを送信すると再びアクティブにすることができます。 1 時間の非アクティブ状態の後、ロビーは 期限切れ と見なされます。期限切れのロビーは任意の時点で削除される可能性があります。削除されると、ロビーはクエリや API で使用できなくなります。この継続時間は設定できません。期限切れのロビーは、更新するか heartbeat を送信すると再びアクティブにすることができます。 以下のコードサンプルは、コルーチンをロビーの作成と統合して、新しいロビーに heartbeat を定期的に送信する方法を示しています。 C#
async Task<Lobby> CreateLobbyWithHeartbeatAsync(){ string lobbyName = "test lobby"; int maxPlayers = 4; CreateLobbyOptions options = new CreateLobbyOptions(); // Lobby parameters code goes here... // See 'Creating a Lobby' for example parameters var lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options); // Heartbeat the lobby every 15 seconds. StartCoroutine(HeartbeatLobbyCoroutine(lobby.Id, 15)); return lobby;}IEnumerator HeartbeatLobbyCoroutine(string lobbyId, float waitTimeSeconds){ var delay = new WaitForSecondsRealtime(waitTimeSeconds); while (true) { LobbyService.Instance.SendHeartbeatPingAsync(lobbyId); yield return delay; }
ホストは、ロビーの使用中は heartbeat を定期的に送信する必要がありますが、それらのロビーに気を配り、後で削除する必要もあります。これを行う非常にシンプルな方法は、作成したロビーをシャットダウン中にループ処理することです。 以下のコードサンプルは、MonoBehaviorOnApplicationQuit() 関数を利用して、作成したロビーを削除する方法を示しています。 C#
ConcurrentQueue<string> createdLobbyIds = new ConcurrentQueue<string>();void OnApplicationQuit(){ while (createdLobbyIds.TryDequeue(out var lobbyId)) { LobbyService.Instance.DeleteLobbyAsync(lobbyId); }}