우리는 어퍼컷 게임즈의 창립자 세 명을 인터뷰했습니다. 인터뷰에서 그들은 시티 오브 브라스에 바이오쇼크의 DNA가 어떻게 녹아들어 있는지와 절차적으로 생성되는 레벨에 함정을 적용한 방법과 함께, 닌텐도 스위치에서 원활하게 실행되도록 게임을 멋지게 최적화한 방법에 대해 자세히 얘기합니다. 시간 내주셔서 감사드리며, 얼마 전에 스위치(Switch)에 릴리즈하신 것을 축하드립니다! 어퍼컷 게임즈는 바이오쇼크 1과 2를 제작한 팀원들로 구성되어 있는데요, 팬들에게 많은 사랑을 받았던 이 시리즈에서 얻은 교훈이 시티 오브 브라스를 개발하는 데 어떤 발판이 되었나요?
앤드루 제임스(Andrew James, 아트 디렉터): 처음 채찍과 검이 나오는 게임에 대해 생각했을 때 바이오쇼크의 핵심 전투 메커니즘, 즉, 플레이어가 전기 볼트를 사용하여 먼 거리에서 적들을 기절시킨 다음 근접전 렌치로 마무리하게 만드는 "원-투 펀치(One-Two Punch)"에서 바로 영감이 떠올랐습니다. 이 핵심 메커니즘은 채찍같이 대미지를 주지 않는 툴에도 적합하다고 생각했죠. 이런 기본적인 아이디어를 확대해서 채찍으로 적과 환경을 조작하고 함정을 작동시키고 멀리서 물건을 잡는 등의 기능을 할 수 있는 "다목적 툴"로 활용했습니다.
시티 오브 브라스에서 플레이어가 '진'(Djinn, 요정)과 상호작용을 하는 방식도 바이오쇼크의 여러 가지 자동 판매기와 장치에서 영감을 얻었습니다. 이 자판기 요정은 가치의 서커스(Circus of Values) 와 비슷하다고 할 수 있습니다(바이오쇼크의 디자이너인 켄 러빈(Ken Levine) 특유의 감성은 없지만요). 치유 요정은 회복 장치와 비슷합니다. 악의 요정도 랩처(Rapture)의 보안 시스템이나 보안 로봇과 비슷한 역할을 합니다.
마지막으로, 완전한 프로시저럴 레벨을 만드는 시스템을 구축하면서 사람이 만든 것처럼 느껴지는 더 현실감 있는 공간을 만들기 위해 바이오쇼크 레벨 구조의 일부를 분석해서 레벨 디자이너가 수작업으로 했던 것을 프로시저럴 시스템에서 규칙으로 변환하였습니다.
시티 오브 브라스는 처음에 얼리 액세스(Early Access) 형태로 출시되었습니다. 어퍼컷 게임즈가 이 최초 출시를 통해 배운 것이 있고 그것을 최신 버전에 적용하였다면, 그것에 대해 소개해 주시겠어요?
제임스: 얼리 액세스로 런칭하는 것은 회사에 있어 매우 소중한 경험이었고, 이는 게임 최종 버전의 퀄리티를 개선하는 데에 큰 도움이 되었습니다. 작은 게임 커뮤니티가 있어서 포함시킬 기능에서부터 난이도의 조화를 맞추는 것까지 상세한 피드백과 제안을 해주었죠.
에드 오르만(Ed Orman, 디자인 디렉터): 얼리 액세스를 통해 받은 피드백의 한 가지 구체적인 결과는 축복과 부담(Blessings & Burdens) 시스템입니다. 축복과 부담은 기본적으로 도전 단계를 자신에게 가장 적합하게 미세조정할 수 있는 조정자입니다. 이 시스템을 적용하면서 게임에 더 폭넓은 액세스가 가능하도록 만들 수 있었고 초기 플레이어의 걱정거리를 일부 해결할 수 있었습니다. 예를 들어 “느긋함(Leisurely)”의 축복은 게임에서 시간 제한을 없애주는데 이것은 많은 플레이어가 공통적으로 요청한 내용이었습니다.
시티 오브 브라스는 2018년 5월에 PS4, Xbox One, PC에서 출시된 후 최근에 닌텐도 스위치에서 출시되었습니다. 각 플랫폼이 전체적으로 일관되고 우수한 사용자 경험을 제공하도록 어떻게 최적화하셨나요?
제임스: 처음에는 저희가 만든 레벨이 콘솔용으로 너무 크다는 것을 알았습니다. 하드웨어가 처리해야 하는 액터와 드로우 콜이 너무 많았죠. 다행히 프로시저럴 생성 게임이 있기 때문에 레벨 생성 코드를 변경해서 레벨 크기를 줄이는 것부터 시작하게 되었습니다. 그 다음으로는 보이지 않지만 백그라운드에서 계속 실행되고 있는 많은 액터가 있다는 걸 알게 되었습니다. 이러한 액터의 컬 디스턴스를 줄이고 파티클 시스템과 라이트 같은 것을 플레이어에서 일정한 거리에서 완전히 꺼서 다시 적절한 베이스 프레임률을 회복할 수 있었죠.
이어서 마지막으로 필요한 작업은 라이팅 및 포스트 프로세스 설정의 비용을 검토하고 조사하는 것이었습니다. 디스턴스 필드 앰비언트 오클루전이 역동적인 라이팅 포함 배경의 밑그림에 도움이 되었으므로 이것을 계속 유지하기로 결정했는데, 이 경우 우리가 필요로 하는 성능을 유지하려면 일부 다른 라이팅 및 포스트 프로세스 설정의 충실도를 낮춰야 했습니다. 이 설정의 대부분은 콘솔에서 실행될 때 변경할 수 있습니다(성능 조정을 위한 다양한 기능은 기본 scalability.ini에서 r. 변수의 호스트를 점검하여 모두 확인하실 수 있습니다).
라이언 랭카스터(Ryan Lancaster, 테크니컬 디렉터): 시티 오브 브라스를 스위치에 처음 배포했을 때는 확실히 GPU가 문제라는 것을 알 수 있었습니다. 스위치도 Xbox One에서 처음에 발견된 것과 똑같은 문제가 있었는데, 바로 다이내믹 라이트가 너무 많다는 것이었습니다. 시티 오브 브라스는 동적으로 생성되는 게임이어서 스태틱 라이팅이 없습니다. Xbox One에서는 액터의 모든 라이트 컴포넌트를 검토해서 액터가 아주 멀어지면 모든 라이트가 점점 어두워지도록 '최대 거리 페이드 범위'를 설정해야 했죠. 스위치의 경우, 다이내믹 섀도가 너무 많은 것으로 나타나서 햇빛을 제외한 모든 라이트에 드리워지는 그림자를 없애기로 결정해야 했습니다.
GPU 시간을 해결하고 나니까 이제는 CPU가 문제였습니다. 실행되는 액터가 너무 많았죠. 이미 함정과 AI의 거리 컬링을 위한 시스템을 가동하고 있었고 이것이 대부분의 초과 실행 시간을 차지했지만, 이 시스템에 컬링 거리를 적용하니까 플레이어가 AI가 등장하는 것을 볼 수 있게 되었습니다. 시티 오브 브라스에서는 적들이 죽으면 사막의 모래 속으로 다시 사라집니다. AI가 갑자기 생성되는 것을 숨기기 위해 죽을 때의 이러한 이펙트를 거꾸로 적용해서 적들이 모래 바람 속에서 나타나는 것처럼 보이도록 했습니다.
또 다른 성능 문제는 흔히 발생하는 것으로, 활동이 갑자기 집중되어(파티클과 피직스 오브젝트가 너무 많은 상태) 버벅임이 발생하는 것이었습니다. 이 문제는 4.21로 업그레이드하고 다이내믹 해상도 시스템을 구성하니 해결되었습니다.
시티 오브 브라스는 훌륭한 라이팅 효과를 통한 생생한 그래픽이 특징인데요. 이 같은 게임의 비주얼을 어떻게 구현했나요?
제임스: 시티 오브 브라스는 정규직 아티스트 2명과 비정규직 컨셉트 아티스트이자 캐릭터 모델러 1명이 만들었습니다. 이렇게 작은 팀으로 게임을 만들어냈다는 것이 정말 자랑스러워요!
작은 인디 개발사인 저희는 항상 이전 타이틀에서 개발한 것들을 다시 사용하는 방법을 고려합니다. 이러한 것 중 하나가 서브머지드(Submerged)에서 개발한 다이내믹 시간별 라이팅 시스템이었어요. 이 시스템을 시티 오브 브라스에 바로 적용했습니다. 이 시간별 시스템은 커스텀 커브가 많아서 라이팅 색상, 안개, 스카이 박스, 구름, 간접 라이팅, 포스트 프로세스 설정 등 모든 것을 낮과 밤의 모든 시간별로 조정할 수가 있습니다. 전에 만들었던 서브머지드에서와 마찬가지로, 현실 세계의 설정을 시뮬레이트하려고 하기보다는 이상적인 색조와 색채를 만들어서 라이팅이 구조물과 장면을 보완하도록 했어요.
게임에 등장하는 모든 요소 또한 저희 개발사 내부에서 공유해서 사용하는 소형 서브스턴스 페인터 머티리얼 세트로 텍스처를 표현했습니다. 이를 사용해서 서피스 디테일, 금속 강도, 러프니스, 색조가 완벽하게 어울리는 애셋을 아주 빨리 만들 수 있었습니다.
그러면 모든 환경 아트의 섭스턴스 텍스처가 몇 가지 마스터 머티리얼의 머티리얼 인스턴스에 플러그인되어서 전체적인 설정을 미세조정할 수 있게 되고 이것을 게임 내의 거의 모든 애셋에 확산, 적용하는 것입니다.
시티 오브 브라스에 아라비아 테마를 접목하게 된 계기가 있으실까요?
오르만: 어렸을 때 만화나 영화를 통해 1001 아라비안 나이트 이야기의 일부를 접한 적이 있었습니다. 우화를 그야말로 서구식으로 해석한 것이었죠. 실제로 책을 읽어보니까(사실 어린이용 책 중 하나였어요) 상상했던 것보다 허구적인 요소가 훨씬 더 많다는 걸 알았어요. 이 책은 이야기 속에 이야기가 수없이 많이 겹쳐져 있는 구조로 되어 있고 시티 오브 브라스는 이러한 탐욕의 저주를 받은 도시에 관한 위대한 이야기입니다.
이 책을 읽기 전에 이미 1인칭 로그라이트의 프로토타입을 만들기 시작했지만, 시티 오브 브라스에 대해 읽고 나니까 이 설정으로 진행해야겠다는 느낌이 바로 들었습니다. 그리고 이렇게 결정하니까 채찍을 주요 게임플레이 툴로 사용하고 요정과 소원을 사용하는 등의 창의적인 발상이 떠올랐고 모든 것이 딱딱 맞아떨어졌어요.
어려운 로그라이크 게임들은 많지만 1인칭 시점을 사용하는 게임은 많지 않잖아요. 시티 오브 브라스에 1인칭 시점을 적용하게 된 계기는 무엇인가요?
오르만: 여러 가지가 있습니다. 그 중 하나는 우리가 트라이브: 벤전스(Tribes: Vengeance), SWAT 4, 바이오쇼크 게임과 같은 1인칭 게임을 만들면서 경험이 풍부하다는 점입니다. 저희 개발사는 시작부터 다양한 유형의 게임들을 시도해보고 만들어봤지만 이런 1인칭류를 다시 해볼 기회가 없었어요. 그러다 보니까 그런 경험이 사장되는 기분이었고 결국 우리가 어떤 종류의 FP 게임을 만들고 싶어하는지를 생각하게 됐죠.
두 번째로, 저는 로그라이크가 좋습니다! 몇 년 전에는 완전히 빠져 있었는데, 특히 스필런키(Spelunky)나 구식 2D 게임을 많이 했습니다. 그러다 보니 이런 게임들을 1인칭으로 표현하면 어떨까라는 생각이 들었죠.
시티 오브 브라스는 그 전투 방식, 특히 적을 기절시키거나 함정에 빠트리는 등 여러 가지 상황별 동작을 가능하게 해주는 채찍 메카니즘과 관련하여 호평을 받았습니다. 전투 디자인에 어떤 식으로 접근했는지 설명해주실 수 있나요?
오르만: 저희 게임에 적용된 전투의 기본 아이디어는 원-투-펀치입니다. 여기서는 우선 어떤 식으로든 적을 조작한 다음에 적에게 대미지를 주기 시작하는 것이 모든 전투에 임하는 최적의 방법이 됩니다.
채찍을 플레이어의 최고의 툴로 선택했기 때문에 이러한 전투 조작을 위한 기본 툴로 자연히 채찍을 사용하게 되었죠. 채찍이 적을 여러 가지 상태로 만들 수는 있지만 일반적으로 직접적인 대미지를 주지는 못한다는 것이 큰 틀이었습니다. 그다음에는 적의 어떤 부위에 채찍질을 할 수 있는지 정하고(어떻게 해야 상식적으로 말이 되며, 쉽게 목표로 삼을 수 있는 것이 무엇인지), 적의 그 부위에 채찍질을 하면 적의 상태가 어떻게 바뀔 것인지를 정하는 것이 문제였어요.
간단한 예를 들자면 '적의 얼굴에 채찍질을 하면 적이 잠시 기절하는' 거에요. 이런 방식에서 적을 넘어뜨리고 무장을 해제시키고 끌고 다니고 깜짝 놀라게 하는 식으로 확대했는데 이런 모든 상태가 플레이어가 실제적인 공격을 하거나 도시 곳곳에 있는 여러 가지 함정 같은 기타 환경 위험 요소를 통해 적에게 대미지를 주기 위한 시간을 벌어줍니다.
시티 오브 브라스의 함정은 플레이어뿐 아니라 적들에게도 피해를 입히는데요, 게임에 프로시저럴 레벨 생성을 어떻게 구현하였는지 얘기해줄 수 있나요?
제임스: 시티 오브 브라스는 플레이 할 때마다 새 레벨을 절차적으로 생성하므로 같은 레벨이 두 번 실행되는 경우가 절대 없습니다.
함정은 프로시저럴 생성 게임을 만들 때 '프로시저럴'이 '랜덤'과 똑같지 않음을 보여주는 아주 재미있는 예입니다. 아이템이나 오브젝트를 스폰할 장소를 '랜덤으로' 선택하거나 서로 연결되는 타일들을 랜덤으로 생성하는 시스템은 비교적 빨리 만들 수 있지만 기본적으로 그 결과를 거의 또는 전혀 제어할 수가 없어요. 이렇게 되면 여러 가지 면에서 좋지가 않습니다.
- 게임이 결국은 플레이어가 원하는 대로가 아니라 운에 의해 결정됩니다.
- 랜덤 하위 시스템이 많은 시스템은 조정하거나 균형을 유지하는 것이 몹시 어렵습니다.
- 이것은 보통 "랜덤"처럼 보이고 플레이어가 가지고 있는 불신의 유예를 깨트립니다. 예를 들어 "누가 냉장고 앞에 변기를 두겠습니까?"
- 우리의 뇌는 이 세상과 자연, 그리고 특히 게임 속에서 일정한 패턴을 찾기 때문에 '랜덤'은 종종 플레이어의 머릿속에서 '부당'하다고 해석됩니다. 플레이어는 본능적으로 규칙을 학습하고 패턴을 찾은 다음 그 새로운 지식을 사용하여 더 발전하려고 합니다.
함정을 처음 추가했을 때는 함정을 랜덤으로 배치했기 때문에 플레이어들은 아주 황당하고 '부당하다'는 느낌이 들었습니다. 시티 오브 브라스에 나오는 거의 모든 것과 마찬가지로, 우리는 랜덤 방식을 없애고 대신에 어디에 함정이 나타날 수 있고 나타날 수 없는지에 관한 일련의 규칙을 만들었습니다.
계단 함정을 문 앞에 배치하는 것이(처음에는 예측하기 어려운 곳에 있었음) 사실상 플레이어들이 '보통 문 뒤에 함정이 있으니까 여기서는 조심해야겠다'고 알게 해주는 좋은 방법이라는 것을 알게 되었습니다. 또 다른 예로, 코너 바로 옆에 벽 함정을 설치하게 되면 코너를 돌아가기 전에 함정을 볼 수 있는 가능성이 거의 없기 때문에 아주 당혹스럽습니다. 그래서 이런 유형의 함정은 코너 옆에 있는 벽에 스포닝하지 않는 것으로 정하고 있어요. 그리고 함정을 플레이어의 진행 경로 중앙에 스폰해서 플레이어가 함정을 피해서 이동하거나 채찍을 이용하여 적을 함정으로 유인해 처리할 수 있도록 하려고 노력합니다.
개발할 때 블루프린트를 사용하였나요?
제임스: 우리 게임 오브젝트의 대부분은 프로그래밍팀에서 만든 코드 클래스에서 얻어지는 블루프린트입니다. 이러한 접근 방식을 통해 일거양득을 얻을 수 있습니다. 특정 기능이나 최적화가 필요하면 프로그래머들이 베이스 클래스에 이것을 추가할 수 있어요. 그러면 팀의 아티스트와 디자이너가 이미터, 라이트, 오디오, 애니메이션 메시 등 우리가 필요로 하는 모든 새로운 컴포넌트를 추가하여 도출된 각각의 블루프린트를 확대해나갑니다. 또, 코드에서 얻은 이러한 블루프린트에 이벤트를 발동시킨 후 블루프린트 스크립팅을 사용하여 게임에서 원하는 결과를 생성합니다.
그리고 커스텀 컴포넌트의 라이브러리를 블루프린트에 추가해서 새 게임플레이나 상호작용을 쉽게 만들 수도 있어요. 예를 들어 '채찍 컴포넌트'를 블루프린트 오브젝트에 추가해서 플레이어의 채찍과 스크립트 된 상호작용을 가능하게 할 수 있습니다.
언리얼 엔진 4에서 가장 선호하는 툴이나 기능이 있으신가요?
랭카스터: 4.22가 너무 기대됩니다. 시티 오브 브라스의 레벨은 수많은 작은 메시들로 구성되어 있어서 실행 시간 기능에서 자동 인스턴싱을 통해 성능이 상당히 좋아질 것으로 기대하고 있습니다. 성능이 충분히 향상된다면 그림자를 드리우는 다이내믹 라이트의 일부를 스위치에 다시 적용할 수 있을지도 몰라요!
개발 과정에서 언리얼 엔진 마켓플레이스를 어떻게 활용했나요?
랭카스터: 저희의 레벨 생성이 기반을 두었던 시스템은 사실 언리얼 엔진 마켓플레이스에서 구입한 플러그인이었습니다. '던전 아키텍트'가 프로젝트 초반에 큰 도움이 되었어요. 프로젝트를 진행하면서 상당 부분을 수정했지만, 처음부터 시작하지 않아도 된다는 것이 정말 컸습니다.
제임스: 시티 오브 브라스를 개발하는 과정에서 언리얼 엔진 마켓플레이스에서 애셋을 많이 구입했습니다. 때로는 마켓플레이스 애셋을 최종 게임에 사용하지 않았고 애셋을 가지고 다른 사람들이 특정 기능을 어떻게 구현했는지 보거나 마켓플레이스 애셋의 서브 컴포넌트 하나만 사용해보기도 했는데, 어느 쪽이든 가장 짧은 시간 안에 최고의 결과를 달성하는 데 도움이 되었습니다. 특히 머티리얼이나 파티클 시스템 같은 것을 사용하여 누군가가 특정 결과를 어떻게 달성했는지 살펴보면 도움이 아주 많이 되고 반복작업을 크게 줄여줄 수 있습니다.
앞으로 시티 오브 브라스의 업데이트를 기대해도 될까요?
오르만: 물론이죠! 현재 준비 중인 것이 몇 가지 있습니다.
먼저 콘솔, 즉 Xbox One, 플레이스테이션 4, 닌텐도 스위치에 적용할 업데이트가 있는데, 이 플랫폼들에서 처음으로 플레이가 가능한 석궁 쓰는 망령을 적용하려고 합니다. 저희의 최우선 목표는 언제나 가능한 한 빨리 모든 플랫폼에서 동일한 기능을 사용 가능하게 만드는 것입니다.
이후에는 플레이어들을 위해 다양성을 훨씬 더 많이 늘리는 데 중점을 둔 무료 확장팩을 계획하고 있습니다. 지켜봐 주세요!
시간 내주셔서 다시 한번 감사드립니다. 플레이어가 시티 오브 브라스와 어퍼컷 게임즈의 활동에 대한 더욱 자세한 내용은 어디에서 확인할 수 있을까요?
https://www.cityofbrassgame.com
https://www.uppercut-games.com