개발의 민주화(Democratizing Development). 누구나 쉽게 게임을 만들 수 있는 게임엔진을 제공하자는 유니티의 표어 중 하나다. 덕분에 유니티를 활용해 나 같이 프로그래밍에 무지한 사람도 마우스 클릭 몇 번이면 큐브를 만들 수 있다. 버텍스를 일일이 잡아주지 않아도 말이다.

유니티5는 멀티플랫폼 빌드, 빌트인 미들웨어, 에셋 스토어 등의 장점이 있어 개발을 쉽고 빠르게 진행할 수 있게 해주는 강점이 있다. 그러나 이 '쉽고'라는 단어 때문에 많은 사람이 유니티는 빠르지만, 퀄리티 높은 게임을 만들기 힘들어라는 선입견을 품고 있는 것도 사실이다.

그러나 오지현 서포트 엔지니어는 IGC2016 강연을 통해 병목(Bottle Neck)을 탐지하고 이를 개선하는 방법을 소개하면서 유니티로도 고품질의 게임을 얼마든지 만들 수 있다는 점을 언급했다. 뼛속까지 '문돌이'인 나는 이 강연을 아주 조금이나마 이해하기 위해 유니티 매뉴얼을 2회독하고 갔다. 그런데 안 읽었어도 이해할 수 있었을 정도로 오지현 서포트 엔지니어는 쉽게 강연을 진행했다. 믿음이 생길 수밖에 없었다. 그래서 강연 끝나고 가는 사람을 붙잡고 유니티에 관해 더 물어봤다.

▲유니티테크놀로지스코리아 오지현 서포트 엔지니어

서포트 엔지니어. 쉽게 게이머들이 접할 수 있는 직책은 아니다. 보통 개발단에서 클라이언트의 문제를 해결해주는 역할을 하므로 게이머들과는 접점이 거의 없다. 이들은 구체적으로 무슨일을 하고 있을까.

"말 그대로 엔지니어를 서포팅해주는 엔지니어다. 보통 엔지니어는 제품을 만들거나 개발하는 업무를 하고 있는데 서포트 엔지니어는 이런 일을 하는 엔지니어들이 일을 잘할 수 있게 지원해주는 역할을 하고 있다.

유니티를 사용하는 개발자들이 어려움이 있으면 이를 풀어주고, 작업물에 성능 문제가 있으면 왜 그런지 진단, 해결해주는 일들을 하고 있다. 쉽게 말하면 어떤 지점의 문제점을 파악하고 이를 개선할 수 있도록 가이드를 해주고 있다.

유니티도 하나의 프로그램인 이상 버그가 존재할 수밖에 없다. 버그 때문에 실사용자들이 어려움을 겪고 있으면 버그를 수정하기도 한다. 또한, 유니티를 어떤 식으로 활용해야 잘 활용할 수 있는지 컨설팅하는 것도 나의 소임이다.

유니티를 개발하는 데 있어 중점적인 역할을 한다기보다는 유니티를 사용하는 사람들을 도와주고 그들이 어떻게 더 잘 사용할 수 있을지 고민하고 행하는 자리다."


▲ 유니티 클리닉에서 컨설팅을 진행 중인 오지현 서포트 엔지니어

그는 강연에서 성능 최적화가 게임의 재미를 전달해주는 필수적 요소임을 강조했다. 아무리 게임을 재미있게 만들어도 쾌적한 성능이 나오지 않는다면 게이머들로부터 외면을 받을 수밖에 없기 때문이다. 최적화의 시작점인 프로파일링은 툴이 없다면 빠르게 진행하기 힘들다. 유니티는 내장 프로파일러 등을 제공해 성능 최적화를 이룰 수 있는 툴을 제공한다.

"프로파일링은 성능을 향상하겠다는 의지가 담긴 행동이다. 아주 정말 재미있는 게임을 만들었다고 가정하자. 그런데 이 게임이 실행이 안 되고 버벅대면 사용자들의 경험은 매우 불쾌해진다. 아무리 예쁘고, 아무리 재미있는 요소들로 가득 차 있음에도 말이다. 게임으로 쓸모가 없어지는 것이다. 그러므로 항상 성능에 대해 신경을 쓰는 것이다.

