앞선 포스팅에서 말한 것처럼 이번 시리즈에선 포톤 서버를 이용할 것이다. 하지만 이것은 말 그대로 "서버"를 클라우드로 할 것인지 개인 PC로 할 것인지를 결정한 것이고, 사용자들이 서버에 어떻게 접속할 것인지에 대한 방법은 아직 결정하지 않았다.
이를 위한 것이 PUN(Photon Unity Networking) 2 솔루션이다.
포톤 펀은 기본 Unity Networking에 Photon Realtime을 추가해 확장한 것으로, 실시간 호스팅과 멀티 플레이를 위해 만들어진 패키지다. 다양하고 쉬운 기능 제공 덕분에 유니티 기반 멀티 게임 개발에서 많이 사용되는 솔루션이다.
포톤 챗은 어플리케이션에 간단하게 채팅 기능을 추가할 수 있는 솔루션으로, 단독으로 사용하여 개별 네트워킹 시스템에 적용할 수도 있지만 Photon의 다른 서비스와 함께 이용할 수 있는 유용한 솔루션이다.
위 두 솔루션을 이번 애플리케이션에서 사용할 것이므로 에셋 스토어에서 다운로드 받도록 하자.
주의할 점은 Photon Chat 먼저 설치하고 Photon PUN 2를 설치해야 한다는 것이다. Photon Chat을 임포트할 것인데 Photon PUN 2를 먼저 임포트하면 충돌이 생기기 때문에 반드시 Photon Chat을 먼저 설치해주자.
Unity Asset Store에서 Photon Chat을 검색해 다운로드 및 임포트해준다. 그러면
위와 같이 챗 패키지를 셋업하는 창이 출력될 것인데, 여기에 자신의 Photon Chat application 정보를 입력하면 된다.
초기에 이 부분을 생략하고 그냥 넘어갔더라도 당황하지 않아도 된다. 유니티 에디터 상단 탭에서 [Window - Photon Chat - Setup]을 따라가면 똑같은 창을 띄울 수 있고, 또는 Project view에서 [Assets - Resources - ChatSettingsFile]에서 수정할 수도 있다.
애플리케이션 정보를 얻기 위해 포톤 홈페이지에 접속하여 로그인한 뒤 새 애플리케이션 만들기를 누르고 [Photon 종류]를 Photon Chat으로 변경해준 뒤 나머지 항목은 자유롭게 작성한다.
그러면 위와 같이 포톤 챗 애플리케이션이 생성됐을 것인데, 여기의 어플리케이션 ID인 a0ee9644-e... 부분을 클릭하면 복사 가능한 상태로 드래그 될 것인데, 이걸 그대로 복사해서 위에서 봤던 Photon Chat Settings 창의 [AppId or Email] 칸에 붙여넣기 해주면 셋업이 완료된다.
이후 에셋 스토어에서 Photon PUN 2도 설치해주고 같은 방식으로 셋업해주면 된다. PUN의 Photon 애플리케이션은 새 애플리케이션 만들기에서 Photon 종류를 Photon PUN으로 변경하고 동일하게 생성한 뒤 어플리케이션 ID를 복사해 붙여넣어주자.
이후 [Assets/Photon/PhotonUnityNetworking/Resources] 경로를 따라가 PhotonServerSettings 에셋을 열면 아래와 같은 창이 뜰 것이다.
빨간 색으로 칠한 부분만 수정해주면 되는데, Add Id Chat엔 아까 입력한 Photon Chat 애플리케이션의 App Id를 입력하면 되고, Server와 Port는 서버로 사용할 PC의 IP address 및 Port 번호를 입력하면 된다. 자신의 개인 PC를 서버로 만드는 방법은 유튜브 고라니 채널의 Photon Server 유니티 멀티게임 만들기 webinar 1탄에서 상세하게 가르쳐주니 이를 참고하자.
또한 클라우드가 아닌 개인 서버를 사용할 것이기 때문에 User Name Server 필드의 체크를 해제해 Photon Server SDK를 사용하도록 설정해준다. 우리가 개발하는 시스템의 경우 위 세팅에서 Add Id PUN 필드에 Photon Cloud 애플리케이션의 아이디를 입력하지 않기 때문에 User Name Server 필드가 체크된 상태라면 [GetRegions failed. Can't provide regions list. ReturnCode: -2: Unknown operation code] 와 같은 오류 코드를 마주하게 될 것이다.
Protocol Fallback은 현재 사용하는 프로토콜로 초기 연결에 실패하면 자동으로 다른 프로토콜을 시도하는 항목인데, 이 부분도 체크를 풀어주자.
이렇게 포톤 챗과 펀을 모두 설치하면 아마 아래와 같은 오류창을 만나게 될 것이다.
ChatEditer라는 것이 현재 컨텍스트에 존재하지 않는다는 것인데, 해결책은 Project 창에서 [Assets - Photon - PhotonChat - Code - Editor]에서 ChatEditor.cs를 찾거나 검색창에 "ChatEditor"를 검색해 해당 스크립트를 연다.
스크립트 편집기가 열리면 빨간줄로 표시된 #if !PHOTON_PUNITY_NETWORKING 부분과 세트로 오는 제일 마지막 줄의 #endif 라인을 지워주는 것으로 문제를 해결할 수 있다.
안녕하세요 세동네님. 먼저 포스팅한 글 잘 읽었습니다. 감사합니다.
그래서 제가 하나 자문을 좀 받고자 하는데요.
제가 유니티를 이용해서 모바일 메타버스를 만들려고 하는데요.
이프렌드처럼 호스트가 30명 정도 수용할 수 있는 방을 만들고 사람들 참여하는 형식으로 만들려고해요.
포톤2를 이용해서 충분히 개발이 가능할까 궁금합니다.