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

SDKを使用したDS Hubの設定

Last updated on July 15, 2026

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

Overview

AccelByte Gaming Services(AGS)DS Hubは、The WebSocket Protocolを使用して、ゲームサーバーとバックエンドサービスの間の継続的な接続を提供します。WebSocketは、サーバーとバックエンドの間で双方向通信を可能にすることで、信頼性の高いリアルタイムデータ転送を実現します。

この記事では、AGS Game SDKを使用してDS Hubを設定する方法について説明します。

目標

この記事の目標は、AGS Game SDKを使用して以下を行う方法を示すことです。

  • AGS DS Hubへの接続
  • 接続イベントと切断イベントの処理
  • 通知の受信

前提条件

この記事の手順を完了するには、以下が必要です。

  • AGS Admin Portalへのアクセス
  • ゲームサーバーにインストールされたAGS Game SDK
  • DS Hubの認証情報(ゲームサーバーのデプロイ時に取得)

DS Hubへの接続

このセクションでは、ゲームサーバーをDS Hubに接続する方法を説明します。

FOnlineSubsystemAccelByte* AccelByteSubsystemPtr = static_cast<FOnlineSubsystemAccelByte*>(IOnlineSubsystem::Get(ACCELBYTE_SUBSYSTEM));

if (AccelByteSubsystemPtr == nullptr)
{
return;
}

const FOnlineSessionV2AccelBytePtr SessionInterface = StaticCastSharedPtr<FOnlineSessionV2AccelByte>(AccelByteSubsystemPtr->GetSessionInterface());

if (SessionInterface == nullptr)
{
return;
}

const FOnRegisterServerComplete OnRegisterServerComplete =
FOnRegisterServerComplete::CreateLambda([&](bool bWasSuccessful) {
bRegisterSuccess = bWasSuccessful;
bRegisterServerDone = true;
});

SessionInterface->RegisterServer(NAME_GameSession, OnRegisterServerComplete);
WaitUntil(bRegisterServerDone, TEXT("Wait until register server success ..."));

通知の受信

DS Hubは、AGSサービスからさまざまな通知を受信できます。以下では、これらの通知を受信する方法を説明します。


var dshubClient = AccelByteSDK.GetServerRegistry().GetApi(notifications.ApiId).GetDsHub();

// AMSサーバーのクレーム通知を受信する。ゲームサーバーはAGSサービスに対して必要なアクションを実行できます
dshubClient.MatchmakingV2ServerClaimed += (result) =>
{
if (result.IsError)
{
Debug.LogWarning($"Failed to claim DS. Error: {result.Error.Message}");
}
else
{
Debug.Log($"Success to claim DS: {result.Value}");
}
};

// Matchmaking v2のバックフィル提案を受信する。ゲームサーバーはその提案を受け入れる/拒否できます
dshubClient.MatchmakingV2BackfillProposalReceived += (result) =>
{
if (result.IsError)
{
Debug.LogWarning($"Failed to receive backfill proposal. Error: {result.Error.Message}");
}
else
{
Debug.Log($"Success to receive backfill proposal: {result.Value}");
}
};

// ゲームセッション終了通知を受信する。ゲームサーバーはAGSサービスに対して必要なアクションを実行できます
dshubClient.GameSessionV2Ended += (result) => {
if (result.IsError)
{
Debug.LogWarning($"Failed to receive game session ended notification. Error: {result.Error.Message}");
}
else
{
Debug.Log($"Success to game session ended notification: {result.Value}");
}
};

// ゲームセッションメンバー変更通知を受信する。ゲームサーバーはAGSサービスに対して必要なアクションを実行できます
dshubClient.GameSessionV2MemberChanged += (result) => {
if (result.IsError)
{
Debug.LogWarning($"Failed to receive game session ended notification. Error: {result.Error.Message}");
}
else
{
Debug.Log($"Success to receive game session member changed notification: {result.Value}");
}
};

受信できる通知の一覧

DS Hubは、AGSサービスからさまざまな通知を受信できます。DS Hubが一般的に受信する通知は以下のとおりです(ペイロードの詳細については、各通知をクリックしてください)。

ペイロードの完全な例とサーバー通知の完全なリストについては、サーバー通知を参照してください。

ベストプラクティス

  1. 接続管理

    • 指数バックオフを使用した再接続ロジックを実装する
    • 接続タイムアウトを適切に処理する
    • デバッグのために接続イベントをログに記録する
    • 再接続戦略を参照: WebSocket再接続戦略
  2. 通知の処理

    • 通知を非同期で処理する
    • 処理前に通知のペイロードを検証する
    • 不正な形式のメッセージに対するエラー処理を実装する
    • ByteWarsゲームの実装例を参照
  3. セキュリティ

    • 認証情報を安全に保管する
    • 初回接続にはHTTPSを使用する
    • サーバー証明書を検証する

よくある問題と解決策

  1. 接続の失敗

    • DS HubのURLと認証情報を確認する
    • ネットワーク接続を確認する
    • ファイアウォールの設定が適切であることを確認する
  2. メッセージの処理

    • 適切なJSON解析エラー処理を実装する
    • 想定外のメッセージ形式を適切に処理する
    • デバッグのために問題のあるメッセージをログに記録する

サーバーへの通知の送信

必要な権限:

  • Private Cloudで必要な権限 ADMIN:NAMESPACE:{NAMESPACE}:DSNOTIFICATION
  • Public Cloudで必要な権限

管理者またはサービスは、このエンドポイントを使用して、サーバーにカスタム通知を送信できます。

レスポンスコード

このエンドポイントは、以下のHTTPステータスコードを返します。

  • 200 - 成功。通知がサーバーに正常に送信されました。
  • 404 - Not Found。これは以下の場合に発生します。
    • 指定されたサーバー(serverId/DS ID/サーバー名)が見つからない
    • サーバーがDS Hubに接続されていない
    • 無効なサーバーIDが指定された

リクエストの例


curl -X POST \
https://{domain}/dshub/v1/admin/namespaces/{namespace}/servers/{serverId}/notify \
-H 'Authorization: Bearer {token}' \
-H 'Content-Type: application/json' \
-d '{
"topic": "CUSTOM_NOTIFICATION",
"payload": "{\"message\": \"test notification\"}"
}'