상용 서버인 포톤으로 모바일, PC, VR 크로스플레이를 지원하는 동영상 시청 공유 메타버스 앱을 구현하였다.
Photon을 이용한 실시간 네트워킹, Unity OpenXR을 이용한 VR앱 구현 및 크로스플랫폼 플레이어 구현을 목표로 하였다.
포톤사에서 유니티 전용으로 출시한 라이브 서버이다.
공식 튜토리얼로는 간단한 연결만 수행할 수 있어 추가적인 튜토리얼을 수행하였다.
세션을 만들고, 그 세션에 참여하여 트랜스폼과 애니메이션, 각종 변수들과 RPC를 이용한 동기화를 공부하였다.
VR/AR 표준 오픈소스인 OpenXR을 이용해 모든 VR기기에서 실행 가능한 애플리케이션을 구현할 수 있다.
OpenXR의 플레이어 시스템을 이용한 이동/카메라 움직임/텔레포트를 직접 구현하고, 유니티의 XR Interaction Toolkit을 이용해 UI 상호작용, 오브젝트 상호작용을 직접 구현하였다.
하나의 프로젝트로 여러 개의 플랫폼에 대한 빌드를 시도할 때 수행한 작업들을 적어두었다.
멀티플랫폼을 위한 프로젝트 내부 설정과 플랫폼 체크, 플랫폼에 따른 플레이어/오브젝트/UI 소환 방법을 주로 다루었다.
플레이어들이 앱 내에서 동영상을 시청할 수 있도록 비디오 플레이어를 구현하였다.
VideoPlayer
컴포넌트와 UI를 조합해 재생/일시정지, 재생 속도, 볼륨 등을 조절하는 비디오 플레이어 스크립트를 구현하였다.
요즘 새롭게 화두되고 있는 크로스플랫폼을 구현해본 것이 좋았다.
각 플랫폼의 입력 처리 및 화면 특징 등에 대해 분석하여 이에 맞게 플레이어를 구현하고, 또한 각 플랫폼의 성능에 맞춰 에셋 퀄리티를 조절하는 방식을 공부할 수 있었다.
또한 동영상 플레이어를 구현하면서 게임 외적으로 유니티를 사용하는 방법을 일부 엿볼 수 있었다.
이전에 로그인과 데이터베이스를 처리하는 웹서버와 연동한 경험은 있었지만, 멀티플레이를 위한 라이브 서버와의 연동을 처음 수행해보았다.
비록 클라이언트를 위해 만들어진 서버가 아니라 상용 라이브 서버였지만 컴포넌트 값 및 변수값들의 연동 방식을 알 수 있었다.
XR과 라이브 서버에 대해 미흡한 상태로 개발을 시작하여 최적화가 덜 된 결과물이 나왔다.
특히 라이브 서버에 플레이어 이동 스크립트를 틱마다 업데이트하게 한 것이 제일 큰 실수였다.
해당 프로젝트가 장기 프로젝트 형태로 오면 모든 지식을 총동원해 구현해보고 싶다.
이대로 끝내기에는 무언가 약간 아쉬운 프로젝트였다.