오버워치 툴과 엔진 개발 과정
이 세상에는 어느 때보다 영웅이 필요합니다. 그리고 디지털 영웅이 존재하기 위해서는 많은 것이 필요하죠. 극적인 동기, 상징적인 미학, 깊이 있는 디자인이 필요합니다. 그러나 코드는 그 모든 것보다도 훨씬 많이 필요합니다. 오늘날 오버워치를 지원하는 여러 툴은 총 270만 줄이 넘는 코드로 이루어졌으며, 이 코드는 끊임없이 발전하고 있습니다.
오버워치 엔진 및 툴 팀의 기술자와 개발자들은 이러한 유산의 수호자나 마찬가지입니다. 그들이 아니었다면 오버워치의 개발도 불가능했을 것입니다.
엔진 팀
오버워치의 엔진 팀은 게임 개발의 기본 요소인 그래픽, 시각 효과, 물리 효과, 오디오 등 다양한 게임 내 시스템의 기술적인 인프라를 구축합니다. 블리자드 입사 전 헤일로 시리즈와 킹덤 오브 아말러: 레코닝 개발에 참여했던 리드 소프트웨어 엔지니어 필 테시너는 엔진 팀의 주요 관리자입니다.
테시너는 멀티 플랫폼 및 그래픽 개발 경력을 바탕으로 2012년 블리자드에 입사하고 '프로젝트 타이탄'이라고 불리던 MMO 개발에 참여하기 전, 블리자드 게임을 모두 플레이해 보겠다는 취지로 '지나치게 많은 시간'을 보냈다고 합니다. 결국 타이탄은 취소되었지만 이후 그는 타이탄 제작을 위해 개발된 요소들을 재조합하여 오버워치에 적용하는 작업을 했습니다.
필과 엔진 팀의 개발자들은 오버워치가 PC, Playstation 4, Xbox One, Nintendo Switch와 같은 다양한 플랫폼에서 최상의 프레임으로 실행되도록 합니다. 다른 오버워치 엔지니어들이 각종 플랫폼의 호환성 문제을 해결하는 것이 아니라 게임 기능을 개발하는 데에만 온전히 집중할 수 있도록, 엔진 팀은 각 하드웨어 특유의 코드 문제를 해결합니다. 오버워치 개발 작업 대부분이 그렇듯이 이 작업에서도 협력이 매우 중요합니다. "하나의 팀으로서 방법을 고민하면 해결하지 못할 문제는 없다고 봅니다."라고 필은 말합니다.
엔진 팀의 업무 중에는 성능 통계, 메모리 소모량, 패치 용량, 로딩 시간을 파악하고 개선하는 것도 있는데, 그 자체를 개선하기 위해서기도 하지만 새로운 기능을 추가하기 위해서이기도 합니다. 예를 들어 게임 내 캐릭터의 피부를 더 실감나게 표현하거나 옷이 펄럭이는 것을 시뮬레이션하는 방법을 추가하고 싶을 때, 아티스트들은 게임 전체를 다시 설계하는 게 아니라 엔진 팀과 협력하여 앞서 말한 게임의 기본적인 구성 요소들을 변경합니다.
물론 새로운 구성 요소는 오버워치 팀의 디자이너, 아티스트와 엔지니어 입장에서 사용성과 효율이 좋아야 합니다. 그래야만 최종적으로 재미있고 하고 싶은 게임이 만들어지니까요. 이때 필요한 것이 바로 개발 툴입니다.
툴 팀
오버워치 툴 팀은 게임 에디터인 'TED'의 개발을 담당하고 있습니다. 비주얼 인터페이스인 'TED'를 통해 아티스트와 디자이너, 기타 엔지니어는 레벨 제작, 영웅 대사 작성, 재사용 대기시간 조정, 캐릭터에 생명을 불어넣는 애니메이션과 음향 효과 작업을 수행하고 결과물을 조정하며, 이를 모두 연결해 완성된 게임을 만듭니다. 그들은 두 가지 질문을 마음에 품고 작업을 하는데요.
1. 다른 오버워치 개발자들이 게임을 만들 때 시간을 가장 많이 투자하는 부분은 어느 부분인가?
2. 이 부분을 작업하는 과정을 더욱 쉽고 재미있게 만들 수 있는가?
킬존 시리즈 개발에 참여했으며, 오버워치 팀에 합류하기 전 필과 함께 프로젝트 타이탄 개발에 참여했던 리드 소프트웨어 엔지니어 로완 해밀턴은 대학 시절 처음으로 게임을 개발했다고 합니다. 그 게임은 '디아블로의 아류'였다고 하는군요. 디아블로와 스타크래프트를 하느라 시험을 최소한 한 번 망친 것도 그저 우연은 아닐 것 같네요.
툴 팀을 이끌며 로완은 한 가지 원칙을 따랐다고 합니다. 누군가 오버워치 게임플레이에 변경 사항을 추가하면 그 변경 사항을 바로, 그리고 자주 플레이할 수 있어야 한다는 원칙입니다. "게임을 만드는 과정이 즐거울수록 좋은 게임을 만들 가능성이 큽니다."라고 해밀턴은 말합니다.
이러한 목표를 가지고 TED는 오버워치 개발자 경험에 초점을 맞춰 제작되었으며, 오버워치 팀이 그동안 얻은 교훈에 기반하여 만들어졌습니다. TED는 영웅 선택이나 최고의 플레이 생성과 같은 세밀한 콘텐츠 수정을 위해 만들어진 독특한 프로세스와 스킨, 팀 색상 등 오버워치만의 개념을 표시하는 기능도 포함하고 있습니다.
하지만 TED의 기능이 지금 우리가 아는 오버워치를 개발하기 위해서만 존재하는 것은 아닙니다. TED는 융통성 있는 시스템으로, 오버워치의 미래를 놓고 창의적인 실험을 하는 장이기도 합니다. 해밀턴은 "개발자들은 자기가 무엇을 시도하든 게임을 망칠 수는 없다는 걸 알고 있죠. 저희가 그걸 용납하지 않으니까요. 작업을 원 상태로 되돌리고, 변경 사항을 취소하고, 새로운 접근 방식을 시도하는 과정도 쉽도록 설계했습니다."라고 말합니다. 개발자들은 TED의 시각화 기능을 통해 오버워치의 3백만여 개의 애셋과 수 테라바이트 용량의 소스 데이터가 어떻게 어우러지는지 확인할 수 있으며, 이를 통해 기존 오버워치의 구성 요소를 활용하여 익숙한 것에 새 옷을 입히거나 아예 새로운 아이디어를 시험해 볼 수도 있습니다.폭발적으로 펼쳐지는 새로운 지평선
오버워치의 기능과 관련한 작업은 단지 개선과 업데이트로 이루어져 있는 것은 아닙니다. 매일 새로운 테스트가 이루어지며, 이 테스트 일부는 범위가 어마어마합니다. 개발 툴과 엔진은 오버워치를 위해 하드웨어 분야의 최신 기술을 지원해야 합니다. 이건 오버워치 2가 색다른 게임플레이 경험을 제공하기 위해서도 필요하죠.
블리즈컨 2019에서 팀은 처음으로 플레이 가능한 오버워치 2 빌드와 리우 전장을 공개했습니다. 이 전장은 블리자드 밖에서도 널리 공유되었죠. 하지만 리우 전장을 블리즈컨 무대에서 선보이기 위해 필 테시너와 엔진 팀은 언뜻 듣기에는 굉장히 간단한 듯한 과제를 해결해야 했습니다. 디자이너들이 함선을 폭파하고 싶어 했거든요.
디자이너들이 원했던 것은 하늘 위에서 조그맣게 폭발하는 시각 효과 수준이 아니라, 오버워치 요원들이 싸우는 와중에 거대 옴닉 지휘 모함 한 기가 안에서부터 타오르며 파괴되는 장면이었습니다. 게임 엔진의 한계를 더욱 시험한 것은 함선의 원자로 상태가 위험해짐에 따라 전장 전반의 광원 효과가 계속 바뀌어야 한다는 점이었습니다.
게임 레벨의 일부에서 폭발이 일어난다면 해당 레벨의 광원이 이에 맞게 바뀔 것을 기대하게 되는 법입니다. 현실 세계에서는 빛 변화가 시점의 변화와 시야 적응에 따라 서서히 일어납니다. 이러한 변화는 광원에 가까울수록 두드러지고 멀수록 알아보기 어려워집니다. 그리고 한 방에서 빛의 변화가 일어나면 근처에 있는 방의 빛에도 영향이 미치죠.
'동적'인 실시간 광원 효과를 구현하려면 높은 성능이 필요합니다. 전장 전체의 광원 효과를 변화시키려면 더욱 그렇죠. 오버워치는 다양한 기기에서 돌아가도록 만들어진 만큼, 게임 엔진 팀은 게임의 성능을 저하시키지 않으면서 대규모 이벤트를 생성할 방법을 생각해 내야 했습니다.
첫째로 그들은 리우 전장의 특정 부분에만 동적 광원 변화를 적용했습니다. 광원 아티스트들은 제작 중인 전장 여기저기에 작은 탐지기를 설치해 (구조물 화재 등의) 광원 변화에 영향을 받아야 하는 표면을 파악했습니다. 이후 엔지니어들은 함선이 폭발하기 시작할 때 이런 표면에만 동적 광원 효과를 적용했다가 이벤트 종료 시 다시 비활성화하는 스크립트를 작성했죠.
오버워치 2의 PvE 전장은 응징의 날이나 폭풍의 서막 같은 오버워치 전장보다 크고 복잡합니다. 면적만 넓어진 것이 아니라 임무의 길이와 적의 종류도 늘어났고 전투도 더 정교해졌습니다. 적 종류가 추가되면서 영웅과 적 간에 복잡한 기술 상호작용이 발생합니다. 손발을 맞춰 공격해 오는 단거리 및 장거리 유닛 등, 적들 사이에도 마찬가지입니다.
오버워치 개발 툴을 사용하는 디자이너들에게는 몇 분에 걸쳐 여러 번의 파상 공격으로 이루어지는 전투를 시각화할 방법이 필요합니다. 멋진 결과물을 만들기 위해서는 디자이너가 적이 플레이어에게 죽기 전까지 어디에 생성되고, 어떤 경로로 이동할지 미리 확인할 수 있어야 합니다. 그리고 그에 따른 복잡성이 게임 성능에 미치는 영향도 신중하게 고려해야 하죠.
이것은 툴 팀이 완전히 해결하지 못한 과제이지만, 애초에 이들이 팀에 모인 것 자체가 바로 이런 문제를 해결하기 위해서기도 합니다.
작업 방식
툴 및 엔진 개발자들은 오버워치 팀의 다른 구성원들과 협력하여 새로운 게임플레이 요소들을 만들어 냅니다. 신규 유닛 생성 기술 등 주요 기능을 개발할 때는 게임플레이 엔지니어들과 전장, 영웅, 기술을 제작하는 디자이너들이 모여서 사전 회의를 해야만 정확한 목표가 무엇이며, 목표 달성을 위해서 필요한 절차는 무엇인지가 분명해집니다. 툴 팀은 개발 과정 전반에 걸쳐 제작하기 힘들었던 게임플레이 요소의 측면들을 파악하고, 이런 요소를 수십, 수백 개라도 간단히 만들 수 있을 때까지 프로토타입 제작을 반복합니다.
기존 기능에 대한 변경 사항도 큰 파장을 일으킬 수 있습니다. 디자인 팀이 시메트라의 궁극기를 재설계하여 순간이동기를 현재의 광자 방벽으로 변경하고자 했을 때, 그들은 투영된 방벽이 실제로 전장 전체로 뻗을 만큼의 크기가 되어야 게임플레이에 강한 영향을 준다는 느낌을 살릴 수 있다는 것을 알았습니다. 그래서 게임 엔진 팀원과 효과 아티스트들이 모여 보기 흉한 그래픽 문제나 성능 문제가 발생하지 않도록 방벽의 그래픽과 작동 방식을 다듬었죠.
게임 엔진 팀은 영웅을 복제하는 궁극기와 같이 아티스트와 디자이너가 떠올리는 '엉뚱한 아이디어'조차 다듬고 실행할 수 있도록 돕습니다. 불가능해 보이는 일도 각 플랫폼의 제약을 고려하면서 구현해 내죠. 에코의 복제 기술로 복제된 영웅이 처치된 후에 다른 영웅을 선택할 수 없게 한 것도 그런 예시 중 하나입니다(다른 영웅을 선택하면 13번째 영웅을 로딩해야 하는 상황이 벌어지기 때문이죠).
이 글을 쓰는 시점에는 많은 사람들이 그렇듯 툴 팀과 엔진 팀은 재택 근무 중이며, 떨어져 있는데도 어떤 면에서는 서로 더 가까워진 느낌이라고 합니다. 한 주에도 여러 번 모여서 개발 플레이테스트를 통해 스트레스를 풀고, 변경 사항이나 추가 사항에 대해 열정적인 대화를 나누고, 그 논의를 바탕으로 다음 작업을 다듬어 가는 과정을 밟고 있죠.
필과 로완은 비슷한 이유로 자신의 일을 좋아합니다. 동료들은 능력 있고 열정적이며, 팀원 모두가 중요한 결정에 대해 의견을 제시할 수 있기 때문입니다. 개발과 플레이를 모두 즐기는 게임에 기여할 수도 있고요.
하지만 둘은 오버워치에는 유별난 점이 있다고도 말합니다.
테시너는 오버워치의 플레이어들 때문이라고 하는데요. "저는 그동안 아주 많은 게임의 개발에 참여했는데, 오버워치 세계에 대해 팬 커뮤니티가 보여 주는 반응은 제 커리어의 정점이라 할 수 있습니다. 이 게임을 둘러싼 열기, 팬들이 보내는 팬아트, 캐릭터 코스프레 등이 저에겐 다 완전히 새로운 경험이었죠."
7년 전 네덜란드에서 캘리포니아주 어바인으로 이주한 해밀턴에게는 팀이 마치 가족처럼 느껴진다고 합니다. "저는 이 게임 개발에 참여하려고 지구 반대편에서 왔습니다." 그는 말했습니다. "긴밀한 조직에서 하나의 제품을 두고 이렇게 오랫동안 작업하다 보면 동료들과의 관계가 정말 돈독해집니다."
"다른 일을 하는 건 상상할 수도 없어요."
오버워치 팀에서 재능 있고 의욕적인 엔지니어를 채용하고 있습니다.자세한 정보는 인재 채용 페이지에서 확인하세요!