PUN Voice 데모
PUN Voice 데모는 간단한 4명의 플레이어가 서로 대화를 할 수 있는 모바일 게임입니다.
매치메이킹과는 달리 이 게임은 4개의 캐릭터로 플레이하며 3개의 다른 카메라 뷰가 있습니다.
이 데모는 Unity 튜토리얼 "Survival Shooter" 를 기반으로 제작되었으며
Photon Voice 패키지 에서 사용할 수 있습니다.
설정
PUN Voice 데모 따라 해보기:
- 에셋 스토어에서 패키지 다운로드.
- 유니티에서 프로젝트를 열고 DemoPunScene 을 로드 합니다.
- 유니티 인스펙터에서 PhotonServerSettings 를 (메뉴: "Window" -> "Photon Unity Networking" -> "Resources" -> "Highlight Server Settings")를 통해 오픈 합니다:
- PUN 환경 설정을 합니다:Photon Realtime 관리화면 에서 Realtime AppId 를 복사 하여 붙여 넣습니다.
- Voice 환경설정을 합니다: Photon Voice 관리화면에서 Voice AppId 를 복사하여 붙여 넣습니다.
- 빌드하고 수행하여 게임을 즐겨 보세요!
기능
이 섹션에서는 데모에서 사용한 기능에 대해서 설명 할 것 입니다.
여러 캐릭터들
친구들과 데모를 수행 했을 때 모든 플레이어는 자신만의 캐릭터를 가지고 있으며 무작위 위치로 스폰된다는 것을 보셨을 것 입니다.
CharacterInstantiation
클래스를 이용하여 처리 됩니다.OnJoinedRoom
콜백에서는 액터 번호를 기반으로 한 프리팹을 선택했고 무작위 위치로 스폰 해 줍니다.
설정
UI 에서 쉽게 접근할 수 있는 설정을 작성하여 Photon Voice 어플리케이션을 편리하게 해주는 단축키 제공을 하려고 합니다.
게임내 설정
Photon Voice 어플리케이션의 런타임 설정에서 가장 중요한 부분은 하나의 ToggleGroup
으로 묶는 것 입니다:
- Transmit: 이 설정을 사용할 수 없도록 하려면 마이크를 끄는 것 입니다. 그렇지 않으면 사운드가 로컬에서 기록되고 전송될 것 입니다.
- Mute Speaker: 이 설정은 말 하면 볼륨을 0 으로 설정하여 스피커를 묵음 시키게 됩니다.
- VoiceDetection: 이 설정은 음성 감지 기능을 사용 또는 미사용으로 설정 할 수 있습니다.
- DebugEcho: 테스팅 Voice 어플리케이션이 하나의 클라이언트만 사용할 때 유용합니다. 켜져 있으면 서버로 전송 된 오디오 스트림은 원래 전송한 사람에게 되돌아 갈 것 입니다. 디버깅 할 때만 사용하세요.
전역 설정
- AutoConnect: PUN 클라이언트가 "PUN 룸"에 참여 했을 때 자동으로 Photon Voice 클라이언트가 "voice 룸" 에 참여 합니다.
- AutoDisconnect: PUN 클라이언트가 접속 해제 되었을 때 자동으로 Photon Voice 클라이엔트에서 접속 해제 됩니다.
- AutoTransmit: Photon Voice 클라이언트가 "voice 룸"에 참가하자마나 오디오 전송을 시작 합니다.
- DebugVoice: 디버그 모드를 토글 합니다.
디버그 텍스트는 스크린의 왼쪽 구성에 다음 사항이 포함되어 나타납니다:PUN 과 Voice 어플리케이션의 ClientState
, 사용되고 있는 마이크 장치와 몇개의 음성 통계들.
켜져 있으면 모든 "말하는" 캐릭터의 상단에 Voice 스피커 lag 가 표시 됩니다.
Voice 컴포넌트들 강조하기
어떻게 두 개의 메인 Voice 컴포넌트가 동작하는지 설명하기 위해서 우리는 모든 플레이어 상단에 나오는 isometric 뷰를 사용 하였습니다.
이 뷰는 "World Space" 모드 안에 있는 유니티의 새로운 UI 시스템을 기반으로 하며 2개의 아이콘이 있습니다:
"Speaker" 아이콘
이 아이콘의 목적은 플레이어의 목소리가 플레이 될 때 보여 집니다. PhotonVoiceSpeaker
컴포넌트에 바인드 되어 있습니다.
이 이미지는 이 코드에 기반하여 보여지거나 감추어 집니다:
C#
speakerSprite.enabled = speaker != null && speaker.IsPlaying &&
PhotonVoiceNetwork.ClientState == ExitGames.Client.Photon.LoadBalancing.ClientState.Joined;
그리고 DebugVoice 전역 설정이 토글 되었을 때 텍스트는 동일한 뷰에서 계속 변경된 숫자를 포함한 것을 표시 하기 시작할 것 입니다.
이것은 스피커 컴포넌트에 있는 lag 에 대한 정보를 보여 주어야 합니다. 다음처럼 설정 사용 또는 사용 불가로 되어 질 수 있습니다:
C#
bufferLagText.enabled = showSpeakerLag && speaker.IsPlaying && speaker.IsVoiceLinked;
bufferLagText.text = string.Format("{0}", speaker.CurrentBufferLag);
"Bubble speech" 아이콘
이 아이콘의 목적은 플레이어 음성이 녹음되고 전송될 때를 표시 하는것 입니다.
PhotonVoiceRecorder
컴포넌트에 바인드 되어 있습니다.
아래 코드에 의해 이 이미지가 표시 또는 비표시 됩니다:
C#
recorderSprite.enabled = recorder != null && recorder.IsTransmitting &&
PhotonVoiceNetwork.ClientState == ExitGames.Client.Photon.LoadBalancing.ClientState.Joined;
이 사항에 더 파악하고 싶으시면 "Highlight.cs" 파일과 클래스를 살펴 보시기 바랍니다.
다른 카메라들
Photon Voice 는 AR 과 VR 을 포함한 모든 유형의 게임에서 사용할 수 있기 때문에 3D 사운드에서 얼마나 좋은지 보여주기 위한 예제를 연습하는데 도움이 됩니다.
이 목적으로 우리는 3개 카메라 모드를 준비 했습니다:
- "First Person"
- "Third Person"
- "Orthographic" (디폴트)
룸에 참여하기만 하면 언제든지 자유롭고 끊김없이 두 사이를 변경할 수 있습니다.
3개의 버튼들은 플레이어의 캐릭터가 인스턴스 생성 되면 스크린의 우측 모서리에서 사용할 수 있습니다.
모바일 조이스틱
이 데모에서는 모바일 터치 입력을 지원 하고 있습니다.
스마트폰 또는 태블릿에서 조이스틱 UI 를 사용할 수 있는데 데모에서는 유니티의 표준 에셋을 기반으로 만들어져 있습니다.
이 기능을 사용하기 위해서는 유니티의 메뉴에서 "Mobile Input" 을 사용하도록 설정하고 유니티의 빌드 설정에서 이에 상응하는 플랫폼으로 전환 해주어야 합니다.