メインコンテンツまでスキップ

専用サーバーの準備完了通知の手動送信を統合する

Last updated on February 4, 2026

注釈:本資料はAI技術を用いて翻訳されています。

概要

デフォルトでは、AccelByte Gaming Services (AGS) Session は AGS Matchmaking および AccelByte Multiplayer Servers (AMS) と連携して、プレイヤーを自動的にセッションに追加し、マッチ用の専用サーバー (DS) をクレームします。ただし、DS が準備される前にプレイヤーが DS に参加しようとする場合があります。これによって発生する問題を防ぐために、DS がセッションに準備完了を通知する機能を実装できます。

この記事では、このプロセスのフローを説明し、実装方法を示します。

注記

この記事は、DS が手動でセッション準備完了通知を送信できるようにするためのものであり、DS 側のワークフローに影響します。ゲームクライアント側のフローは変わりません。

専用サーバーマッチメイキングフローの確認

ゲームでは、AGS Session、AGS Matchmaking、および AMS を使用して、プレイヤー向けのオンラインマルチプレイヤー体験を作成できます。

デフォルトのマッチメイキングフロー

一般的な AGS マッチメイキングフローは次の図のとおりです。

General matchmaking flow diagram

プレイヤーはマッチメイキングリクエストを AGS Matchmaking に送信します。マッチが見つかると、ゲームセッションが作成され、マッチしたプレイヤーがセッションメンバーとして追加されます。プレイヤーは、参加するセッション情報とともにマッチ成立の通知を受け取ります。その後、AGS Session は AMS から DS をクレームします。デフォルトでは、AGS Session が DS のクレームに成功すると、プレイヤーに DS 情報を含む通知を送信し、プレイヤーは DS に参加してゲームをプレイできます。

手動準備セッションフロー

場合によっては、DS がプレイヤーを受け入れる準備ができる前に、前処理または初期タスクを実行する必要があります。たとえば、プレイヤー属性から情報を取得したり、追加データを待ってプレイヤーのゲームモードを決定したり、プレイヤーの統計情報を取得したりする場合です。プレイヤーが初期プロセス中に DS に参加すると、問題が発生する可能性があります。この場合、ゲーム開発者は、DS が準備完了をプレイヤーに通知するタイミングを決定したいと考えます。このような場合、フローは次の図のようになります。

Session manual DS ready flow

ゲーム開発者は、DS がプレイヤーを受け入れる準備ができたときに AGS Session を呼び出すことで、このフローを有効にできます。

前提条件

この記事の手順を実行する前に、AGS でのマッチメイキングとセッションへの参加に関する基本的な知識が必要です。さらに、AGS Admin Portal でのマッチとセッションの設定プロセスを理解している必要があります。

手動 DS セッションの設定

手動 DS セッションを設定するには、以下のセクションの手順に従ってください。

セッションテンプレートの設定

セッションテンプレートで、専用サーバー (DS) の手動準備設定オプションを有効にする必要があります。

必要な権限

DS が手動で DS セッション準備完了ステータスを送信できるように、DS の IAM OAuth クライアントに以下の権限を追加する必要があります。

権限アクション
ADMIN:NAMESPACE:{namespace}:SESSION:GAME[UPDATE]

AGS Game SDK を使用したセッション準備完了の送信

以下は、AGS OSS を使用して DS セッション準備完了通知を送信するコードスニペットです。すべての DS 準備が完了した後にこのコードを呼び出す必要があります。リクエストが正常に送信された後、ゲームクライアントは DS ステータス変更通知を受信し、DS に参加できるようになります。

FOnlineSessionV2AccelBytePtr SessionInterface;
FOnlineSessionV2AccelByte::GetFromWorld(GetWorld(), SessionInterface);

if (SessionInterface != nullptr)
{
SessionInterface->AddOnSendDSSessionReadyCompleteDelegate_Handle(FOnSendDSSessionReadyCompleteDelegate::CreateLambda([](const FOnlineError& ErrorInfo)
{
if (ErrorInfo.bSucceeded)
{
UE_LOG_AB(Verbose, TEXT("SEND DS READY SUCCESS!!!"));
}
}));

SessionInterface->SendDSSessionReady();
}