This document is about: FUSION 1
SWITCH TO

수정중인 페이지 입니다.

동적 오디오 그룹


Available in the Industries Circle
Circle
Fusion Industries 프로토 타이핑 애드온

동적 오디오 그룹

동적 오디오 그룹 기능을 사용하면 대역폭을 사용하거나 사용자의 거리에서 노이즈를 추가하지 않고도 로컬 사용자 주변의 모든 원격 사용자와 대화할 수 있습니다.
정의된 거리를 초과하는 사용자는 들리지 않습니다.
적응된 사운드 공간화 및 감쇠와 함께 이는 자연스러운 듣기를 제공합니다.

현재 구현은 Photon Voice 관심 그룹을 기반으로 합니다.

각 사용자는 하나의 고유한 관심 그룹에서 말을 하며, 이 그룹은 절대 변경되지 않습니다.
그러나 그가 듣는 그룹 목록은 필요한 대역폭을 제한하는 다른 플레이어의 근접성에 따라 동적으로 수정됩니다.
게다가 고립된 사람들은 대역폭 소비를 더 피하기 위해 네트워크를 통해 자신의 목소리를 보내지 않습니다.

이 기능은 DynamicAudioGroupMember 클래스에 의존합니다.

DynamicAudioGroupMember

DynamicAudioGroupMember는 각 네트워크 플레이어 프리팹에 위치합니다
Spawned()에서는 플레이어에 대해 고유한 오디오 GroupId가 계산됩니다(즉, 플레이어마다 고유한 GroupId가 있습니다). 그러면 로컬 플레이어의 Recorder오디오 관심 그룹이 이GroupId`로 구성되고 음성 클라이언트가 이를 듣도록 구성됩니다.

C#

async void SpeakAndListenOnlyToGroup(byte groupId)
{
...
    recorder.InterestGroup = groupId;
    fusionVoiceClient.Client.OpChangeGroups(groupsToRemove: new byte[] { }, groupsToAdd: new byte[] { groupId });
...
}

플레이어가 듣는 그룹을 업데이트하려면 Update() 동안 다른 플레이어가 정의된 거리 내에 있는지 확인합니다.

C#

private void Update()
{
    CheckProximity();
}

가까이에서 발견된 각 플레이어에 대해 로컬 플레이어는 원격 플레이어의 GroupId를 듣기 시작합니다.

C#

private void CheckProximity()
{
...
    if(DistanceSqr(member) < proximityDistanceSqr)
    {
    ...
        ListentoGroupId(member.GroupId);
    }
...
}

C#

async void ListentoGroupId(byte groupId)
{
    if (!Object.HasStateAuthority) return;
    while (!IsPhotonVoiceready || !isSpeakInitialized) await Task.Delay(10);
    fusionVoiceClient.Client.OpChangeGroups(groupsToRemove: null, groupsToAdd: new byte[] { groupId });
}

반대로, 원격 플레이어가 더 이상 근접 영역에 없다면, StopListeningToGroupId() 메소드 덕분에 더 이상 듣지 않습니다.

모든 플레이어가 수행하기 때문에 각 플레이어가 자신의 GroupId로만 음성을 보내더라도 양방향 대화가 가능합니다.

또한 플레이어는 다른 플레이어와 친할 수 있지만 다른 닫힌 룸에 있기 때문에 CheckProximity()는 해당 방이 고립된 경우 다른 멤버의 청취를 중단해야 하는지 여부를 확인합니다(사용자가 고립된 방에 있을 경우 AudioRoomMemberadditionalGroupFilter 파라미터가 설정됩니다).

C#

if(additionalGroupFilter != member.additionalGroupFilter)
    {
    // No matching filter
    StopListeningToMember(member);
    }

다운로드

이 애드온의 최신 버전은 애드온 프로젝트에 포함되어 있습니다.

지원하는 토폴로지

  • 공유 모드
  • 호스트 모드

변경 내역

  • 버전 1.0.0(2023/07/06) : 최초 릴리즈
Back to top