Vivox 認証サービス
注釈:本資料はAI技術を用いて翻訳されています。
Overview
AccelByte Gaming Services (AGS) Extend Service Extension を使用すると、Vivox 認証サービスを実装でき、AGS、Vivox、ゲームクライアント間のシームレスな連携が可能になります。この Vivox 認証サービスは、ゲームクライアントが Vivox とやり取りするために必要な署名付き Vivox トークンを生成します。各トークンの有効期限は 90 秒であるため、ゲームクライアントは定期的にサービスへ新しいトークンをリクエストする必要があります。
Prerequisites
-
Windows 11 WSL2、Linux Ubuntu 22.04、または macOS 14+ に以下のツールがインストールされていること。
a. Docker(Docker Desktop 4.30+/Docker Engine v23.0+)
-
Linux Ubuntu の場合:
- Ubuntu リポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を反映させるため、ログアウトして再度ログインします。
- Ubuntu リポジトリからインストールするには、
-
Windows または macOS の場合:
Windows または macOS への Docker Desktop のインストール方法について、Docker のドキュメントに従ってください。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
...
- extend-helper-cli から利用可能なバイナリを使用してください。
-
-
AGS Admin Portal 環境へのアクセス権限。
-
ベース URL:
<your environment's domain URL>- AGS Public Cloud カスタマーの例:
https://spaceshooter.prod.gamingservices.accelbyte.io - AGS Private Cloud カスタマーの例:
https://dev.customer.accelbyte.io
- AGS Public Cloud カスタマーの例:
-
まだ持っていない場合は、ゲームネームスペースを作成します。ネームスペース ID を控えておいてください。
-
以下の権限を持つ
confidentialクライアントタイプで OAuth クライアントを作成します。- AGS Private Cloud カスタマーの場合:
ADMIN:ROLE[READ]ADMIN:NAMESPACE:{namespace}:NAMESPACE[READ]
- AGS Public Cloud カスタマーの場合:
- IAM > Roles (Read)
- Basic > Namespace (Read)
Client IDとClient Secretを保管しておいてください。 - AGS Private Cloud カスタマーの場合:
-
-
Vivox の設定情報。
- Vivox アプリケーション固有の発行者名(issuer name)
- Vivox ドメイン名
- Vivox 署名キー
Clone the app repository
- C#
- Go
- Java
- Python
git clone https://github.com/AccelByte/extend-vivox-authorization-service-csharp
git clone https://github.com/AccelByte/extend-vivox-authorization-service-go
git clone https://github.com/AccelByte/extend-vivox-authorization-service-java
git clone https://github.com/AccelByte/extend-vivox-authorization-service-python
Deploy in AGS
AGS で Extend アプリをデプロイするには、Admin Portal で以下の手順を実行します。
Create the Extend app
- AGS Admin Portal で、Extend Override アプリを作成したいネームスペースに移動します。
- サイドバーメニューの ADD-ONS で、Foundations > Extend > My Extend Apps > Service Extension に移動します。
- Service Extension ページで、+ Create New ボタンをクリックします。
- Create App フォームで、Extend アプリの名前と説明(任意)を入力します。
- Create をクリックします。新しい Extend アプリが Service Extension アプリの一覧に追加されます。
Upload the Extend app
-
extend-helper-cli 用の IAM クライアントを設定します。クライアントタイプ
confidentialで IAM クライアントを作成し、以下に記載されている必要な権限を割り当てます。Client IDとClient Secretのコピーを保管しておいてください。- AGS Private Cloud カスタマーの場合:
ADMIN:NAMESPACE:{namespace}:EXTEND:REPOCREDENTIALS[READ]ADMIN:NAMESPACE:{namespace}:EXTEND:APP[READ]
- AGS Public Cloud カスタマーの場合:
- Extend > Extend app image repository access (Read)
- Extend > App (Read)
- AGS Private Cloud カスタマーの場合:
-
必要な環境変数をエクスポートし、extend-helper-cli を使用して Extend アプリのコンテナイメージをビルドし、AGS にアップロードします。
<project-dir>が Extend アプリのプロジェクトディレクトリを指していることを確認してください<namespace>と<app-name>の値は、Extend アプリのApp Detailページで確認できます- 適切なイメージタグを使用してください(例:
v0.0.1)
- Linux
- Windows (WSL2)
- macOS
# AGS 環境のベース URL(例: https://spaceshooter.prod.gamingservices.accelbyte.io, https://dev.accelbyte.io など)
export AB_BASE_URL='https://xxxxxxxxxx'
# extend-helper-cli 用 OAuth クライアントの Client ID(手順1より)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli 用 OAuth クライアントの Client Secret(手順1より)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-linux_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1# AGS 環境のベース URL(例: https://spaceshooter.prod.gamingservices.accelbyte.io, https://dev.accelbyte.io など)
export AB_BASE_URL='https://xxxxxxxxxx'
# extend-helper-cli 用 OAuth クライアントの Client ID(手順1より)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli 用 OAuth クライアントの Client Secret(手順1より)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-linux_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1# AGS 環境のベース URL(例: https://spaceshooter.prod.gamingservices.accelbyte.io, https://dev.accelbyte.io など)
export AB_BASE_URL='https://xxxxxxxxxx'
# extend-helper-cli 用 OAuth クライアントの Client ID(手順1より)
export AB_CLIENT_ID='xxxxxxxxxx'
# extend-helper-cli 用 OAuth クライアントの Client Secret(手順1より)
export AB_CLIENT_SECRET='xxxxxxxxxx'
./extend-helper-cli-darwin_amd64 image-upload --login --work-dir <project-dir> --namespace <namespace> --app <app-name> --image-tag v0.0.1important- 上記のコマンドは、Extend アプリのプロジェクトとは別のターミナル、別の作業ディレクトリから実行することを推奨します。これにより、extend-helper-cli が Extend アプリ用の環境変数を誤って使用してしまうことを防げます。
- 以下のエラーが発生した場合は、トラブルシューティング: Docker login fails を参照して解決手順を確認してください。
Error saving credentials: error storing credentials - err: exit status 1, out: `error storing credentials - err: exit status 1, out: `The stub received bad data.`
イメージが正常にアップロードされると、Image Version History ページにバージョン v0.0.1 のイメージが表示されます。

Configure the Extend app
アップロードした Extend アプリをデプロイする前に、アプリが必要とする環境変数を設定する必要があります。アプリの詳細ページで、Prerequisites セクションで準備した値を使用して、以下の環境変数を設定します。
AB_CLIENT_IDAB_CLIENT_SECRETVIVOX_ISSUERVIVOX_DOMAINVIVOX_SIGNING_KEY
Deploy the Extend app
Extend アプリをデプロイするには、Deploy Latest Image をクリックします。アプリのステータスが RUNNING に更新されるまで待ちます。ステータスが RUNNING になれば、Extend アプリが正常にデプロイされたことを示します。
Run sample game client
AccelByte は、Vivox 認証サービスを試すためのサンプルゲームクライアントを提供しています。以下の手順に従ってください。
- Unreal Engine
- Unity
このサンプルゲームクライアントは、Unreal Engine 4.26 を使用した ShooterGame プロジェクト上に構築されています。それ以降のバージョンの Unreal Engine ではテストされていません。より最新の統合方法については、以下の AccelByte Vivox Unreal plugin セクションを参照してください。
-
プロジェクトをクローンします。
git clone https://github.com/AccelByte/extend-vivox-authorization-sample-game-unreal -
Unreal 用の AGS SDK を設定します。Install the AGS Game SDK ガイドの Configure the AGS Game SDK for the IAM client セクションの手順に従ってください。
-
Vivox Unreal SDK を設定します。
VivoxGameInstance.cppファイル内のVIVOX_VOICE_SERVER、VIVOX_VOICE_DOMAIN、VIVOX_ISSUERの値を、Unreal Dashboard プロジェクトの Vivox Credentials にある値に設定します。VivoxTokenProvider.cpp内のVIVOX_TOKEN_PROVIDER_URLの値を設定します。Token Provider Urlフィールドと Inspector フィールドを見つけて変更します。
-
IDE でプロジェクト(
Client/ShooterGame.uproject)を開きます。 -
Windows(64 ビット)向けにビルドしてパッケージ化します。
-
ビルドのインスタンスを 1 つ以上起動します。実行ファイル名は
ShooterGame.exeになります。 -
1 つのクライアントをホストとし、他のクライアントを参加させます。
-
プロジェクトをクローンします。
git clone https://github.com/AccelByte/extend-vivox-authorization-sample-game-unity -
プロジェクトを既存の Unity Dashboard プロジェクトにリンクします。これにより、Vivox の認証情報が Unity プロジェクトに自動的に取り込まれます。詳細については、Vivox のドキュメントを参照してください。
-
Unreal 用の AGS SDK を設定します。Install the AGS Game SDK ガイドの Configure the AGS Game SDK for the IAM client セクションの手順に従ってください。
-
Vivox Unity SDK を設定します。
MainScene.unityファイルを開きます。- Hierarchy ウィンドウで
VivoxVoiceManagerオブジェクトを見つけて選択します。 Token Provider Urlフィールドと Inspector フィールドを見つけて変更します。
-
File->Build Settings->Buildに移動してプロジェクトをビルドします。 -
ビルドのインスタンスを 1 つ以上起動します。実行ファイル名は
Client.exeになります。 -
Display Name を入力し、Login をクリックします。
AccelByte Vivox Unreal plugin
AccelByte は、Vivox のボイスチャットと AccelByte のトークン生成を統合するスタンドアロンの Unreal Engine プラグインを提供しています。このプラグインは、認証、マルチチャンネルボイス、送信制御、ミュート機能をすぐに利用できる形で処理します。
詳細については、accelbyte-vivox-unreal リポジトリを参照してください。
Dependencies
- AccelByteUe4Sdk
- AccelByteUe4SdkCustomization —
VivoxAuth::ServiceGenerateVivoxToken()を提供します。Extend Codegen CLI 経由、またはリリースページから入手できます。 - VivoxCore — Vivox SDK(クライアントプラットフォーム専用で、サーバー/Linux ビルドからは除外されます)
Configuration
プロジェクトの DefaultEngine.ini に以下を追加します。
[/Script/AccelByteVivox.AccelByteVivoxSettings]
VivoxIssuer=your-issuer
VivoxDomain=your-domain
VivoxServer=your-login-server-uri
[/Script/AccelByteUe4SdkCustomization.AccelByteCustomizationSettings]
VivoxAuthServerUrl=your-extend-vivox-auth-service-url
Setup
-
.uprojectファイルでプラグインを有効化します。{
"Name": "AccelByteVivox",
"Enabled": true
} -
AccelByteVivoxをモジュールのビルド依存関係に追加します。
Basic usage
ボイスチャットのシングルトンにアクセスし、ログイン、チャンネル、ミュートの操作に使用します。
#include "AccelByteVivoxVoiceChat.h"
auto VoiceChat = FAccelByteVivoxVoiceChat::Get();
// AccelByte 認証後にログインする
VoiceChat->Login(ApiClient, Username);
VoiceChat->OnLoginCompleted.AddLambda([](bool bSuccess) { /* handle result */ });
// ボイスチャンネルに参加する
VoiceChat->JoinChannel(TEXT("party-123"));
VoiceChat->OnChannelJoined.AddLambda([](const FString& ChannelName, bool bSuccess) {});
// 送信を制御する
VoiceChat->SetTransmissionChannel(TEXT("party-123")); // 単一チャンネル
VoiceChat->SetTransmissionToAll(); // 全チャンネル
VoiceChat->SetTransmissionToNone(); // 受信のみ
// ミュート制御
VoiceChat->SetLocalMute(true);
VoiceChat->SetPlayerMute(TEXT("party-123"), PlayerId, true);
Event delegates
| Delegate | Description |
|---|---|
OnLoginCompleted | Vivox 認証の結果 |
OnLogoutCompleted | 切断シグナル |
OnChannelJoined | チャンネル参加の成功/失敗 |
OnChannelLeft | チャンネルからの切断 |
OnParticipantAdded | プレイヤーが ID と表示名で参加した |
OnParticipantRemoved | プレイヤーが退出した |
OnParticipantTalkingChanged | ボイスアクティビティの状態変化 |
Next step
この Vivox 認証サービスを要件に合わせてカスタマイズする必要がある場合は、このガイドを参照してください。