June 10, 2019

멋진 그래픽과 세련된 총싸움으로 VR 슈팅 게임을 한 단계 발전시킨 Contractors

저자: Jimmy Thang

2018년 12월 얼리 액세스로 출시된 컨트랙터즈(Contractors)는 팬들이 가장 사랑하는 가상 현실 슈팅 게임이 되었습니다. 멀티플레이어 VR 슈팅 게임용으로서 단언컨대 최고의 그래픽으로 구현된 세련된 총기 모델과 매끄러운 성능의 전신 역운동학 시스템이 조화를 이뤘기 때문입니다. 컨트랙터즈를 개발한 것이 고작 4명의 인디 개발자로 구성된 케이브맨 스튜디오(Caveman Studio)라는 것을 고려하면 더욱더 놀라운 일입니다.

우리는 프로젝트 리더인 웨이한 딩(Weihan Ding)과 수석 프로그래머 콩 쿠(Cong Ku)와 인터뷰를 할 기회를 얻었습니다. 두 사람은 VR의 높은 성능 요구 사항을 유지하면서도 게임의 높은 시각적 충실도를 이뤄낸 방법을 공유하고 슈팅 게임 개발 시 VR의 장단점에 대해 이야기를 나눴습니다.  
시간을 내주셔서 대단히 감사드리며, 얼리 액세스를 통해 지금까지 거둔 컨트랙터즈의 성공을 축하드립니다. 많은 플레이어가 컨트랙터즈는 하드코어와 캐주얼 슈팅 게임 사이에서 아주 절묘한 위치에 있다고 말합니다. 그런 의도로 게임을 개발하셨나요?

웨이한 딩(프로젝트 리더):
네. 우리는 다른 VR 슈팅 게임과 차별화되기를 원했습니다. 고려해야 할 점은 두 가지였습니다. 첫 번째는 TTK(time-to-kill, 적을 사살하는 데 걸리는 시간) 비율이었고 다른 하나는 게임 모드였습니다. 현재 컨트랙터즈는 경쟁을 통한 하드코어 플레이 스타일인 컨트롤 모드와 팀 데스매치와 건 게임과 같이 캐주얼 플레이가 가능한 플레이그라운드 모드를 제공합니다.
1NHy0wPg.jpg
현재까지 컨트랙터즈는 놀라운 텍스처와 라이팅, 파티클 이펙트를 선사하며 경쟁 VR 슈팅 게임 중에서도 단언컨대 최고의 그래픽을 보여 주고 있습니다. 어떻게 이 정도의 그래픽 충실도를 구현할 수 있었나요? 언리얼 엔진 4가 그래픽 이점을 제공했다고 생각하시나요?

콩 쿠(수석 프로그래머): 컨트랙터즈의 경우 PBR 작업방식을 충실히 따랐습니다. 일부 무기와 소품에는 섭스턴스 페인터(Substance Painter)를 사용했습니다. 신(scene) 애셋과 텍스처의 경우 퀵셀 메가스캔(Quixel Megascan)의 다양한 스캔 사진 애셋을 사용했습니다. 언리얼 엔진 4는 현대적인 모든 렌더링 기능과 놀라운 머티리얼 및 파티클 시스템을 제공합니다. 머티리얼 템플릿을 만들고 애셋을 신에 드래그하기만 해도 멋진 토대가 만들어지죠.

컨트랙터즈의 높은 그래픽 충실도에도 불구하고 사용자들은 게임이 얼마나 잘 최적화되고 원활하게 실행되는지 칭찬합니다. VR의 높은 시스템 요구 사항을 고려할 때 어떻게 성능을 유지하실 수 있었나요?

쿠: 렌더링에 도움이 된 팁은 다음과 같습니다. 먼저 애셋 최적화부터 시작했습니다.

  1. 폴리 수가 많은 신 메시에 적절한 LOD(Level Of Detail, 레벨 오브 디테일)가 있는지 확인합니다. 이것은 MSAA를 사용할 때 특히 중요합니다. 복잡한 메시는 트라이앵글 에지 근처에서 더 많은 초과 드로잉을 발생시키는 경향이 있기 때문입니다.
  2. 머티리얼에 적당한 셰이더 인스트럭션 수인지 확인합니다. "고품질 리플렉션(High Quality Reflection)" 옵션을 비활성화하면 많은 셰이더 인스트럭션을 아낄 수 있습니다. 이는 작은 소품이나 표면이 거친 머티리얼에서 특히 유용합니다. "완전 러프(Fully Rough)" 옵션을 활성화하면 셰이더 성능을 많이 줄일 수 있습니다. 거의 모든 폴리지 머티리얼에 이 방법을 적용했습니다.
  3. 드로 콜을 아낄 필요가 있을 때는 동일한 머티리얼을 사용한 메시를 단일 메시로 결합했습니다.

