게임을 만드려면 어떻게 해야 할까...(2)
개발자로써 어느 정도 경력이 생기고 내가 무엇을 만들어도 되겠다 하는 생각이 들었을때 게임 제작을 하기로 마음먹었다.
클라이언트 경력 6년차인 내가 생각하기에 게임 제작은 적어도 C++이나 자바같은 언어 하나정도는 고급까지는 아니더라도 할줄 안다 정도는 말할 수 있어야 시작하기에 버겁지 않다고 생각한다.(물론 배우면서 해도 상관은 없다)
하지만 갑자기 하려니 뭐부터 해야하는지 막막했다.
여러 도구들이 있겠지만 내 눈에 띄는 도구들은 아래 3개와 같았다.
순서대로 Cocos2D-x , Unity, Unreal 이다.
위 3개가 물망에 오른 이유는 국비지원 학원에서 게임 회사로 간 친구들, 형들의 이야기를 들었을때
현업에서 많이 쓰이는 엔진들이라고 생각되어졌기 때문이다.
일단 먼저 Cocos2D-x에 대해 얘기를 해보겠다.
Cocos2D-x는 Unity나 언리얼같이 3D 위주로 만들어진 엔진이 아니고 2D로 게임을 만들기에 적합한 엔진이다.
엔진은 OpenGL로 만들어져 있으며(여기서 OpenGL은 directX와 더불어 세계적으로 유명한 그래픽라이브러리이고 4.0부터는 Apple이 OpenGL을 점진적으로 버린다고 하여 iOS는 Metal을 사용한다고 한다.) iOS / Android / PC 앱을 만들 수 있는 크로스 플랫폼 엔진이라 할 수 있겠다.
우선 Coco2D-x는 C++, JavaScript, Lua, HTML, Python 등으로 되어있고 무료로 사용할 수 있다. 게임이 나중에 발매되어 많은 수익을 낸다 하더라도 이 엔진을 사용하는 라이센스비용을 지불하지 않아도 된다. 그리고 Unity, Unreal 처럼 GUI가 구성되어 포토샾처럼 툴을 이용해서 개발하는 방식이라기 보다 Cocos2d-x api를 가지고 코드를 직접 구현하여 게임을 구현해야 한다. 따라서 클래스를 작성하고 구조를 설계해하는 부분들은 모두 개발자의 몫이다.
현재는 Unity, Unreal에 많이 밀리고 있는게 사실이지만 Cocos2D-x를 통해 만들어진 게임들이 상당수 존재하고 여전히 업데이를 하고 있다. 그래서 자료는 다른 두 엔진에 비해 검색량이 많지는 않지만 코드가 오픈되어있기 때문에 어느정도 게임을 만드는데 문제를 해결해 나갈 수 있다. 그리고 광고라던가 결제 시스템, 애니메이션등을 표현할 수 있는 다른 라이브러리들과의 연동도 되어있기 때문에 게임에서 필요한 것들은 대부분 할 수 있다.
처음 환경설정을 세팅하는 부분에서 어려운 부분들이 있어 유투브나 구글에 검색을 많이 했었고 GUI 환경이 아니기 때문에 iOS라면 x-code, Android라면 Android Studio, Window면 Visual Studio등을 세팅해줘야한다.
내가 본 cocos2d-x의 특징이다.
ㆍ 2D게임에 최적화된 엔진이다.
ㆍ 무료
ㆍ 다른 두 엔진에 비해 가볍다.
ㆍ 기반언어로는 C++, JavaScript, Lua, HTML, Python 등이 있다.
ㆍ 환경설정을 해야해서(x-code, Android Studio 등등) 진입장벽이 높다.
ㆍ GUI 환경이 아니라 코드로 구조를 직접 구현
ㆍ Spine2D(애니메이션), FireBase(광고 및 인앱결제 등)을 지원한다.
현재 본인이 사용하고 있는 엔진이며 기본적으로 Windows, macOS, Linux, Android, iOS 등 다양한 플랫폼을 지원하고 있고 다만 PC쪽의 플랫폼에 대한 지원은 미비하며상황이 이렇다 보니 PC로는 프로그램이 터지나 안터지나 확인하면서 디버깅만 하고, 정작 완성 빌드는 iOS나 Android로 내보내는 상황이다(namu.wiki/w/Cocos2d).
그 다음은 Unity다
Unity는 현재 초보자부터 고급 기술자까지 많은 유저 층을 보유하고 있는 엔진이다. Cocos2d-x 와는 다르게 GUI로 되어 있기 때문에 따로 코드로 환경설정을 해줄 필요가 없고 바로 다운받아서 설치하면 사용이 가능하다. 많은 유저층을 보유하고 있기 때문에 검색을 통해 많은 정보를 얻을 수 있다는 장점이 있고 비교적 간단하게 여러 플랫폼으로 빌드 할 수 있는 시스템을 갖추고 있다. 언어는 C#을지원하고 있고 다른 엔진과 마찬가지로 여러 플랫폼을 지원한다.
국비지원 학원을 다닐때 아주 잠깐 다뤄 보았지만 조금의 노력을 가지고 빠르게 게임을 만들어 낼 수 있었던 강력한 툴이었다.
내가 본 Unity의 특징이다.
ㆍ 2D/3D 둘다 사용하는 엔진이다.
ㆍ 엔진을 사용하기 위해 환경설정을 해줄 필요가없어 비교적 진입장벽이 낮다.
ㆍ 많은 유저층을 보유하고 있어 정보 얻기가 좋다.
ㆍ C#
ㆍ 저렴한 라이센스 비용(매출이 10만 이하는 무료이다)
ㆍ 각종 스크립트, 플러그인 등을 사고 팔 수 있는 에셋 스토어
ㆍ 지원하고있는 부분들이 많기 때문에 Cocos2d-x보다 무겁다
ㆍ 소스코드 비공개
마지막 3번째인 Unreal이다
Unreal은 미국 에픽게임즈에서 제작한 강력한 3D 게임 엔진이다. 언리얼로 만든 게임들을 보면 대부분 퀄리티가 엄청 좋고 그래픽이 화려하다. 이 엔진 역시 유니티와 마찬가지로 GUI가 되어 있어 Cocos2d-x 처럼 따로 앱을 제작하기 위해 환경설정을 할 필요가 없다. 라이센스는 특정 금액 이상 수익이 나면 연 5% 비용이 들고 우니티 애셋 스토어처럼 마켓플레이스라는 애셋 시장이 있어 리소스를 사고 팔 수 있다. 유니티와 더불어 게임 엔진의 1,2위를 다투는 엔진 답게 많은 플랫폼들을 지원하고 유니티 만큼은 아니지만 언리얼의 라이센스 정책으로 많은 유저들이 사용하게 되면서 인터넷에서 얻을 수 있는 정보량 또한 많아졌다. 지원 언어는 C++이며 한국어 지원이 유니티보다 더 잘되어있다고 한다.
내가 본 Unreal 의 특징이다.
ㆍ 3D에 특화된 엔진이다.
ㆍ 컴파일 할때 사양을 필요로 하기 때문에 초기 Cost가 많이 들 수 있다.
ㆍ 작업 결과물이 다른 두 엔진에 비해 훨씬 좋은 편이다.
ㆍ 한국어 지원은 초보자 측면에서 언리얼 엔진이 진입장벽이 낮다.
ㆍ 회사단위의 사용자가 사용하기에 적합한듯 하다.
ㆍ 소스가 오픈되어 있다.
이와 같이 게임을 만들기 전에 3개의 엔진들을 살펴 보았고 각각의 엔진들의 특징들이 다르다.
처음 게임을 만들때 이와같은 엔진들을 가지고 고민을 많이 했었는데 내가 선택한 도구는 Cocos2D-x이다.
그 이유는 본인이 C++ 개발자이기도 했고 엔진의 라이센스가 무료이면서 2D 게임만 만들 생각이었고 특히 언리얼이나 유니티같이 GUI가 갖추어진 환경에서 코딩을 하는게 프로그래머로써 별로 코드를 짜는듯한 느낌을 안줄 것 같아서였다.(지극히 개인적인 생각) C++로 클래스를 만들고 구조를 짜면서 게임을 만든다면 본인한테 유익하고 C++ 개발자로서 더욱 업그레이드 될거라고 생각했다.
지금 어느정도 개발을 하는 입장에서 다시 생각해본다면...
자신이 인디게임 개발자이고 초보자라면 생산성을 위해서 유니티를 하는게 좋을 거라고 생각한다. 유니티는 유저층도 두껍고 에셋 스토어를 통해 리소스를 쉽게 살 수 있으며 사용자가 많기 때문에 정보도 쉽게 얻을 수 있고 Cocos2d-x 처럼 처음 환경설정이 진입장벽이 되지 않기 때문에 바로 시작해볼 수 있기에 좋은 엔진이다.
여기서 언리얼 엔진은 내가 생각하기에 소규모 인원이 다루기에 힘들다고 판단했다.(개인적인 생각입니다)
현재 본인은 Cocos2D-x를 쓰고 있기 때문에 다른 두 엔진은 겉핥기 수준으로 밖에 안다뤄 봐서 많은 기능들의 차이를 이야기 할 수 는 없다. 하지만 앞서 얘기한 특징들을 생각해본다면 자신이 게임을 만들때 필요한 엔진을 선택할 수 있을거라 생각한다.