[기고칼럼] 모바일 게임 개발의 핵심! 'Unity3D'가 대체 뭐길래?

칼럼 | 박민근 기자 | 댓글: 7개 |



박민근 개발자는 블로거 신입 게임 개발자의 서울 상경기 블로그를 운영하며, 게임 개발에 대한 다양한 정보 및 게임 업계의 다양한 현장 이야기를 소개하고 있습니다.

언젠가 우즈벡에 가서 ‘일류젼 우즈벡’ 지사를 차리겠다는 꿈을 가진 박민근 개발자의 게임 이야기! 그 세번째 시간, 최근 모바일 시장이 커짐에 따라 화두가 되고 있는 유니티3D엔진에 대해 "최근의 모바일 게임 개발의 핵심! Unity3D가 대체 뭐길래?" 라는 주제로 기고컬럼을 제공해 주셨습니다.


* 외부 필자의 원고는 본지의 편집방향과 일치하지 않을 수도 있습니다.









◎ 들어가기 앞서....최근 게임 개발 트렌드가 된 'Unity3D'

아마도 이제 대부분의 게임 유저들에게 '게임엔진'이란건 생소한 용어가 아닐 것입니다. 새로 개발한 게임을 발표할 때도, 'XX엔진을 사용한 게임!' 이라고 광고 카피에도 쓰일 정도로, 이제 게임엔진은 게임의 퀄리티를 결정하는 중요한 요인중의 하나입니다. (게임엔진이 어떤 것인지 자세히 알고싶으신분은, 이전에 이상우님이 쓴 게임엔진 관련 칼럼을 참고하세요=관련기사)

아마도 세계에서 가장 유명한 엔진인 '언리얼엔진' 같은 경우는 대부분의 유저분들도 아실 거라 예상합니다. 국내의 많은 온라인 게임들도 이런 '언리얼'이나 '소스 엔진' 등 다양한 엔진을 기반으로 하여 개발되었습니다.

그런데 게임의 주요 플랫폼이 PC온라인에서 스마트폰으로 이동하게 되면서, 1,2년 전부터 게임 회사의 구인 광고에 'Unity3D 경력자 우대. Unity3D 경력자 구함'이라는 내용들로 채워지기 시작했습니다. 그리고 지금은 스마트폰 게임 회사의 70% 이상이 Unity3D를 사용하여 스마트폰 게임들을 개발하고 있습니다. 대체 과연 Unity3D란게 뭐길래 이렇게도 많은 게임 개발자들이 이 엔진을 사용하여 게임을 개발하는 걸까요?



[▲이제 대부분의 모바일 게임 회사들의 구인 광고에서 유니티 경력자 구인은 흔히 볼 수 있다]



▣ 아니 도대체, 'Unity3D'가 뭐길래 이 난리야?

※편의상 평어체로 작성되었습니다.

위키백과의 Unity3D 설명을 보면, 어디에도 <게임엔진>이라는 명시가 없다. 그 이유는 사실 Unity3D는 애초부터 게임엔진이 목표가 아니었기 때문이다. 지금이야 유니티의 주로 사용하는 곳이 스마트폰 게임쪽이어서, 게임엔진의 이미지를 가지고 있고, 유니티 스스로도 게임엔진으로 명시하고 있지만, 유니티는 원래 게임 엔진을 목표로 개발된 물건이 아니다.

Unity3D는 2001년에 개발을 시작하여, 2005년에 1.0 버전을 출시하였고, 현재는 4.0버전까지 업데이트되었다. 애초에 처음 Unity3D를 개발한 목적은 '웹에서 구동되는 3D 제작 툴'이었다. 그래서 Unity3D의 라이벌은 언리얼 같은 게임 엔진이 아니라, 바로 '플래시'였다. 그 당시에도 플래시는 웹상에서 2D 애니메이션을 쉽고 빠르게 제작할 수 있는 도구의 대표 였었다. 하지만 플래시에서는 3D 프로그램은 제작하기 어려웠는데, 이 틈새 시장을 노리고 개발된 것이 Unity3D였다. 그것도 웹에서의 게임이 목표가 아니라, 웹에도 돌아가는 3D 인터랙티브 어플리케이션을 만드는 것이 목적이었다.