또한 엔진 레벨에서도 두 가지 최적화를 수행했습니다.

  1. VR 렌더링에는 "포비티드 렌더링(Foveated Rendering)"을 사용했습니다. 덕분에 GPU 성능이 약간 향상되었습니다.
  2. 신 반투명 효과에 추가 다이내믹 해상도 반투명 렌더링 패스를 추가했습니다. UI는 또 다른 전체 해상도 렌더링 패스에 포함됩니다. 신 반투명 요소는 렌더링 패스가 GPU 예산을 너무 많이 사용하는 경우 1/4 해상도로 렌더링됩니다.

게임플레이에는 다음과 같은 방식이 도움이 되었습니다. 

  1. "중복 이벤트 생성"이 활성화된 컴포넌트 사용은 피합니다. 움직이는 오브젝트의 중복 이벤트 업데이트는 비용이 매우 많이 듭니다.
  2. 동일한 프레임에서 액터/컴포넌트의 트랜스폼을 두 번 이상 설정하지 않습니다. 캐릭터 및 다루기 어려운 오브젝트에 많은 하위 컴포넌트와 심층 컴포넌트 계층구조가 있는 경우 트랜스폼을 두 번 이상 업데이트하면 높은 성능 비용이 발생합니다. SetRelativeLocation(...)와 SetRelativeRotation(...)를 연이어 사용하지 말고 SetRelativeLocationAndRotation(...)을 사용하십시오. 동일한 프레임에서 컴포넌트의 트랜스폼을 여러 번 변경해야 하는 경우 FScopedMovementUpdate를 사용하면 하위 컴포넌트의 불필요한 업데이트를 피할 수 있습니다.
  3. "블루프린트 네이티브화(Blueprint Nativization)" 툴을 사용하여 일부 계산 집약적인 블루프린트를 네이티브화합니다.
WBAX-O11.jpg
많은 VR 게임에서 3점 접촉을 사용하는 데 반해 컨트랙터즈는 몸 전체를 렌더링하는 역운동학 시스템을 사용하는 것이 특징입니다. 게임에서는 어떻게 이를 구현하게 되셨나요?

딩:
역운동학 시스템 적용 시 타사 플러그인을 사용해 시간을 많이 절약했습니다. 우리는 역운동학이 작동하는 방식을 이해하고 아티스트가 만든 스켈레탈 메시에 맞춰 미세하게 조정하는 데 많은 시간을 들였습니다. 언리얼 엔진의 애니메이션 블루프린트(Animation Blueprints) 역시 역운동학 시스템을 제어하는 데 훌륭한 추가 도구가 되어 주었습니다.

게임 내에서 무기를 다루고 장전하고 쏘는 감각이 훌륭한데요, VR에서 올바로 구현하기 위해 프로토타입 작업을 많이 하셨나요?

딩:
엄청난 프로토타입 작업을 진행했죠. 특정 무기를 다루는 법, 해당 무기의 반동, RPM 등의 세부 사항을 알기 위해 무기 전문가의 피드백을 받았습니다. 우리는 각 무기가 실제 현실 속 무기와 동일한 느낌을 주길 바랐습니다. M16의 경우 볼트 해제 버튼도 있어서 컨트롤러를 사용해 버튼을 누르면 볼트 해제가 완료됩니다.

언리얼 컴포넌트 시스템 덕분에 무기 구성이 훨씬 쉬웠습니다. 모든 도구를 구현한 뒤에는 볼트 컴포넌트, 트리거 컴포넌트, 전면 핸들, 무기 몸체 등만 추가하면 됐거든요! 초기 무기가 완성된 거죠! 프로토타입 단계에서는 이 방식이 큰 도움이 됐습니다. 무기 부품은 쉽게 교환이 가능했기 때문에 알파 테스터들에게 빠른 변경을 위한 피드백도 얻을 수 있었습니다.
qOh7m1O1.jpg
컨트랙터즈의 현재 맵은 다양하고 재미있습니다. 경쟁력 있는 VR 슈팅 게임을 위해 맵을 만들 때는 어떤 식으로 접근하셨나요?

