ボイスチャットをゲームに統合する
注釈:本資料はAI技術を用いて翻訳されています。
ボイスチャットラッパーは現在 Unreal Engine でのみサポートされています。Unity のサポートは近日公開予定です。
概要
Unreal Engine 用の AccelByte Online Subsystem (OSS) には、ボイスチャットラッパーが含まれています。このラッパーは IVoiceChat インターフェースをサポートしており、EOSVoiceChat はその一例です。この記事では、プッシュツートークボイスチャットラッパーを Unreal Engine ゲームに統合する手順を説明します。
前提条件
この記事のすべての手順を完了するには、以下が必要です。
- Unreal
- Unreal Engine 4.27.2 以上
- OnlineSubsystem (OSS) の使用に関する知識
- プロジェクトにインストールされた AGS SDK および OSS プラグイン
設定
ボイスチャットをサポートするには、ゲームクライアントで以下の設定を行います。
- Unreal
[OnlineSubsystem]
bHasVoiceEnabled=true
[Voice]
bEnabled=true
[/Script/Engine.GameSession]
bRequiresPushToTalk=false
ローカルおよびリモートトーカーの登録
Session クラスに RegisterPlayers メソッドを呼び出してローカルおよびリモートトーカーの登録を含めることができます。これにより、プレイヤーがゲームセッションやパーティー(パーティーはセッションの一種です)に参加する際に、ボイスチャットへのプレイヤー追加プロセスが簡素化され、シームレスなエクスペリエンスが提供されます。
- Unreal
FName SessionName;
TArray<TSharedRef<const FUniqueNetId>> Players;
bool bWasInvited;
SessionInterface->RegisterPlayers(SessionName, Players, bWasInvited);
プッシュツートーク用のボタンを割り当てる
プッシュツートークを有効にするには、プレイヤーが他のプレイヤーと話すためにマイクをオン/オフできるボタンを割り当てます。この設定はゲームによって異なります。以下のサンプルコードは、スラッシュ / キーをボイスチャットの制御に設定する方法を示しています。
- Unreal
[/Script/Engine.InputSettings]
...
+ActionMappings=(ActionName="ToggleSpeak",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Slash)
void AGamePlayerController::BeginPlay()
{
...
#if !UE_SERVER
InputComponent->BindAction("ToggleSpeak", EInputEvent::IE_Pressed, this, &APlayerController::StartTalking);
InputComponent->BindAction("ToggleSpeak", EInputEvent::IE_Released, this, &APlayerController::StopTalking);
#endif
}
既知の問題
- Unreal
-
Windows サーバー(ローカル専用サーバー)と Linux 専用サーバーの間にはいくつかの違いがあり、異なる動作につながる可能性があります。例えば、Linux サーバーはプッシュツートーク設定を読み取ることができません。Linux サーバーはデフォルトで有効になっている設定のみを使用できます。つまり、サーバーは常にネットワークボイスを無効にするコマンドを送信するため、プレイヤーがキーを押さずに自由に話せるようにネットワークボイスを有効にするプロセスをゲームに実装する必要があります。
-
ボイスチャット機能は専用サーバーで実行されるゲームセッションでテストされ、動作していますが、現在ピアツーピア(P2P)接続ではテストされていません。
トラブルシューティング
このセクションでは、サービスを使用する際に発生する可能性のある一般的なエラーや問題と、それらを解決する方法に関する推奨事項を確認できます。
- Unreal
ローカルで 2 つのクライアントをテストする際にプッシュツートークの音声が聞こえない
プッシュツートークを使用してローカルで 2 つのクライアントを実行する場合、一方のクライアントでボイスチャットが聞こえない問題が発生する可能性があります。これは、Unreal がデフォルトでウィンドウがフォーカスを失ったインスタンスの音声をミュートするためです。同じマシンでテストする際にこれを解決するには、DefaultEngine.ini のフォーカスされていない音声モディファイアを 0.0 ではなく 1.0 に更新します。
[Audio]
UnfocusedVolumeMultiplier=1.0