하지만 Unity3D의 가능성에 관심을 가진 게임 개발자들이 Unity를 도입하여 게임을 개발하기 시작하였고, 유니티 역시 요구사항에 맞추어 점점 게임 관련 기능들을 하나,둘 추가하기 시작하였다. 그리고 그런 기능들 중에 특히 웹에서부터 시작한 멀티플랫폼 지원 기능이, 스마트폰 게임 개발 트렌드에 힘입어 인기를 끌게 되었고, 이제는 완전한 게임엔진의 모습을 갖추게 된 것이다. (지금은 구글에서 Unity를 검색하면 홈페이지 설명에 'Game Engine' 이라고 명시되어 있다)



[▲위키백과에서 정의하고 있는 유니티]

현재의 Unity3D는 이름 그대로, 멀티플랫폼 3D 게임 엔진이다. 하지만 Unity3D는 기존의 3D 엔진과는 차별되는 장점들이 많다. 어떤 것들인지는 아래에 설명하겠지만, 그중에서도 가장 큰 특징은 바로.. '가격도 싸고, 배우기도 쉽고. 게임 만들기도 쉽다!'라는 것이다. 특히 배우고 개발하기 쉽다는 것은 그 이전에 존재했던 게임 엔진들이, 상당한 프로그래밍 지식이 없으면, 활용하지 못했다는 것을 생각해보면 엄청난 장점이라 할 수 있다. 마치 기존의 게임 제작툴(예. RPG 쯔꾸루, 게임메이커)들의 프로버전 이라고 할 수도 있다.

거짓말 좀 보태서 과장하자면, 프로그래밍 기본을 습득한 상태에서, 유니티를 조금 배우면, 간단한 2D 슈팅 게임이나, 퍼즐 게임 같은 것들은 하루도 안 걸려서 개발이 가능하다고 할 수도 있을 정도이다. 실제로도 기존의 기획자나 아티스트가 창업을 한 후, 직접 유니티를 공부해서 프로그래머 없이 직접 게임을 만들어 발매하는 경우도 종종 있다.


1) 스마트폰 개발을 제대로 지원하는 멀티플랫폼 엔진

기존의 엔진들도 멀티플랫폼을 지원한다고 하지만, 사실 PC나 콘솔외의 지원은 극히 미비한 수준이었다. 하지만 유니티는 다양한 멀티 플랫폼, 특히 스마트폰 같은 모바일 환경을 거의 완벽히 지원한다. 만약 필자가 간단한 2D 슈팅 게임을 유니티에서 개발 했다면, 빌드시에 선택 만으로, PC버전, Web 버전은 물론 안드로이드, IOS까지 거의 똑같은 버전으로 빌드할 수 있다.

아직까지 이런 멀티플랫폼 개발을 제대로 지원하는 엔진은 유니티가 최초이다. 필자가 현재 회사에서 유니티로 개발하고 있는 3D 게임도 개발 중에는 PC 버전으로 빌드하여 개발 및 테스트하고 있지만, 언제든 클릭 몇 번만으로 안드로이드와 아이폰 버전을 똑같은 모습으로 빌드할 수 있다.






2) 강력한 성능에 비해, 저렴한 가격

최근에 유니티가 가장 널리 퍼지고, 많은 중소 개발사에서 선택하는 가장 큰 이유는 바로 저렴한 가격이다. 기본적으로 유니티는 모바일 빌드와 고급 기능들이 빠져있긴 하지만, 무료 버전이다! 누구든 유니티 홈페이지에 가서 그냥 바로 다운 받아서 설치해서 사용해 보면 된다. 그리고 고급 기능들이 사용 가능한 PRO버전도, 한 카피당 겨우 165만원(!)정도 밖에 하지 않는다.