딩:
VR 슈팅 게임의 가장 큰 특징은 몰입입니다. 몸을 숨길 땐 정말 몸을 숨기고 있죠. 컨트랙터즈의 맵을 디자인할 때 플레이어의 몰입을 깨뜨리지 않는 게 주된 목표였습니다. 맵 내 숨을 곳을 수없이 많이 만들었죠. 플레이어는 적의 움직임을 감지하기 위해 항상 모든 방향을 주시해야 합니다. 즉 게임 내내 조심스레 행동해야 하죠.

두 번째로 우리는 게임 모드를 기반으로 맵 레이아웃을 구성했습니다. 즉 스폰 지점, 목표 위치, 관문 등을 배치할 때 한쪽이 더 유리해지는 일이 없도록 신중히 배치했습니다.

맵이나 총싸움은 근접 전투와 원거리 전투 중심으로 설계되었습니까?

딩:
VR에서는 픽셀 해상도가 상대적으로 낮기 때문에 30-60미터의 중거리 전투에 초점을 맞춰 플레이어들이 조준경 없이 조준하는 경우에도 대상을 분명히 볼 수 있도록 했습니다. 게임 내에서 플레이어는 보조 무기를 소지할 수 있는 가벼운 장갑 조끼를 선택할 수 있으므로 원거리 슈팅을 위한 스나이핑 지점이나 근접 전투를 위한 실내 목표도 구성했습니다.
81Z1Zdgj.jpg
앞으로 더 많은 맵을 볼 수 있을까요?

딩:
물론이죠! 컨트랙터즈는 매월 업데이트가 진행됩니다. 앞으로 더 많은 맵을 공개할 예정입니다.

VR 개발에 있어 언리얼 엔진 4는 어떤 엔진이라고 생각하시나요?

쿠:
VR 개발에 아주 좋은 엔진입니다. UE4는 다양한 VR 플랫폼에 대한 지원이 뛰어나 플랫폼별로 쉽게 전환하고 테스트할 수 있습니다.

언리얼 엔진 4에서 가장 좋아하는 툴이나 기능이 있으신가요?

쿠:
블루프린트 시스템 전체가 다 훌륭합니다. 작업 방식을 구성하기가 아주 쉽죠. 예를 들어 무기를 개발한다면 프로그래머는 C++를 사용해 기본 액터와 컴포넌트를 개발한 뒤 일부 파라미터/기능을 블루프린트에 노출하고 필요한 경우 일부 컴포넌트 비주얼라이저를 생성합니다. 그럼 디자이너와 아티스트는 파라미터/노출된 기능을 사용해 무기의 동작을 즉시 변경할 수 있습니다. 언리얼 엔진 4의 프로파일링 도구 역시 아무리 칭찬해도 부족합니다. 게임 성능에 관해 알아야 하는 모든 것을 확인할 수 있죠.
WUc6bOsv.jpg
언리얼 마켓플레이스(Unreal Marketplace)는 도움이 되셨나요?

딩:
언리얼 마켓플레이스는 우리 같은 작은 게임 스튜디오에 큰 도움이 됩니다. 많은 고품질 애셋을 제공해 주기 때문에 프로토타입 제작 및 최종 제작 시 엄청난 시간을 절약할 수 있었습니다. 에픽게임즈의 매월 제공되는 무료 애셋은 최고입니다!

언리얼 엔진 4의 소스 코드에 접근할 수 있었던 것이 도움이 되었나요?

쿠:
물론이죠. 소스 코드를 연구하고 수정할 수 있었기 때문에 그렇지 않았다면 '해결하지 못했을' 문제를 해결하는 데 도움이 되었습니다. 일부 게임과 관련해 엔진 레벨 변경/기능을 추가하는 것이 훨씬 편리하기 때문이죠.

현재까지의 게임 개발 과정에서 가장 많이 배운 것이 있다면 어떤 것이 있으신가요?

딩:
VR에 대한 인식일 겁니다. VR은 훌륭한 플랫폼이고 잠재력도 많습니다. 2019년에 산업이 얼마나 발전할지 기대가 됩니다.

다시 한 번 이렇게 시간을 내주셔서 감사합니다. 끝으로, 컨트랙터즈에 대한 더 많은 정보는 어디서 얻을 수 있을까요?

딩: 웹 사이트(http://contractorsvr.com/)를 방문해 주세요. 스팀 페이지(https://store.steampowered.com/app/963930/Contractors/)에 찾아오셔도 좋습니다.