성능 향상의 시작은 어떤 지점에서 병목이 발생하는지 찾는 것에서부터 시작한다. 유니티에서 제공하는 내장 프로파일러 등으로 이를 찾아낼 수 있다. 병목 지점을 찾아내는 게 문제 해결의 시작이다.

도로도 여러 종류가 있잖나. 고속도로, 국도, 골목길 등등. 고속도로를 달리다가 일반도로로 나오면 체증이 발생한다. 혹은 아무리 8차선 도로일지라도 러시아워에는 워낙 붐비니까 차들의 소통이 원활하지 않을 때도 마찬가지고.

시스템 역시 마찬가지다. CPU, RAM, GPU 등등 여러 프로세서가 있는데 이들끼리 통신하는 통로가 있다. 이 통로의 넓이는 한정적이다. 이 통로가 감당할 수 있는 양보다 더 많은 값이 들어오면 시스템에 부하가 발생한다. 교통 상황의 병목과 같은 현상이다. 프로파일링은 이 지점을 찾아서 개선할 수 있게 해준다"


▲ 유니티 엔진에는 쉽고 간단하게 쓸 수 있는 프로파일러가 내장되어 있다.

유니티는 2001년에 개발을 시작하여, 2005년에 1.0 버전을 출시하였고, 현재는 5.x버전까지 접해볼 수 있다. 지금에야 상용 엔진의 한 축으로 자리 잡았지만, 애초에 처음 유니티를 개발한 목적은 '웹에서 구동되는 3D 제작 툴'이었다. 당시 '플래시'가 2D 애니메이션을 쉽고 빠르게 제작할 수 있는 도구의 대표주자였는데 이 프로그램은 3D 제작이 어려웠다. 그래서 이 틈을 파고든 것이 유니티였다. '웹에서의'가 아닌 '웹에서도' 돌아가는 3D 인터랙티브 애플리케이션을 만드는 것이 목적이었다.

시작은 이러했기에 많은 업데이트를 거치며 미들웨어들이 많이 들어가게 된다. 동시에 게임 관련 기능들이 하나, 둘씩 추가되기 시작했다. 덕분에 각종 분석 툴, 심지어는 수익 향상을 위한 광고 플랫폼 '유니티 애즈(Unity Ads)'까지 만나볼 수 있게 됐다. 즉, 유니티로 많은 일을 할 수 있다는 말인데 이는 확장성과 유연성이 좋다는 말로 귀결된다.

"유니티는 매우 유연하다. '개발의 민주화'라는 모토를 내세운 만큼 유니티는 누구나 쉽게 접근해서 개발할 수 있다고 도와준다. 초심자는 물론이고 숙련자도 잘 활용해 확장해서 더 깊고 큰 기능을 사용할 수 있다.

노하우가 있는 사람이라면 데이터를 유추해서 데이터 분석도 할 수 있다. 초심자의 경우 유니티가 제공하는 툴을 통해 전문적 지식이 많이 없어도 쉽게 측정하고 활용할 수 있다. 숙련자도 초심자도 쉽고 강력하게 사용할 수 있다는 점이 최고 강점이다.

이건 성능 측정에서도 마찬가지다. 예를 들어 '스매싱 더 배틀'은 1인 개발임에도 불구하고 퍼포먼스가 잘 나오는 게임도 존재한다. 전문 엔지니어가 많은 게임이 아닌데도 최적화가 잘됐다. 물론 개발자가 그만큼 노력과 시간을 많이 투자했기 때문에 나온 결과물이지만, 유니티도 도움이 됐다고 생각한다. 유니티는 정말 유연하고 강력하게 사용할 수 있는 툴이다.

'붕괴'도 마찬가지다. 많은 사람이 실제 화면은 아닐 거라고 말했는데 실제 게임화면이다. 소규모 개발팀에서 이처럼 부드러운 프레임을 낼 수 있다는 게 쉬운 일이 아닌데, 이 역시 유니티로 만든 게임이다. 개발팀에서 프로파일에 신경을 무척 많이 썼을 것이다. 유니티의 툴을 통해 확인하고 개선하는 과정을 거쳤을 것이다.

최근 출시한 '리코어'도 최적화가 정말 잘 된 게임이다. 유니티 엔지니어들이 많이 투입되어 도와줬다. 이처럼 유니티 컨설팅 상품을 통하면 더 많은 도움을 받을 수 있다.