그리고 여기에 모바일 빌드 기능을 IOS/안드로이드용으로 따로 구매해야 하는데 그렇다고 해도 300~400만원 정도 밖에 하지 않는다. 기존의 언리얼 같은 엔진의 가격이 프로젝트당 30억원에 달한다는 것을 생각해보면, 정말로 파격적인 가격이라 할 수 있다. 기존에 저가 엔진이라고 불리던 엔진들도 1~3억정도는 한다. 그래서 개발자가 3~4명 정도 있는 소규모의 인디 개발사나, 스타트업 게임 회사에서는 천만원 정도 되는 비용으로 유니티를 이용한 게임을 몇십개를 만들어 낼 수도 있는 것이다. (유니티는 1카피당 비용을 지불한다. 즉, 구입하고 나서 게임을 몇 개를 만들어내도 추가 비용이 없다.)



[▲유니티3D엔진의 가격]


▣ 배우기도 쉽고, 쓰기도 쉬운 Unity3D

유니티의 가장 큰 또 다른 장점은 바로 쉽고 편리하다는 것이다. 필자와 같이 기존에 여러 상용엔진들을 사용하여 온라인 게임을 개발했던 개발자들이 처음 유니티를 접하고 하는 소리는 다 똑같다.. ”뭐? 이렇게 쉽게 다 돼?! 필요한 거 다 있네?”. 유니티의 모토 중의 하나가 “게임 개발의 대중화”라고 하는데, 정말로 게임을 만들기 쉽게 되어있다. 마우스 클릭 몇 번, 드래그엔드랍, 그리고 간단한 스크립트 코드 작업이면 퍼즐게임 같은 간단한 게임들은 금방 개발이 가능하다.

기존의 프로그래머들이 수 십줄, 수 백줄의 코드를 짜야하고, 3D 그래픽스와 수학, 물리 등의 지식을 알아야만 구현 가능했던 기능들이 마우스 클릭 몇 번으로 바로 눈앞에서 금방 구현이 되는 것을 보다 보면.. 할 말이 없을 정도이다. 물론 언리얼의 개발툴도 이런 기능들을 많이 지원하긴 하지만… 언리얼이야 워낙 비싼 엔진이니…

실제로 게임 개발자 컨퍼런스에서 유니티 관련 강연들을 보면, “1시간 만에 FPS 만들기” 라던가, “1시간 만에 슈팅 게임만들기”같은 주제로 하는 강연들도 있다. 실제로 직접 구현을 하면서 1시간만에 간단한 게임들을 만드는 모습을 보여주는 내용들이다. 그만큼 유니티는 익히기도 쉽고, 사용하기도 간편하다. 필자와 같은 개발자들은 농담으로 유니티가 스타크래프트 맵툴보다 게임 만들기 더 쉽다.라고 이야기를 한 적도 있을 정도이다.



