▲ 마틴 큄멜(Martin Vestergaard Kümmel)

이번 유나이트 LA 2018에서는 분명 많은 소식이 새로 알려졌다. 애니메이션 산업으로 진출한 성과인 '베이맥스 드림'에 대한 이야기라던가, 일종의 스마트 카메라인 '시네머신'과 같은 기술들. 분명 흥미롭긴 했다. 하지만 누가 뭐래도 이번 유나이트의 메인은 테크 데모인 '메가 시티'의 몫이었다.

꽤나 놀라운 작품이었다. 총 450만의 메쉬 렌더링이 이뤄지고, 좌우 폭이 키로미터 단위인 오픈 월드에다 자잘한 쉐도우 맵까지 다 적용된 테크 데모인데 아주 깔끔한 60프레임으로 구동된다. 심지어 모바일 기기에서도 무리가 없다.

유니티에서 한창 밀고 있는 'ECS(Entity Component System)'가 적용된 결과물이다. 멀티스레딩 제대로 안되서 메인 CPU 두들겨패는 악덕 엔진이라는 불만에 유니티가 들고 나온 카드 중 하나가 바로 ECS다. 프로세스 부하의 분할도 이뤄지지만, 기본적으로 프로세스 과정을 크게 단축시킨 기술이다. 유나이트 LA 행사장에서, 메가시티의 개발자 중 하나인 마틴 큄멜(Martin Vestergaard Kümmel)의 강연을 들을 수 있었다.

기본은 ECS에 대한 내용이다. 하지만 흥미롭게도, 강연 내용에서는 ECS만큼이나 값진 내용을 하나 더 얻을 수 있었다. '메가 시티'를 개발하는 과정에서 적용된 '파이프라인'이 바로 그것이다.




■ '메가 시티', 유니티 신기술의 총집

먼저, 비개발자 단에서도 이해할 수 있을 정도로 ECS를 간단히 설명해보자. 일반적으로 게임에 등장하는 객체는 각자 스크립트를 갖고 있다. '끊임없이 좌우로 움직인다'라던가, '플레이어 캐릭터를 향해 움직인다', 혹은 '특정 조건이 갖춰졌을 때 어떻게 반응한다'와 같은 스크립트다. 결국 이 명령어 덩어리가 게임을 만드는 근간이고, 게임을 만는 과정 그 자체다.

문제는 게임의 사이즈가 커지고, 객체의 수가 증가할수록 스크립트도 그만큼 늘어나면서 프로세스 부하가 커진다는 것이다. ECS는 이 과정을 줄인다. 각 객체의 공통되는 데이터 영역을 걸러내, 조건에 부합할 경우 스크립트를 따르도록 만든다. 기존의 방식이 바닥에 뿌려진 콩을 하나하나 손으로 주워 옮기는 작업이라면, ECS는 길다란 장대로 콩을 쓸어 옮기는 방식이다. 손에 비해 장대가 길듯 스크립트 하나의 크기는 커지겠지만, 해야 할 일은 확연히 줄어든다. 인간이 도구를 사용하면서 작업 효율성을 올렸듯, 게임 프로세스에 하나의 도구가 추가된 셈이다.

▲ 일종의 도구라 볼 수 있는 'ECS'

'메가 시티' 데모에도 이 ECS가 잘 녹아 있는데, 엄청나게 거대한 데모 속 세계의 크기에 비해 사실 객체의 종류는 많지 않다. 수없이 날아다니는 자동차의 종류는 단 8대. 건물도 몇 개의 모델을 짜깁기해 만들어진 것이다. 각 개체는 하나하나가 아닌 종류에 따라 스크립트가 배당되니 결국 프로세스 부하에 관여하는 건 객체의 갯수가 아닌, 객체의 종류 수다. 세계 자체는 거대하지만, 실제로 처리하는 프로세스는 그리 많지 않은 셈이다.

여기에 유니티 엔진의 최신 솔루션은 두 종류의 렌더링 파이프라인이 더해졌다. 비교적 고사양의 환경을 구축할 수 있는 PC 환경에서는 'HDRP(High Definition Render Pipeline)'가 적용되었다. 고해상도의 비주얼을 뽑아내는데 사용되는 파이프라인이다. 반면, 모바일 버전은 저사양 기기에 특화된 'LWRP(LightWeight Render Pipeline)'가 사용되었다. 어차피 렌더링 과정은 유니티 엔진이 추구하는 '실시간 렌더링'이니 같은 프로그램도 렌더링 파이프라인만 바꿔주면 기기에 맞춰 구동이 가능하다. '메가 시티' 데모가 엄청나게 많은 객체 수를 유지하면서도 초당 60프레임을 유지할 수 있는 이유다.