▲ 모바일 게임 회사들의 구인 광고에서 유니티 경력자 구인은 흔히 볼 수 있다.

넷게임즈의 '히트'가 말 그대로 히트를 한 이후 고품질의 그래픽으로 즐길 수 있는 모바일 게임을 제작하는 방법은 '언리얼'이라는 분위기가 생겼다. 개발 프로세스도 모르는 사람들조차 '유니티 엔진은 어쩌고저쩌고, 언리얼 엔진은 어쩌고저쩌고'라는 말을 하고 다닐 정도로 두 엔진을 비교할 정도다.

그래서 그런지 요즘은 10명 남짓한 소규모 개발팀에서도 신규 프로젝트를 언리얼로 시작하는 경우를 어렵지 않게 찾아볼 수 있다. 그렇다면 유니티로는 고품질의 게임을 만들지 못하느냐? 또 그건 아니다. 국내에서 모바일 게임 제작 상용 엔진으로 점유율 1위를 점하고 있는 게 괜한 이유는 아닐 것이다.

"요즘 모바일 RPG는 엄청난 품질을 자랑하는 추세다. 물론 유니티로도 충분히 고품질로 게임을 만들 수 있다. 아직 공개되지 않은 프로젝트라 어떤 게임이 있다고 말을 하기는 어렵지만, 실제로 많은 개발사가 유니티로 매우 놀라울 정도로 품질이 높은 게임을 개발하는 중이다.

현장에서 보고 느낀 점 중의 하나가 우리나라 개발자들은 정말 훌륭한 능력을 갖추고 있다는 점이다. 국내외 많은 게임을 봐오고, 많은 게임 개발에 컨설팅을 해왔다. 국내 개발자들의 능력은 그중에 최고급이다. 지금까지 모바일 게임에 있어 개발 속도가 매우 중요시 돼서 능력을 제대로 못 보여준 것 같다. 그러나 환경만 제대로 갖춰져 있다면, 정말 훌륭한 게임을 만든다.

유니티로 훌륭한 게임들이 만들어지고 있다. 내년 상반기부터 조금씩 공개될 예정이다. 유니티로는 AAA급 게임을 만들지 못한다는 선입견을 없애는 계기가 될 것 같다."


▲혼카이 임팩트(붕괴) 게임 플레이 영상, 이 역시 유니티로 만들어졌다. (출처 : 유튜브 'rendermax')

게임 엔진은 라이선스를 사들여 사용하는 상용 엔진과 직접 만드는 인하우스 엔진이 있다. 굳이 비교하자면 상용 엔진은 보급용 제식 병기다. 어디에서나 쓸 수 있는 화기. 물론 사용자의 역량에 따라 스코프를 붙일 수도 있고, 확장 탄창을 만들 수도 있다. 개인의 신체에 맞게 어딘가를 개조할 수도 있다. 물론 확장성이 좋다는 전제 아래에서 말이다. 인하우스 엔진은 처음부터 나를 위해 만들어진 맞춤형 화기라고 할 수 있겠다. 코어 엔진 클래스에 자신의 게임과 관련된 메소드와 게임 루프 함수들로 채워 넣을 수 있으니까.

오지현 서포트 엔지니어는 과거 마이에트엔터테인먼트의 '건즈2'와 '레이더즈'의 엔진 개발에 참여했다. 그리고 지금은 상용 엔진 유니티를 잘 알고, 잘 쓰는 위치에 있다. 상용 엔진과 인하우스 엔진 모두 경험했다.

"우선 유니티와 같은 상용 엔진을 사용하면 매우 개발이 편하다. 일반적으로 필요한 기능은 모두 구현되어 있다. 덕분에 처음 접근하고 사용하기는 매우 편하다.

다만, 게임에서는 해당 게임에만 필요한 특수한 기능이 존재하는데 상용 엔진은 이를 특수하게 확장해야 하는데, 인하우스 엔진의 경우 특수한 기능을 염두에 두고 개발하니까 그럴 필요가 없다. 다시 말해 본인이 작업하고 있는 게임의 특성에 맞춰 제어할 수 있다는 장점이 있다. 물론 상용 엔진도 확장을 통해 특수한 기능을 구현할 수 있다. 그러나 엔진 기본 제한에 걸릴 위험도 있다.