[▲이런 강연들도 있을 정도이다. 출처 : http://onoffmix.com/event/7850 ]


▣스마트폰 게임 개발에, 최적화된 엔진 Unity3D

강력한 성능에 비해, 상상도 할 수 없을 정도의 저렴한 가격, 그리고 거의 완벽에 가까운 모바일 개발 지원. 유니티가 가진 이런 장점들을 5~7명 이하의 소규모 개발팀들이 스마트폰 게임을 개발하기에 최적화된 스펙이었다. 물론 언리얼 엔진 같은 걸 사용할 수도 있지만, 앞서 이야기했듯이 언리얼 가격만 억소리가 나니까… 그렇다고 엔진 없이 직접 모바일 게임을 개발하기 위해서는, 안드로이용 버전과 아이폰 버전을 따로 개발해야 하는 등 여러 문제가 직면해 있다. 스마트폰 게임들의 스케일이 작고, 소규모 인원이 3~6개월 사이에 빠르게 멀티플랫폼(IOS/안드로이드)을 출시해야 하는 상황에서 유니티는 최적의 솔루션이 되었다.

사실 유니티 엔진은 스마트폰 게임 개발에 최적화되어 있다고 할 수 있다. 습득도 쉽고, 개발이 편해서, 개발 기간이 짧아지는 데다가, 모바일 환경에 대해서 기본적인 지원들이 전부 구현되어 있기 때문이다. 유니티의 장점이자 단점은 중소규모의 게임 개발에 최적화되어 있다는 것인데, 그래서 규모가 큰 MMORPG같은 온라인 게임을 개발하기엔 부족함이 많지만, 스마트폰 게임들을 개발하기엔 최적화된 엔진이라고 할 수 있다.

실제로도 현재 국내외에서 개발되고 있는 스마트폰 게임의 70% 이상이 유니티 엔진을 이용하여 개발되고 있는 실정이다. 유니티 엔진 개발사의 경우에도, 모바일용 게임 엔진을 사실상의 메인으로 두고, 유니티 교육 과정들을 개설하고, 홍보를 하고 있으며, 시중에 여러 유니티 입문서등의 책이 나와있는데, 당연히 이 모든 책들도 유니티를 이용해서, 스마트폰 게임을 개발하는 내용들로 구성되어 있다.

그리고 최근에 카카오톡의 정책 변경으로 인해서, 카톡에 게임을 넣기 위해서는 안드로이드/아이폰을 동시에 게임을 출시해야만 하도록 변경되었는데, 멀티플랫폼을 지원하는 유니티로 개발하지 않고, 안드로이드 버전만 개발을 진행한 게임 회사들의 경우에는 비상이 걸렸을 정도이다. (일반적으로 플랫폼별로 따로 개발하는 경우에는 안드로이드 버전을 먼저 개발한다)


▣ 기능이 없고, 리소스가 없다고?, 그럼 사면 되지! 에셋스토어



[▲게임 개발에 필요한 리소스 및 툴들을 구입할 수 있는 유니티 에셋 스토어]

유니티만이 가지고 있는 또 다른 강점이 바로 “에셋스토어”이다. 유저들이 게임을 앱스토어나 구글 마켓 등에서 구입해서 즐기듯이, 유니티를 사용하는 게임 개발자들이 게임에 사용될 리소스들을 구입할 수 있는 마켓이 있다. 그것이 바로 유니티가 지원하는 “에셋스토어”이다.

유니티가 운영하는 이 에셋스토어는 전세계의 수많은 유니티 사용자들이 자신들이 만든 3D 그래픽 모델, 애니메이션 데이터뿐만 아니라, 게임에 사용되는 코드, 게임을 개발하기 위한 툴 등을 제작하여 스토어에 올려서 돈을 받고 판매할 수 있게 되어 있다. 유니티 엔진 자체도 물론 강력한 개발툴이긴 하지만, 다양한 게임을 개발하기 위해서는 부족한 기능들이 당연히 존재한다. 그러한 부족한 기능들을 매꿀 수 있는 기능 확장이나 개발툴 등을 바로 이 에셋스토어에서 구매하여 본인들의 게임 개발에 사용할 수 있다.

현재도 이 에셋스토어에는 수백 개의 그래픽 데이터, 애니메이션 데이터, 맵툴, 2D 애니메이션 툴, GUI 라이브러리, 셰이더 코드 등이 올라와 있다. 게임 개발자들은 그중에 자신이 필요한 것이 있다면, 얼마든지 구입해서 유니티에 적용해서 개발에 사용이 가능하다. 실제로 현업에서 유니티를 이용한 게임 개발에는 유니티 자체만 사용하지 않고, 이렇게 에셋 스토어에 올라와 있는 2D ToolKit이나 NGUI같은 GUI 라이브러리등을 여러 개 활용하여 게임을 개발한다.

극단적으로 예를 들자면, 프로그래머 혼자서 게임을 개발하고, 캐릭터나 배경, 애니메이션, 효과음, GUI등을 에셋스토어에서 구입해서 게임을 개발하는 것도 가능한 것이다.

이 에셋스토어의 존재로 인해서, 전세계의 유니티 개발자들이 자신들의 노하우를 판매하고, 다른 개발자들이 그것을 구입하여 빠르고, 편하게 게임을 개발하는 것이 가능해졌다. 또한 유니티에서 제공하지 못하는 기능들을 제공하는 확장툴을 제작하여, 에셋스토어 판매를 전문적으로 하는 외국 회사들도 많이 존재한다. 소규모 개발팀으로 구성되는 모바일 게임 개발에서 이 에셋스토어의 존재는 무엇보다 가장 큰 매력이 된다. 실제로 온라인 게임의 경우에는 개발에 필요한 모든 툴들을 거의 다 개발팀에서 직접 개발했어야 했었고, 툴 하나의 개발기간만 해도 6개월이 훌쩍 넘어가는 경우가 흔했다. 하지만 유니티에서는 단지 스토어에서 필요한 것들을 사서 구입하기만 하면 된다. 그리고 반대로 자신이 만든 기술이나 리소스가 있다면, 이 에셋스토어에 올려서 전세계의 유니티 사용자들에게 판매할 수도 있다.


▣ 그럼 Unity3D는 만능인가?

이렇게 다양한 장점을 가진 Unity3D지만, 물론 만능은 아니다. 필자가 후배들에게 유니티와 다른 엔진을 비교할 때 사용하는 말이 “소 잡는 데는 소 잡는 칼을, 닭 잡는 데는 닭 잡는 칼을 써야 한다”이다. 유니티는 모바일 개발에는 분명 최적화된 장점을 가지고 있지만, 반대로 하이엔드급의 PC 온라인 게임을 만들기에는 문제가 많다.

특히 애초부터 소규모 개발에만 최적화되어 있기 때문에, 수십 명에서 많게는 수백 명까지 협업으로 게임을 개발하기 위한 기능들의 구현이 굉장히 취약하다, 또한 규모가 큰 PC 온라인을 개발하기 위한 심리스 월드, 리소스 관리 같은 고급 기능들의 빈약하며, C#이나 자바 스크립트 같은 언어를 사용하기 때문에 생기는 메모리 관리와 성능 이슈등에 관련해서 문제가 많은 편이다. 한마디로 “쉽게 게임을 개발할 수는 있지만, 복잡한 게임을 개발하기는 어렵다”라는 것이다. 그래서 하이엔드급 PC 온라인 게임 개발에는 유니티를 사용하지 않는 것이다. 정말로 모바일용 게임 엔진이라고나 할까.

실제로 현재까지 국내에서 Unity3D로 개발된 PC용 온라인 게임은 엔도어즈의 “삼국지를 품다”정도이다. 이 게임은 처음부터 멀티플랫폼 MMORPG를 목표로 개발하였기 때문에, 유니티를 게임엔진으로 선택하였다. 하지만 유니티는 MMORPG를 개발하기에 결코 좋은 엔진은 되지 못하였다. 실제로 “삼국지를 품다”의 개발팀은 개발에서 수많은 난항을 겪어야만 했었다.

사실 PC용으로만 개발을 했었다면 아마 엔도어즈의 개발팀들은 유니티를 선택하지 않았을지도 모른다. 지난해 KGC의 엔도어즈 개발자들의 강연들을 보면, 대부분 유니티로 생긴 문제들을 해결한 경험담이 주를 이루고 있다. 모바일 버전만이라면 몰라도, PC버전까지 유니티로 개발하였기 때문에 겪게 되는 문제들이었다.



[▲출처: Multi Platform Full 3D MMORPG 만들기- "삼국지를 품다"의 테크니컬 아트 – 정종필]


개발자 입장에서 또다른 문제들은, 유니티 자체 내부는 블랙박스화 되어 있다는 것이다. 다른 엔진들이 풀소스를 제공하여, 각 게임에 맞게 엔진 내부를 수정하면서 개발을 진행한다. 엔진에서 제공하는 기능들이 각 게임에서 필요로 하는 기능들이 다르기 때문이다. 일례로 엔씨의 같은 경우도, 언리얼의 내부 소스코드를 상당히 많이 수정하여야만 게임 개발이 가능하였다.

하지만 유니티는 풀소스를 일반적으로 제공하지 않아서 개발사에서 직접 엔진 내부를 수정하기가 사실상 거의 불가능하게 되어 있다. 즉 유니티를 있는 그대로 사용해야만 하며, 내부에서 어떤 문제들이 생기는지, 그리고 그것을 어떻게 수정해야 하는지 알기가 거의 불가능하다. 그래서 유니티 자체에서 생기는 문제들을 수정하기가 개발사의 입장에서는 상당히 불편하다는 단점이 있다.

또한 유니티는 자체가 하나의 패키지화 되어 있어서, 다른 미들웨어를 따로 붙이는 것도 불가능한 구조이다. 대표적으로 현재 많은 개발사에서 UI 라이브러리로 사용하고 있는 같은 경우에도, 임의적으로 따로 구입하여 유니티에 통합하는 것이 불가능하다. (현재 Scaleform에서 Unity용을 개발 중이다).

이것은 위에 언급한 문제와 같이 유니티가 제공하는 메인 프레임외에 다른 미들웨어들을 사용하는 것이 불가능하다는 것이다. 어셋스토어에서 다른 개발자나 개발사들이 만든 애드온들이 있긴 하지만, 하이엔드 게임 개발에 필요한 고급 미들웨어들을 통합할 수 없다는 것은, 제작할 수 있는 게임에 한계가 있다는 것을 의미한다.

그리고 이름에 붙어있는 3D에서 알 수 있듯이.. 유니티는 3D 게임 전용 엔진이다. 사실상 2D 그래픽에 대한 지원이 상당히 미비하고 문제가 많다. 그래서 에셋스토어에 2D 게임을 만들기 위한 다양한 2D 게임 제작용 확장툴과 라이브러리등이 판매되고 있고, 2D게임을 개발하는 대부분의 회사들이 거의 필수적으로 이 추가 라이브러리들을 구입하여 사용한다. 하지만 근복적으로 2D에 대한 지원이 빈약하기 때문에, 2D 게임을 개발하는 경우에는 유니티를 포기하고, Cocos2D같은 다른 멀티플랫폼 라이브러리를 사용하는 개발사도 상당히 많은 실정이다.




[▲유니티에서 2D 게임을 개발하기 위해서 가장 많이 사용되는 확장 툴인 2D ToolKit.
에셋스토어에서 따로 구입해야 한다]



▣ 앞으로 모바일 게임 개발의 대세는 'Unity3D'

앞서 언급했던 것처럼 유니티는 만능이 아니다. 하지만 앞으로도 한동안 모바일 게임 개발의 대세는 유니티가 차지할 것 같다고 예상한다. 사실 이런 가격에 이런 편리한 기능들과 확장성, 그리고 모바일 플랫폼까지 지원하는 엔진은 유니티가 거의 유일하다. 최근에 스마트폰 개발을 시작한 게임 회사들 역시 가장 먼저 유니티 엔진 도입을 고려하는 것이 일반적이다.

그리고 최근에는 3D 모바일 게임들도 점점 많이 나오는 상황에서는 3D 멀티플랫폼 게임의 개발에 있어서, 유니티외에는 거의 선택지가 없는 실정이기도 하다.

앞으로 한동안은 유니티 같은 저렴한 가격과 편리한 개발, 멀티플랫폼에 대한 지원을 가진 다른 엔진이 나오기 전까지는 모바일 게임 개발의 게임 엔진의 대세는 역시 유니티가 차지하지 않을까 예상해 본다.


댓글

새로고침
새로고침

기사 목록

1 2 3 4 5