次の方法で共有


ボイス チャットのトラブルシューティング

2 人のプレイヤーが一緒にチャットをしていて、片方または両方がお互いに聞こえない場合は、以下のトラブルシューティングを試してみてください。

チャット インジケーターの確認

PlayFab Party チャット インジケーターは、オーディオの問題のトラブルシューティングに使用できます。

PartyLocalChatControl::GetLocalChatIndicator() を使用して、ローカル チャット コントロールの瞬間的なオーディオ状態を調べます。 正常なチャット コントロールは、ライブラリがマイク入力からの音声を検出しているかどうかによって、PartyLocalChatControlChatIndicator::Silent または PartyLocalChatControlChatIndicator::Talking のいずれかを返す必要があります。

  • PartyLocalChatControlChatIndicator::AudioInputMuted が返された場合、チャッ トコントロールのアウトバウンド オーディオ ストリームは、PartyLocalChatControl::SetAudioInputMuted(true) の呼び出しで以前にミュートされており、ミュートを無効にするには PartyLocalChatControl::SetAudioInputMuted(false) の呼び出しが必要です。

  • PartyLocalChatControlChatIndicator::NoAudioInput が返された場合は、PartyLocalChatControl::SetAudioInputMuted() の呼び出しによってローカル チャット コントロールのオーディオ入力が設定されなかったか、オーディオ入力の初期化に失敗したかのいずれかです。 オーディオ入力の初期化に失敗した場合の診断方法については、次のセクションに進んでください。

PartyLocalChatControl::GetChatIndicator() を使用して、ローカル チャット コントロールとリモート チャット コントロールの音声入力状態を比較して検査します。

  • オーディオを聞くことを期待していたのに PartyChatControlChatIndicator::Silent が返された場合は、リモート オーディオ デバイスに問題があるか、リモート デバイスのチャット アクセス許可がこのチャット コントロールにオーディオを送信するように構成されていないことが考えられます。 これが期待するサウンドである場合は、次のセクションに進んでください。

  • PartyChatControlChatIndicator::Talking が返ってきてもオーディオが聞こえない場合は、ローカルのオーディオ出力デバイスに問題がある可能性があります。 オーディオ デバイスが正常であるかどうかを確認する方法については、次のセクションに進んでください。

  • PartyChatControlChatIndicator::IncomingVoiceDisabled が返された場合は、ローカル チャット コントロールが、リモート チャット コントロールからのオーディオを許可するようにチャット アクセス許可が構成されていないことを意味します。 チャット アクセス許可セクションに進みます。

  • PartyChatControlChatIndicator::IncomingCommunicationsMuted が返された場合は、以前呼び出した PartyLocalChatControl::SetIncomingAudioMuted() 経由で、入力されたオーディオがミュートされたことを意味します。 PartyLocalChatControl::SetIncomingAudioMuted() を呼び出すと、リモート チャット コントロールのミュートが解除されます。

オーディオ デバイスが正常に初期化されたことを確認する

PartyLocalChatControl::SetAudioInput() または PartyLocalChatControl::SetAudioOutput() を呼び出した直後に、PartyLocalChatAudioInputChangedStateChange または PartyLocalChatAudioOutputChangedStateChange を受信します。 これらの状態変化には、オーディオ デバイスに関連する問題のトラブルシューティングに役立つ情報が含まれます。 これらの状態変化には PartyAudioInputState フィールドと PartyAudioOutputState フィールドが含まれており、オーディオ デバイスの状態に関する情報を取得することができます。 オーディオ デバイスの状態が Initialized 以外の場合は、PlayFab Party が目的のオーディオ デバイスを使用できなかったことを意味します。 状態変化の errorDetail フィールドは、状況の詳細情報を取得するために使用することもできます。 PartyManager::GetErrorMessage() を呼び出すと、エラーの詳細を人間が読める形式で取得できます。

注意

既定では、チャット コントロールはどのオーディオ デバイスにも関連付けられません。 すべてのチャット コントロールで PartyLocalChatControl::SetAudioInput()PartyLocalChatControl::SetAudioOutput() を必ず呼び出してください。

チャット コントロールに正しいチャット アクセス許可があるかどうかの確認

PartyLocalChatControl::GetPermissions() を使用して 2 つのチャット コントロール間の PartyChatPermissionOptions を検索します。 たとえば、あるユーザー Alice が他のユーザー Bob の声を聞くことができない場合、Alice には Bob からオーディオを受信するアクセス許可があり、Bob には Alice に音声を送信するアクセス許可があることを確認する必要があります。

Alice のデバイスでは、以下のようになります。

PartyChatPermissionOptions chatPermissions;
PartyError error = localChatControlAlice->GetPermissions(remoteChatControlBob, &chatPermissions);
if (PARTY_SUCCEEDED(error))
{
    if (static_cast<bool>(chatPermissions & PartyChatPermissionOptions::ReceiveAudio))
    {
        printf("Alice can receive audio from Bob!");
    }
}

Bob のデバイスでは、以下のようになります。

PartyChatPermissionOptions chatPermissions;
PartyError error = localChatControlBob->GetPermissions(remoteChatControlAlice, &chatPermissions);
if (PARTY_SUCCEEDED(error))
{
    if (static_cast<bool>(chatPermissions & PartyChatPermissionOptions::SendAudio))
    {
        printf("Bob can send audio to Alice!");
    }
}

Windows で既定のデバイスと既定の通信デバイスを確認する

Windows でのオーディオの混乱の多い点は、既定のデバイスと既定の通信デバイスの概念に関するものです。 Windows では両方の概念がサポートされており、異なるデバイスを使用できます。 PlayFab Party は、仕様上、AudioDeviceSelectionType::SystemDefaultPartyLocalChatControl::SetAudioInputまたはPartyLocalChatControl::SetAudioOutputに渡されるときに、ライブラリの Windows バージョンの既定の通信デバイスを使用します。 トラブルシューティングとテストは、常に既定の通信デバイスに関連して実行する必要があります。