일반적으로 상용 엔진과 인하우스 엔진의 차이점은 이 정도를 들 수 있다. 그러나 유니티는 확장성이 큰 매우 유연한 엔진이기 때문에 특수한 기능을 구현하는 데에는 특별한 걸림돌이 없을 것으로 생각한다. 개인적으로, 인하우스 엔진을 굳이 고집하지 않더라도 유니티에서 확장을 통해 쉽고 강력하게 사용할 수 있을 것 같다."


▲ 유니티 테크 데모 아담.

유니티의 특징 중 하나가 '배우기도 쉽고. 게임 만들기도 쉽다!'라는 것이다. 특히 배우고 개발하기 쉽다는 것은 그 이전에 존재했던 게임 엔진들이, 상당한 프로그래밍 지식이 없으면, 활용하지 못했다는 것을 생각해보면 엄청난 장점이라 할 수 있다. RPG 메이커들의 프로 버전이라고 봐도 무방하다.

거짓말 좀 보태면 기본적인 프로그래밍을 습득한 사람도 유니티를 조금 배우면 간단한 2D 슈팅 게임이나 퍼즐은 만들 수 있다. 실제로도 모바일 게임 1인 개발자들은 빠르고 쉽게 작업물을 얻기 위해 유니티를 많이 사용한다. 프로그래머가 아니어도 말이다. 그렇다면 나 같은 사람도 게임을 만들 수 있을까? 컴퓨터 언어라고는 GW 베이직밖에 모르는데.

"공부한다면 가능하다. 일례로 지국환 前 유니티 에반젤리스트는 프로그래머가 아니다. 그래픽 디자이너였다. 그러다가 유니티를 배우게 됐고 지금은 누구보다 1인 개발을 잘하는 사람 중의 하나다. 한대훈 대표 역시 그래픽 디자이너 출신인데 '스매싱 더 배틀' 같은 놀라운 퀄리티의 게임을 출시했다. '거지키우기'의 경우도 프로그래머가 만든 게임이 아니다. 지국환 前 에반젤리스트의 책을 보고 공부해서 만들었다.

유니티의 경우 레퍼런스가 이미 많으므로 접근이 어렵지 않다는 장점이 있다. 유니티에서 제공하는 튜토리얼뿐만 아니라, 사용자들이 많은 의견을 나누고 공유하고 있으므로 정보도 쉽게 얻을 수 있다.

그러나 잘 만드는 것은 다른 이야기다. 잘 만들려면은 노하우가 중요하다. 알고 있어야 하는 게 한 두 가지가 아니다. 그래픽을 화면에 띄우는 과정을 예를 들어보자. 우선 그래픽을 예쁘게 만드는 게 중요하니까 여기에 필요한 아트 전문가가 있어야 한다. 그리고 그래픽 데이터를 최적화하는 전문가도 필요하다. 또 그래픽 데이터를 가지고 최적화된 성능을 나오게 하는 전문가가 필요하다. 이토록 다양한 분야의 전문가들이 필요하다.

여러 직군이 있다. 원화를 그리는 원화가, 리깅하는 에니메이터, 모델러, 테크니컬 아티스트 등. 프로그램 쪽으로도 로직을 담당하는 프로그래머, 네트위크를 담당하는 프로그래머 등등 일일이 언급하기 힘들 정도로 많은 직군이 있는데, 이들의 다양한 결과물을 잘 조합하는 걸 노하우라고 한다.

엔진쪽으로도 전문적인 지식을 가지고 있어 다양한 분야를 조화롭게 만들어줘야 좋은 게임을 만들 수 있다고 생각한다. 공부도 많이 해야 하고.

사실 '최적화'를 주제로 하는 교과서는 없다. 포괄적으로만 다루고 있다. 책으로는 알 수 없는 노하우를 갖추려면 최신 기술을 적극적으로 찾아보면서 공부해야 한다. 예를 들어 요즘 등장한 물리 기반 렌더링 메커니즘은 전통적으로 만들어왔던 게임의 패러다임과 다르다. 좋은 게임을 만들려면 프로그래머뿐만 아니라 새로운 기술을 습득하고 새로운 흐름을 따라가려고 노력해야 한다.