■ 목업과 컨셉, 그리고 '문서화'

이 새로운 기술만큼이나 놀라운건 '메가 시티'가 만들어진 과정이다. 메가 시티 데모는 환경 아티스트와 테크 아티스트 두 명이 단 두 달간 작업해 만들어낸 결과물이다. 지금은 사라진 홍콩의 마경인 '구룡성채'를 모티브로 만들어진 이 세계는 바닥이 보이지 않는 아득한 마천루로 가득 찬 도시의 일면을 담아냈다. 그리고 말에 걸맞게 매우 복잡하면서도, 타락한 디스토피아의 모습을 띄고 있다.

이런 복잡한 데모가 짧은 기간 안에 만들어질 수 있었던 이유는 제작 과정에서 효율을 극대화했기 때문이다. ECS가 컴퓨터의 연산 프로세스를 극도로 효율화했다면, 메가 시티 개발진은 본인들의 업무 과정을 그만큼 효율화했다. 이들은 소프트웨어의 개발 과정을 다섯 단계 '목업', '컨셉', '문서화', '실제작', '사후 처리'로 나누었고, 이 다섯 단계를 다시 두 종류로 나누었다.

▲ 작업 단계의 분류가 큰 역할을 했다

첫 번째는 '목업', '컨셉', '문서화'가 포함되는 '프리 프로덕션' 단계다. 이 단계의 특징은 많은 인력이 필요하지 않고, 의사 결정이 굉장히 빠르며, 필요에 따라 얼마든지 수정이 가능하다는 것이다. 소프트웨어의 개발 과정은 도전과 시행착오, 그리고 수정의 반복이지만, 이들은 도전을 설계하는 과정에 큰 중점을 두었고, 시행착오를 최대한 줄여 수정의 단계를 거의 없애다시피 했다.

'문서화' 작업이 이를 가능하게 만든 핵심이었다. 이들은 컨셉과 목업 단계에서 만들어진 다양한 결과물들을 모두 문서화해 정리했고, 종류에 따라 분류해 차후 문제가 생길만한 부분을 빠르게 찾아낼 수 있도록 준비했다. 물론 바로 되는 일은 아니기에, 굉장히 많은 시행착오를 겪었다. 다행이라면, 이 과정에 겪는 시행착오는 빠르게 수정할 수 있으며, 혹여나 개발의 방향 자체가 잘못되었다 해도 적은 인원이 투입되는 만큼 의사 결정 과정이 빨라 금방 새로운 방향을 제시할 수 있었다.

그렇게 완벽한 기획안이 나오고 나서야 본 개발 작업에 들어갔다. 이미 필요한 수치와 작업 내용이 모두 정리되어 있으니 작업은 군더더기 없이 이뤄지고, 문제가 생길 요지도 적다. 혹여나 문제가 발생한다 쳐도 낱낱히 파헤쳐놓은 문서가 존재하기 때문에 금방 문제를 파악할 수 있었다. 문서화 과정을 통해 얻을 수 있는 이득은 굉장히 많고, 심지어 파일의 메모리 소모량이나 차지하는 디스크의 크기까지 알아낼 수 있기 때문이다.


이쯤되면 ECS와 렌더 파이프라인을 설명하기 위한 데모가 전부가 아니다. 그들의 작업 과정 자체가 소프트웨어 작업 과정의 효율을 극도로 끌어올린 데모이기도 했다. 그 결과라 할 수 있는 메가 시티 데모가 굉장히 적은 인원이 짧은 시간 안에 개발되었다는 점 하나로도 이들의 업무 처리 방식이 어떤지는 증명된 셈이다.

이렇게 '메가 시티'가 만들어졌다. 유니티는 이를 통해 엔진의 새로운 솔루션이 제대로 공개되길 바랐을 테고, 그들의 바람대로 되었지만, 데모의 개발 과정은 또 다른 노하우를 만들어냈다. 소프트웨어 개발의 효율. 유니티가 처음부터 이 두 마리 토끼를 전부 잡을 생각이었는지는 모르겠다. 하지만 그들의 개발 과정은 고스란히 남아 행사장에 모인 현업 개발자들의 소중한 자산이 될 수 있었다.


유나이트 LA(10월 23일~25일)와 관련된 강연 정보와 뉴스는 현지에 나가 있는 정재훈, 원동현 기자가 생생하게 전달해드립니다 ▶ 인벤 뉴스센터: http://reurl.kr/40212106CO