PlayFab パーティー チャットのアクセス許可とミュート
概要
PlayFab パーティーでは、プレイヤーどうしのコミュニケーション方法をきめ細かく制御できます。 PlayFab パーティーでは、チームやチャンネルを指定するのではなく、各ペアのチャット コントロール間の明示的なアクセス許可を定義する必要があります。 チャットのアクセス許可システムを使用すると、任意のペアのチャット コントロール間で、音声通信の着信と発信、またテキスト通信の着信を制御できます。
チャットのアクセス許可
チャット コントロール間の通信は既定では無効になっており、ゲーム側で各ペアのチャット コントロール間に適切な PartyChatPermissionOptions
を設定します。 チャットのアクセス許可は、実現しようとするシナリオによって決定される各チャット コントロールの関係を反映する必要があります。 たとえば、チーム対チームのシナリオでは、同じチームのメンバー間ではすべての種類の通信を許可し、相手チームのメンバー間では音声通信をブロックし、セッションに参加している全員の間ではテキストの受信を許可するように、チャットのアクセス許可を設定できます。
次の例は、ローカル チャット コントロールとリモート チャット コントロール間のすべての通信を有効にする方法を示しています。 変数 localChatControlA
は有効な PartyLocalChatControl
オブジェクトを指していますが、remoteChatControlB
はリモート デバイス上のチャット コントロールを表す有効な PartyChatControl
オブジェクトを指しています。
PartyChatPermissionOptions allOptions = PartyChatPermissionOptions::SendAudio | PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText;
localChatControlA->SetPermissions(remoteChatControlB, allOptions);
注意
チャットのアクセス許可はローカルにのみ適用されることに注意してください。 前の例では、すべての双方向通信を許可するように remoteChatControlB
がリモートで構成されている場合にのみ、localChatControlA
との双方向通信が行われます。
ミュート
ゲームには、発信オーディオ (PartyLocalChatControl::SetAudioInputMuted()
) だけでなく、リモート チャット コントロール (PartyLocalChatControl::SetIncomingAudioInputMuted()
) からの着信オーディオをミュートする機能もあります。 これらのミュートの状態は、それぞれのゲッターを介してアクセスできます。また、PartyLocalChatControl::GetChatIndicator()
と PartyLocalChatControl::GetLocalChatIndicator()
によって返されるチャット インジケーターを介して反映されます。
ミュートは、ゲーム セッションの開始時に設定したチャットのアクセス許可を変更することなく、何らかの形で一時的な制御をプレイヤーに与える場合に特に便利です。
一般的なシナリオの構成方法
プッシュして話しかける
プッシュして話しかける機能は、ローカル・ミューティングを使用して実装する必要があります。 音声を許可するには PartyLocalChatControl::SetAudioInputMuted(false)
を呼び出し、それを制限するには PartyLocalChatControl::SetAudioInputMuted(true)
を呼び出します。
チーム
A、B、C、D の 4 人のユーザーが、それぞれ個別のデバイスを使用しているとします。 ユーザー A とユーザー B が青チーム、ユーザー C とユーザー D が赤チームに属しているとします。
ユーザー A のデバイス:
// Enable all communication with teammate B
localChatControlA->SetPermissions(chatControlB, PartyChatPermissionOptions::SendAudio | PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText);
// Disable all communication with opponents
localChatControlA->SetPermissions(chatControlC, PartyChatPermissionOptions::None);
localChatControlA->SetPermissions(chatControlD, PartyChatPermissionOptions::None);
配信
ユーザー A が指示を出すリーダーで、ユーザー B、C、D は指示を聞くだけと仮定します。
ユーザー A のデバイス:
localChatControlA->SetPermissions(chatControlB, PartyChatPermissionOptions::SendAudio);
localChatControlA->SetPermissions(chatControlC, PartyChatPermissionOptions::SendAudio);
localChatControlA->SetPermissions(chatControlD, PartyChatPermissionOptions::SendAudio);
ユーザー B のデバイス:
localChatControlB->SetPermissions(chatControlA, PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText);
localChatControlB->SetPermissions(chatControlC, PartyChatPermissionOptions::None);
localChatControlB->SetPermissions(chatControlD, PartyChatPermissionOptions::None);
ユーザー C のデバイス:
localChatControlC->SetPermissions(chatControlA, PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText);
localChatControlC->SetPermissions(chatControlB, PartyChatPermissionOptions::None);
localChatControlC->SetPermissions(chatControlD, PartyChatPermissionOptions::None);
ユーザー D のデバイス:
localChatControlD->SetPermissions(chatControlA, PartyChatPermissionOptions::ReceiveAudio | PartyChatPermissionOptions::ReceiveText);
localChatControlD->SetPermissions(chatControlB, PartyChatPermissionOptions::None);
localChatControlD->SetPermissions(chatControlC, PartyChatPermissionOptions::None);