This document is about: VOICE 1
SWITCH TO

Photon Voice1은 Photon Voice의 첫 버전입니다.        현재는 리팩터링/확장을 거친 Photon Voice 2이 준비되어 있으므로 새로운 프로젝트를 시작할 경우에는 Photon Voice 2를 사용하시는 것을 권장합니다.

자주 문의하는 질문들

저에게 적합한 Photon 제품은 무엇인가요?

이 질문에 답하기는 좀 까다롭습니다. 왜냐하면 이는 만들고 있는 게임과 프로젝트의 특성에 따라 달라지기 때문입니다.
하지만 다음과 같이 권고해드립니다:

Photon Realtime 과 PUN의 차이점은 무엇인가요?

Photon Realtime 과 PUN 모두 동일한 API 기반입니다: LoadBalancing API.
이 두 제품 모두 동일한 백엔드, 동일한 서버 어플리케이션, 동일한 저수준 기능, 동일한 핵심 개념을 공유합니다.
우선, PUN 은 더 좋은 UNet (이전 Unity Networking)이었습니다: 동일한 API를 유지하면서 더 견고한 백엔드와 더 많은 기능이 있습니다.
그후 천천히 발전하여 Unity에서 최고의 멀티 플레이어용 솔루션이 되었습니다.

우리에게는 Photon Realtime Unity SDK도 있으나 PUN에는 다음과 같은 고수준의 기본 제공 기능이 있습니다:

  • Magic Unity 콜백
  • 직렬화하고 동기화하는 추가 유니티 컴포넌트. 네트워크화된 객제: PhotonView 에서 가장 중요한 것 중 하나
  • PunRPC
  • 오프라인 모드
  • ...

여기에서 더 자세히 알아보세요.

PUN 이 webhooks룸 상대 지속을 지원하지만, 저장된 게임을 로드할 때 네트워크로 연결된 개체의 상태를 100% 다시 라우팅 할 수 없습니다.
여기를 자세히 읽어보십시오.

Photon Cloud

Photon Cloud는 다운되나요?

Photon Cloud 상태는 여기에서 확인하거나 트위터에서 @exitgames를 팔로우하여 상태 업데이트에 대해 알림을 받으십시오.

기본 Photon 지역은 어디인가요?

고객들은 최소 하나의 지역을 사용할 수 있으면 Photon Cloud에 연결할 수 있어야합니다.
이에 대해 보장을 위해, 기본값이 구성되어있거나 개발자가 명시적으로 값을 설정하지 않거나 "최적 지역" 옵션을 선택하지 않을 때 사용됩니다.
기본값은 클라이언트 SDK에 따라 다양할 수 있습니다.
원시 SDK에서는 OpGetRegions 에 의해 서버에서 리턴되는 지역 목록의 첫 번째 인덱스에 있는 값입니다.
Unity와 DotNet SDK에서 기본 지역은 "EU" 입니다.

일부 지역을 사용할 수 없도록 하는 것이 가능한가요?

네.
허용된 지역을 정의하여 다른 방식으로 작동합니다.
"관리화면 지역 필터링"에 대해 더 읽어보십시오.

Photon Voice

대화내용을 파일로 어떻게 저장하나요?

두개의 부분으로 나누어서 답변드립니다:

첫 번째 , 수신 음성 스트림:

Photon Voice 스트림은 쌍을 사용하여 고유하게 식별됩니다. PlayerId 와 VoiceId.
그래서 이 쌍을 보면 어디에서 음성 스트림이 왔는지 추측할 수 있습니다: 어떤 플레이어와 어떤 레코더.
원격 스트림에 대한 세 가지 이벤트를 구독할 수 있습니다.

  • PhotonVoiceNetwork.Client.OnRemoteVoiceInfoAction: 새 원격 음성 스트림이 생성되고 정보가 수신됩니다(전송 시작됨).
  • PhotonVoiceNetwork.Client.OnAudioFrameAction: 오디오 프레임이 특정 원격 음성 스트림에서 수신됩니다.
  • PhotonVoiceNetwork.Client.OnRemoteVoiceRemoveAction: 원격 음성 스트림이 종료되고 파괴됩니다(전송 중지됨).

들어오는 원격 음성 스트림 전체를 캡처하려는 경우 다음과 같이 수행할 수 있습니다:

  1. OnRemoteVoiceInfoAction 핸들러에서 스트림에 대한 파일을 생성하고 오픈합니다.
  2. OnAudioFrameAction 핸들러에서 오디오 데이터의 프레임을 작성합니다.
  3. OnRemoteVoiceRemoveAction 핸들러에서 파일을 저장하고 닫습니다.

또는 사용자 입력에 따라 OnAudioFrameAction 파일을 열고 업데이트할 수 있습니다.

