2020년 1학기 캡스톤디자인 프로젝트 NYP 팀 입니다.
- 넷마블N2
- 김선정 교수
- 콘텐츠IT 나민태
- 콘텐츠IT 박서원
- 콘텐츠IT 유용희
VR 기술의 성장 2016년 최초의 상용화된 가상현실 헤드셋 오큘러스 리프트가 출시 되었을 때 대다수의 사람들이 열광했다. 가상현실 게임은 사용자가 직접 가상 세계에 들어가 게임을 즐기기 때문에, 기존 게임에서는 상상할 수 없는 강점을 지니고 있다. 하지만 몇 년 사이 VR에 대한 시각은 달라졌다. 기기는 비싸고 컴퓨터와 여러 기기가 결합 해야 하는 불편함도 가졌다. 그리고 즐길 수 있는 콘텐츠조차 부족하다는 의견이 많았다. 실제로 현재 steam에 올라온 총 게임 수 76,559개 중 vr 전용 또는 지원 게임은 총 5,129개로 일반 pc게임 콘텐츠와 14배 이상 차이가 난다. 2019년 5월에 출시된 오큘러스 퀘스트가 출시된 이후로 VR의 보급이 가속화 되고 있다. 2019년을 기점으로 매출 수치가 10배 이상 크게 뛰어르는 비약적인 성장이 나타났다.
(인벤, ‘오큘러스 퀘스트’이후 전환점 맞이한 VR 게임, 2020년은?) 신규 HMD 기기의 도입으로 VR 소프트웨어 타이틀 매출이 상승 하게 되었다. 2017년 말 기준으로 100만 달러 이상의 매출을 달성한 VR 타이틀은 40개에 미치지 못했지만, 2020년 3월 기준으로 약 100개 이상의 타이틀이 100만 달러 매출을 돌파한 것으로 나타났다. VR 기술의 필요성 VR은 Virtual Reality의 약자로 가상현실이라는 뜻이다. 가상현실 기술은 4차산업혁명 시대에 핵심적인 기술로 공간과 시간에 제약을 영향을 거의 받지 않는 기술이다. 이 기술을 사용함으로써 현실감과 현존감을 느낄 수 있어 여러 분야에서 활용할 수 있다. 현재 영상과 인테리어 디자인, 군사, 게임 등 여러 분야에서 사용자의 상호작용에 맞추어 사용하고 있다. VR 기술의 목적 현재 코로나 바이러스로 인해 밖으로 나기지 못하고 집안에만 생활하는 기간이 늘어나고 있다. 학생들의 경우는 학교에 가지 못하고 온라인으로 화상회의 등을 이용하여 수업을 듣고 있다. 그로 인해 학생들은 수업에 집중하지 못하고 흥미를 잃는 경우가 많아 힘들어하며 수업 방식에 대해 불만을 가지게 된다. 또한 몇 대학에서 전염범 확산을 막기 위해 비대면 시험을 진행하였으나 80%가 넘는 학생들이 부정행위를 하다가 적발되는 사례가 있다. 그러나 가상현실에서 시험을 보면 부정행위를 막을 수 있고 수업을 하면 주의집중력 향상에 긍정적인 영향을 받을 수 있고 자발적이고 지속적인 활동을 유도 할 수 있다는 연구 결과가 있다. (가상현실 기반의 게임형태 체육수업이 자폐성 장애 학생의 기초체력과 주의집중력에 미치는 영향) VR과 PC의 공존 이유 컴퓨터 플랫폼은 통계청 자료에 따르면 2018년 서울 기준으로 컴퓨터 보급률이 77.9%로 대부분 사람이 보유하고 있는 것으로 확인할 수 있다. 그렇기에 사람들에게 익숙하여 조작하기 쉽다. 컴퓨터 그래픽 기술이 많이 발전해서 이미 현실과 같은 수준으로 표현할 수 있다. 그러나 3차원으로 표현된 그래픽을 2차원 평면상의 모니터로 표현하는 데에 한계가 있기에 현실감과 현존감이 다소 떨어지는 것을 느낄 수 있다. 가상현실 플랫폼은 여러 장점이 있지만 출시한 지 오래되지 않았고, 가상현실 기기의 보급률은 기술 성장과 비교하면 높지 않다. 그래서 많은 사람은 컴퓨터 이용에 익숙하지만 아직은 가상현실 플랫폼이 익숙하지 않아 어색하게 느낀다. 그렇기에 멀티 플랫폼을 이용하면 가상현실 플랫폼의 상호작용을 통한 현실감과 현존감을 가지며 컴퓨터 플랫폼의 쉬운 조작성을 가질 수 있다. VR과 PC의 크로스 플레이 필요성 멀티 플랫폼은 다양한 플랫폼에서 공통으로 지원하는 것을 의미하나 네트워크를 지원해주지 않거나 같은 플랫폼에서만 지원해준다. 하지만 최근 인터넷이 발전하고 네트워크 시스템도 발전하면서 하나의 플랫폼에 묶여있지 않고 플랫폼에 상관없이 함께 즐길 수 있게 되었다. 이러한 것을 ‘크로스 플레이’라고 한다. 크로스 플레이를 지원하는 프로그램들은 사람들이 더 이상 플랫폼에 구애받지 않기 때문에 쉽게 접근할 수 있어 다양한 이용자가 증가한다. VR과 PC의 크로스 플레이 목적 (VR과 PC가 동시에 쓰이는 일이나 나아가는 방향) 가상현실 플랫폼만 이용한다면 가상현실 기기를 준비하지 못하거나 적응하지 못한 사람들은 이용할 수가 없다. 컴퓨터 플랫폼과 같이 이용할 수 있도록 한다면 가상현실 기술에 자주 접하는 기회를 쉽게 얻을 수 있다. 인테리어 배치 시뮬레이션을 하는 경우 일반적인 모니터를 사용해서 간편하게 볼 수 있지만, 현실감이 떨어져 원하는 결과를 얻기 어려울 수 있다. 이때 가상현실과 컴퓨터 플랫폼을 동시에 사용하면 가상현실 플랫폼의 익숙치 않은 조작을 컴퓨터로 쉽게 조작하여 먼저 확인하고 가상현실 플랫폼을 사용하여 현실감 있게 한번 더 확인하여 더 정확한 정보를 제공받을 수 있다. 또한 가상현실 시뮬레이션을 할 때 가상현실 사용자가 올바르게 사용하지 못했을 경우 컴퓨터 사용자가 이를 매끄럽게 진행을 할 수 있도록 도와줄 수 있다.
네트워크의 필요성 (네트워크를 왜 사용해야하는지) 2019년에 5G가 처음 도입 되었다. 5G는 기존 4G에 비해 매우 빨라졌으며 그로 인해 많은 기술들이 나타났다. 구글은 새로운 스트리밍 기반 콘솔 기기로 고사양 컴퓨터나 다른 기기들 없이 인터넷이 연결되어 있는 곳이라면 4K 화질의 게임을 즐길 수 있다고 발표 했다. 또한 SKT, KT, LG 유플러스 등 이동통신사들이 5G를 앞세워 실시간 스트리밍 AR, VR 영상들을 제공해주고 있다. 크로스 플레이는 멀티 플레이가 기본적으로 가능해야 한다. 크로스 플레이는 기존의 멀티 플레이와는 다르게 서로 다른 플랫폼들이 동일한 실행이 이루어져야 한다. 플랫폼들의 실행 환경이 달라서 데이터를 변형해서 전달해야 하며 싱크를 맞추기 위해 동기화 과정이 필요하다. 네트워크의 목적 유니티에서 네트워크를 구축하는 방법은 여러 가지가 있으나 포톤 클라우드를 사용하였다, 포톤 클라우드는 전용 서버에서 실행되며 플러그인을 통해 자체 서버 로직을 움직일 수 있다. 또한 높은 확정성과 신뢰성을 바탕으로 어디서나 접속할 수 있으므로 멀티 플레이어 게임에서 가장 안정적으로 이용할 수 있다. 실시간 멀티 플레이어 게임에서 응답속도의 스피드가 가장 중요한데 포톤 클라우드는 세계 각지에서 호스팅이 되어 있어 지역을 지정해서 접속이 가능하다.
VR플랫폼은 현실감을 보다 크게 느낄 수 있지만, PC플랫폼에 비해 익숙하지 않은 사람이 많고 보급률도 많지 않다. 이에 따라 부족한 유저를 PC로 일부 대체하고 간편한 조작을 원하는 사람은 PC로 접근하도록 하였다. 이런 방식을 이용하여 크로스 플레이를 실행 한다면 VR의 현실감과 PC의 편리성을 선택적으로 취할 수 있고 각각의 단점을 대체하여 장점으로 받아들이게 할 수 있다. 위를 구현하기 위한 기술에는 포톤을 이용한 네트워크 구현, PC와 VR플랫폼을 잇는 프로그램(게임)을 제작하기 위한 유니티 엔진, 게임 내에 사용 될 오브젝트를 모델링하기 위한 3D Max 등이 있다.
포톤 클라우드를 사용하여 멀티 플레이를 위한 바탕을 구현하였다. 포톤에서 서버를 제공해주고 여기에 Host와 Client 방식을 이용하여 플레이어가 모이는 Room을 설정하게 된다. 그리고 각 플레이어의 Ready상태와 직업 선택을 Host가 가지게 되고 최종적으로 Host가 모든 것을 체크한 뒤 게임을 시작하게 된다. 게임을 시작하면 더 이상 플레이어의 난입은 불가능하도록 설정하고 새로운 Room을 만들도록 구현 하였다. 게임을 시작하게 되면 각각 플레이어의 캐릭터는 다른 플레이어 시점에서 같은 동작을 해야 하기에 모두 동기화 작업을 거쳐 실행하게 했다. 다시 말하면, 포톤 클라우드에서 제공하는 API를 통해 네트워크 상 자신의 캐릭터임을 확인하고 동기화된 스크립트 함수를 실행하게 된다. 여기서 동기화된 스크립트는 각은 객체(캐릭터)가 모두 똑같은 동작을 하도록 만들어 준다.
게임 내에서 사용 할 맵은 3D Max로 자체 제작 하였다. 맵은 악마가 나타나는 곳으로 어둡고 붉은 기운이 나는 신전으로 디자인 하였다. 신전에는 기둥, 비석, 크리스탈, 천장 등이 있으며 모두 3D Max로 모델링을 한 후 각각 UV를 펴주어 텍스쳐를 입힐 준비를 하였다. 기둥 같은 경우에는 부서지도록 오브젝트를 분할 했으며, 이는 플레이상 방해물이나 방패의 역할을 하도록 계획 하였다. 모델링이 완성 된 후 신전을 FBX파일로 익스포트 한 후 유니티 에디터로 가져와 유니티 상에서 셰이더를 이용하여 재질과 텍스쳐를 입혔다. 셰이더를 작성하여 각 오브젝트가 금속 재질을 나타내도록 반사량을 조절 하거나, 노멀맵을 적용하여 콘트리트, 돌 같이 거친 표면을 나타내도록 하였다. 텍스쳐 이미지는 Seamless로서 텍스쳐가 타일처럼 연속적으로 적용 되더라도 끊기게 보이지 않도록 하였다. 그 후 최종적으로 유니티 내 Light오브젝트를 사용하여 조명 작업을 하였고, 어두우면서도 플레이에 지장이 없는 정도로 밝기와 범위를 설정 하였다.
(유티니 내에서 텍스쳐, 라이팅 작업을 한 후의 모습)
구현 코드는 유니티 엔진에 사용되는 C#스크립트로 작성하였다. 스크립트의 확장과 공통성을 고려하여 상속을 이용하였고, 이에 따라 객체를 받는 부분을 다형성을 적용하였다. 이때, 객체를 명확하게 구분하기 위해 부분적으로 가상함수를 사용하였다. 스테이터스와 이 값을 변경 시킬 함수를 Entity.cs로 작성하고 이를 상속 받는 Hunter.cs와 Boss.cs를 작성 하였다. 이는 각각 PC와 VR플레이어로 플랫폼에 맞는 키 입력을 가지고 캐릭터의 동작을 실행하게 된다. Hunter.cs에는 스테이터스(체력, 마나)와 스킬의 쿨타임에 대한 수치를 보여주는 HunterUI.cs와 각 직업에 따른 스킬의 동작을 구현하는 ClassEntity.cs를 가지고 있다. 그리고 각 스킬은 이펙트는 다르지만 동작 형태는 유사하기에 SkillEntity.cs로 통일하여 적용하였다. Boss.cs에는 보스의 컨트롤러의 입력에 따른 스킬의 정보를 보여주는 BossSkillUI.cs와 스킬의 이펙트와 동작을 구현하는 BossSkill.cs를 가지고 있다.
Hunter 캐릭터는 PC 플레이어로 동작은 애니메이션으로 실행하게 된다. 각 애니메이션은 FSM(Finite State Machine)로 제어하여 C#스크립트 상의 캐릭터 상태에 따라 애니메이션을 실행하도록 하였다. 이는 Hunter.cs에서 실행하게 되며 현재의 캐릭터 상태와 키 입력에 따라 특정 동작과 애니메이션을 실행 할지를 체크 한 후 실행하게 된다. 동작을 실행 하게 된다면 캐릭터가 가진 Animator에 파라미터 값을 주게 되고 각 파라미터에 맞는 해당 애니메이션이 실행하게 된다. 그리고 각 애니메이션이 끝나게 되면 다음 애니메이션이 자동으로 실행 되어 Animator 내의 상태가 순환하는 구조를 갖게 된다.
(캐릭터가 가진 Animator)
VR구현에 있어서는 HTC VIVE 컨트롤러를 이용하였다. SteamVR 플러그인을 유니티에 적용하여 C#스크립트와 VR컨트롤러를 연동하여 VR Boss의 동작을 실행하도록 하였다. VR컨트롤러의 키(트리거)는 각각의 Action값을 가지며 필요한 값만을 json파일로 저장하여 빌드된 게임 실행 파일에도 VR컨트롤러가 연동 되도록 하였다. VR Boss의 모델은 인간형태의 본 구조를 가지고 있지만, VR컨트롤러를 사용하면 머리와 손의 움직임만 가지게 되어 다른 부분이 어색해진다. 이를 해결하기 위해 모델의 본 각각을 다시 리깅하고 이에 애니메이션을 적용하여 머리와 손 다른 부분이 자연스럽게 움직이게 하도록 하였다. 그리고 Boss는 검을 들게 되는데 이때 손가락이 검을 쥐는 모션을 하도록 각각의 손가락 각도와 위치를 조정하여 해당 모션을 만들어 자연스럽게 검을 쥐도록 하였다.
VR 플랫폼에서 멀티 플레이 게임을 하는 경우 플레이어 수가 적어 제대로 즐기지 못하는 경우가 많아 VR 플랫폼은 대체로 솔로 플레이로 구현된 것이 많다. 하지만 기본적으로 많은 게임(PC 플랫폼 기준)은 멀티 플레이를 지원하여 다양한 유저를 통한 다양한 플레이가 가능하도록 하여 유저에게 다양한 재미를 선사한다. 그렇기에 VR 플랫폼에서도 멀티 플레이가 가능하도록 보완 및 지원하는 시스템 있다면 VR의 성장을 더 크게 실현 시킬 수 있을 것이다.
앞에서 설명한대로 VR 플랫폼과 PC 플랫폼을 이용한 크로스 플레이를 구현하여 VR의 한계를 보완 하도록 하였다. 위 방식을 이용한다면 VR 플랫폼의 부족한 유저 수를 PC로 일부 대체가 가능하여 멀티 플레이를 위한 유저 수 문제를 해결 할 수 있고, PC 플랫폼이 가지지 못했던 더 생생한 현실감은 VR 플랫폼에서 느낄 수 있다. 플레이어 입장에서 VR과 PC 플랫폼을 선택적으로 플레이함으로서 취향에 맞는 플레이를 할 수 있고 각 플랫폼만의 특색을 즐길 수 있게 된다. 이러한 방식은 성장하고 있는 VR시장과 이미 크게 성장되어 있는 PC시장을 둘 다 확보 할 수 있는 방식일 뿐 아니라 각 플랫폼의 한계나 부족한 점을 서로 대체보완이 가능하기에 유저에게 폭넓은 방식의 플레이를 제공 할 수 있다.
크로스 플레이는 게임 뿐 아니라 다른 방면에서도 쓰일 수 있다. 예를 들어 인테리어나 부동산 등과 같은 부분에서 쓰일 수 있다. VR 플랫폼을 통해 공간이 가지는 현실감과 현장감을 보다 생생하게 느낄 수 있고, PC 플랫폼을 통해 간편한 조작을 통해 공간의 상세한 설정이나 변경을 만들어 낼 수 있다. 이렇듯 크로스 플레이는 각 플랫폼의 장점에 따라 다른 분야에서도 적용되어 폭넓은 체험 환경을 제공 할 수 있다.