결론적으로 말하면 당신 역시 시간을 투자하고 의지와 노력만 있다면 게임을 만들 수 있다. 초심자들을 배려하는 의미에서 한글로 매뉴얼을 번역하는 작업도 최대한 열심히 진행하고 있다. 추가 피처 등이 있어 한글 작업 속도가 따라지 못하는 애로사항이 있기는 한데 최대한 열심히 하고 있다"


▲ 유니티 인증 시험도 있다.

유니티는 3개의 구독 모델 제품군인 ‘유니티 퍼스널(Unity Personal)’, ‘유니티 플러스(Unity Plus)’ 그리고 ‘유니티 프로(Unity Pro)’를 제공한다.

첫 번째 모델 제품군인 ‘유니티 퍼스널(Unity Personal)’은 인디 개발사나 스타트업, 취미로 앱을 개발하는 사람들에게 적합하다. 유니티 엔진이 제공하는 모든 기능을 무료로 사용할 수 있다. 개발 엔진 이외에 더욱 좋은 앱을 개발할 수 있도록 돕는 인앱 분석 도구 ‘유니티 애널리틱스(Unity Analytics)’와 수익화 도모로 사용자의 사용률을 높일 수 있는 인앱 광고 서비스 ‘유니티 애즈(Unity Ads)를 제공한다. ‘유니티 퍼스널’은 연간 회사 매출이 10만 달러 미만이면 무료로 사용할 수 있다.

두 번째 모델은 유니티 퍼스널의 심화 버전 ‘유니티 플러스(Unity Plus)’다. ‘유니티 플러스’는 ‘유니티 퍼스널’이 제공하는 혜택을 포함해 사용자가 더욱 쉽고 빠르게 게임 콘텐츠를 개발할 수 있도록 돕는 ‘유니티 에셋 스토어(Unity Asset Store)’ 프로젝트 패키지를 제공한다. 프로젝트 패키지에는 게임 안정화를 지원하는 게임 퍼포먼스 최적화 패키지, ‘유니티 애널리틱스’, 보다 높은 단계의 사용 권한 패키지 등이 포함되어있다. 유니티 플러스는 1년 약정 시 월 35달러에 사용할 수 있다.

전문 개발자를 위한 제품도 있다. 1년 약정 시 월 125달러에 사용할 수 있는 ‘유니티 프로’는 ‘유니티 퍼스널’과 ‘유니티 플러스’가 가지고 있는 10만 달러 미만 매출 관련 제한 조건이 없다.

또한, 유니티는 이러한 모델 외에도 프리미엄 서비스를 제공한다. 프리미엄 지원을 구매하면 유니티 전문가로 구성된 전담팀을 이용할 수 있다. 문제가 발생했을 때 프리미엄 지원 웹 포털을 통해 전담팀에 해당 문제를 알려주면 엔지니어 또는 아티스트가 배정되어 문제 해결을 해준다. 유니티와 관련한 모든 사항, 이를테면 코드검토, 프로젝트 최적화 및 안정화 문제에 대해서 컨설팅을 받을 수 있다.


"요즘 유니티에서 엔지니어를 많이 뽑고 있다. 한국 지사뿐만 아니라 전 세계적으로도 인원을 많이 충원하고 있다. 또 유니티로 게임을 제작하는 게임사와 긴밀한 관계를 유지하고 있으며 같이 협업을 하여 좋은 게임을 만들기 위해 노력하고 있다.

한국 시장을 보면 유니티를 사용해 모바일 게임을 제작하는 데 집중하고 있다. 글로벌 시장이랑은 조금 다른 추세인데, 시장 특성에 맞게 집중하려고 한다. 이를 위해 많은 개발사와 접촉하여 개발을 도와주는 데 집중하고 있다.

유니티의 미션 중 하나가 개발자들이 어려운 문제에 봉착했을 때 도와주는 것이다. 이를 통해 성공할 수 있게 도와주자는 의미인데, 이 미션을 수행하기 위해 한국에서도 많이 노력하고 있다. 이 문제에 집중할 수 있게 인원도 계속 충원해가고 있으며 앞으로 계속 개선해나갈 계획이다."