두 번째, 발신 음성 스트림:

발신 음성 스트림은 Voice.LocalVoiceAudio<T>.IProcessor 를 생성하여 로컬 음성 처리 파이프라인내에 삽입할 수 있습니다.

PhotonVoiceCreated 유니티 메시지를 가로채려면 PhotonVoiceRecorder로서 동일한 GameObject에 컴포넌트를 붙여야 합니다.
IProcessor.Process 에서 로컬로 녹음된 오디오 프레임을 찾을 수 있습니다.
데모는 TestVoice 폴더의 "DelayProcessor.cs"를 참조하세요.

PhotonVoiceRecorder로 사용자 지정 음성 소스를 어떻게 사용하나요?

PhotonVoiceRecorder를 변경하여 사용자 지정 오디오 소스에서 생성된 오디오를 전송하려면 다음을 수행합니다:

첫 번째 방법: 데이터 스트림은 소비자가 주도합니다.

AudioClipWrapper 이 이 접근법의 샘플입니다.
편집기에서 할당된 오디오 클립을 스트리밍합니다.

  1. 오디오를 읽는 클래스를 생성하고 ExitGames.Client.Photon.Voice.IAudioReader 인터페이스를 구현합니다. 예를들어, MyAudioReaderSource.

  2. 에디터에서 PhotonVoiceRecorder의 SourceFactory 로 설정합니다.(또는 코드로).

  3. 어플리케이션이 초기화될 때 클래스의 인스턴스를 생성합니다.(PhotonVoiceRecorder의 생성전):

    C#

    // MyAudioSource is just an example, replace with your own class name and constructor
    PhotonVoiceNetwork.AudioSourceFactory = (rec) => new MyAudioReaderSource(); 
    
  4. 클라이언트가 음성 룸에 연결되어 있고 PhotonVoiceRecorder가 전송중이면 사용자 지정 오디오 소스 인스턴스에서 IAudioReader.Read(float[] buffer) 메소드가 호출됩니다. (예를들어, MyAudioReaderSource).
    사용자 지정 오디오 소스 인스턴스의 IAudioReader.SamplingRate 속성에 의해 리턴된 호출 빈도와 버퍼 크기가 에서 반환된 샘플링 속도를 충족하도록 조정됩니다. (예: MyAudioReaderSource).

두 번째 방법: 데이터 스트림은 프로듀서에 의해 구동됩니다

"AudioUtil.cs" 의 ToneAudioPusher 는 이 접근법의 샘플입니다.

  1. 이 경우에서 대신 ExitGames.Client.Photon.Voice.IAudioPusher 인터페이스를 구현하는 것은 더 편리 할수도 있습니다. 예를들어, MyAudioPusherSource.
    콜백을 주로 하는 저장하는 IAudioPusher.SetCallback 메소드만 구현하면 됩니다.

  2. 에디터에서 PhotonVoiceRecorder의 SourceFactory 로 설정합니다(또는 코드에서).

  3. 어플리케이션이 초기화될 때 클래스의 인스턴스를 생성합니다.(PhotonVoiceRecorder의 생성전):

    C#

    // MyAudioSource is just an example, replace with your own class name and constructor
    PhotonVoiceNetwork.AudioSourceFactory = (rec) => new MyAudioPusherSource(); 
    
  4. 스트리밍 중에는 주기적으로 샘플이 있는만큼 IAudioPusher.SetCallback 콜백 세트를 호출하기만 하면 됩니다.(예: MonoBehaviour.OnAudioFilterRead) 샘플이 있는 만큼 있습니다.
    Photon Voice에서 모든 버퍼링 작업을 수행해 줄것입니다.

과금

학생, 취미자 또는 인디 개발자를 위한 특별 제안이 있나요?

저희의 모든 제품에는 프리티어와 일회 지불하는 가격 정책이 있습니다.
또한 우리는 Unity 에셋 스토어에서 판매를 하고 있으며 때로는 바우처를 제공해드립니다.

Photon 애플리케이션 하나에 대해 100 CCU 플랜을 하나 이상 결합할 수 있습니까?

아닙니다.
100 CCU 플랜은 겹쳐서 사용할 수 없으며 AppId당 딱 한 번만 적용할 수 있습니다.
여러개의 PUN+ 에셋 시트를 구입한 경우 AppId 별로 100 CCU에 대해 리딤해주어야 합니다.
단일 앱에 대해 CCU가 더 필요한 경우, 다음 단계의 플랜은 500 CCU 입니다.
월간 또는 연간 플랜에 가입한 경우 월/연간 플랜 CCU에 추가적으로 60개월 동안 100개의 CCU를 추가로 보관할 수 있습니다.

Back to top