이 객원 포스트는 게임 기술을 사용한 신속한 프로토 타이핑을 전문으로하는 회사인 PreviewLabs의 Bernard Francois, Kasper Geeroms, Matthew Cormack, Jannes Plyson가 작성했으며 각각 창립자, 프로젝트 관리자 및 프로그래머입니다. PreviewLabs 는 2010년에 설립되어 2013년부터 Photon을 사용하고 있습니다.
Buggy Blasters는 멀티플레이어 홀로렌즈 게임 개념을 Microsoft 스토어에 최초로 등장시킨 게임입니다. 단일 플레이어 모드는 거실에서 가상 RC 버기를 운전하며, 멀티 플레이어 모드는 2명의 플레이어가 기지를 방어하며 깃발을 먼저 잡는 하이브리드 개념의 실시간 전략 게임입니다. 멀티 플레이 모드는 서로 다른 위치에 있는 두 명의 플레이어가 즐길 수 있으며 같은 위치에 있으면 홀로그래픽을 공유하게 됩니다.
PreviewLabs는 모회사인 Cronos Groep의 요청에 의해 개념을 개발했습니다. Cronos Groep은 홀로렌즈에 대한 흥미로운 사례를 제시하기 위해 광고문을 제공했는데 이것이 바로 우리가 학습한 것 입니다.
공유된 플레이 공간에 접근하기: 가능한 접근법
홀로렌즈는 공간 매핑이라는 기능을 사용하여 주변의 3D 메쉬를 생성합니다.이 메쉬는 z-버퍼링 (가상 객체를 실제 객체 뒤에 표시 할 수 있음) 및 충돌 처리에 사용할 수 있습니다. 이것은 증강 현실에서의 존재감을 크게 향상시킬 수 있습니다. 가상 현실 콘텐츠를 실제 환경과 완벽하게 통합하는 느낌입니다.
버그 및 원뿔형의 도로 표지와 같은 물건들은 환경 메쉬를 콜라이더로 사용하여 주변과 자연스럽게 상호 작용할 수 있습니다.
그러나 실시간 멀티 플레이어 게임에서는 레벨이 있는 경기장을 만들고 싶습니다. 버블 블래스터와 같은 게임에서 홀로 렌즈가 메쉬를 사용하도록 허용하면 공정하지 않은 상황이 발생할 수 있습니다:
1. 메쉬의 정확한 모양이 게임 플레이에 영향을 줄 때 (예 : 바닥 표면 메쉬의 약간의 충돌로 인해 주행 속도가 달라짐) 플레이어는 불리함을 느낄 수 있습니다.
2. 실세계 물체가 게임을 가리면 멀티 플레이어 게임에서 심각한 단점이 발생할 수 있습니다. 상대방이 깃발을 훔쳤다는 것을 놓칠 수도 있습니다!
동일한 물리 위치에서 두 개의 홀로 렌즈를 가지고 플레이하고 있을 때에도 중요 할 수 있습니다. 스캐닝 과정의 변화로 인해 동일한 방에 대한 두 개의 메시가 똑같지 않기 때문입니다.
사용될 수 있는 두 가지의 접근법이 있습니다:
● 단일한 공유된 메쉬를 얻기 위하여 두 개의 홀로그램으로 생성된 메쉬를 비교하고 차이점을 고려합니다.
두 명의 플레이어가 같은 방에 있을 때, 두 개의 홀로그램의 결과를 합산하여 스캐닝 프로세스 속도를 높이는 동시에 두 개의 메시 사이의 평균을 구할 수 있으므로 홀로 렌즈가 아직 보지 못한 공간의 일부를 파악할 수 있습니다.
두 명의 플레이어가 같은 방에 있지 않으면 한 플레이어의 방의 가구를 다른 방의 가구에 복사 할 수 있으며 반대의 경우도 마찬가지입니다. 예를 들어, 다른 사람의 방 가운데에는 커피 테이블이 있고, 내 방에는 안락 의자가 있다면, 다른 사람에게는 안락 의자가 들어가게 되고 내 방에는 커피 테이블이 추가 되기 때문에 양쪽 모두 동일한 환경이 됩니다. 내 방으로 불러와진 다른 플레이어의 방에 있었던 가구는 간단한 추상 음영 효과로 보이게 될 수 있습니다.
●모든 것을 없애 버리고 바닥 높이에서 간단한 평면을 사용하여 완벽하게 평평한 경기장을 얻습니다. 그리고 우리는 프로토 타이핑 회사이기 때문에 우리는 이걸 가지고 진행했습니다 - 어쨌든 우리는 플레이 할 수 있는 것을 빠르게 얻고 싶었기 때문이죠.
Buggy Blasters를 플레이하기 위해 홀로렌즈를 가진 두 명의 플레이어는 두 개의 직사각형이 겹치는 부분을 기반으로 공통 ‘플레이 공간’를 얻기 위해 직사각형 공간을 정의 할 수 있습니다.
게임은 두 플레이어 모두에게 공평한 공유 공간에서 수행되어야 하기 때문에 이 게임 공간은 둘 다 동일한 크기를 가져야합니다. 더 큰 거실을 가진 상대방이 뒤에 숨어있을 수 있다면 그것은 분명히 공정하지 않을 것입니다 - 당신이 그것을 어떻게 감지 할 것인가 - 당신의 벽. 우리는 이것을 위해 매우 간단한 방법을 사용했습니다:
● 각 플레이어는 자유롭게 사각형의 바닥 공간을 정의합니다. Buggy Blasters의 경우, 바닥을 탭하여 원뿔형의 도로 표지판을 배치합니다. 결과적으로 직사각형의 첫 번째 모서리가 게임 공간의 원점으로 간주됩니다.
● 그런 다음 두 플레이 영역을 결합하여 겹쳐진 두 영역의 사각형을 멀티 플레이 영역으로 선택합니다.
● 위치와 회전에 관한 네트워크 통신은 결합된 플레이 공간의 원점에 대한 상대적인 기준으로 수행됩니다.
이것이 구현되면 같은 방에서 두 개의 홀로 렌즈로 게임하는 것이 쉬워집니다: 두 플레이어가 콘을 정확히 같은 위치에 놓음으로써 각 홀로 렌즈의 공간에서 동일한 게임 공간을 설정하기만 하면됩니다. 이것은 프로토 타입을 위한 트릭입니다!
유니티로 홀로렌즈 효율적으로 개발하기
홀로렌즈에서 실행되는 유니티 프로젝트를 받기위해서는 Visual Studio 솔루션이 구축되어야합니다. 여기서부터 홀로렌즈로 구축하고 배치 할 수 있습니다. Buggy Blasters 프로젝트의 경우 전체 프로세스에 약 5분이 소요됩니다. 멀티 플레이어 게임 플레이 테스트를 한다는 것은 홀로렌즈 2개를 배포해야 한다는 의미입니다.
다음은 우리가 장시간동안 빌드하고 실행하는 것을 피한 좀 더 효율적으로 일했던 방식입니다:
● Xbox 컨트롤러를 사용하여 유니티 에디터에서 움직이고 에어 탭핑을 시뮬레이션하여, 개발의 속도를 증가시키십시오.
● 동시에 두 개의 홀로렌즈를 착용 할 수 없으므로 한 명의 프로그래머가 멀티 플레이어 기능을 테스트하는 것이 어려울 것입니다. 따라서 우리는 홀로렌즈 한 개로 테스트를 진행하였으며 다른 플레이어 클라이언트는 유니티 에디터에서 테스트했습니다. 이것은 미리 저장된 공간뿐만 아니라 방을 스캔한 내용을 포함하고 있는 유니티 씬을 설정하여 가능합니다(실제 홀로렌즈 장치가 없으면 공간을 스캔 할 수 없으므로).