2      Cocos2d-x에 대하여

2.1    Cocos2d-x?

Cocos2d-x 2010 7월에 시작된 프로젝트로 멀티 플랫폼을 지원하는 게임 엔진입니다. Zynga, Glu, GREE, DeNA, Konami, TinyCo, Gamevil, HandyGames, Renren Games, 4399, HappyElements, SDO, Kingsoft 등 모바일 업계에서 이미 많이 사용하고 있습니다. Cocos2d-x는 무료 라이선스로 제공되며 하나의 소스를 다양한 플랫폼에 맞추어 퍼블리싱할 수 있다는 장점이 있습니다. 즉 오브젝티브-C와 자바를 몰라도 아이폰과 안드로이드 플랫폼에 퍼블리싱할 수 있습니다.

Figure 21 Cocos2d-x 로고

 

처음에 Cocos2d는 파이썬을 이용하는 엔진으로 개발되었습니다. 이것을 Cocos2d-iPhone 엔진으로 개발하면서 오브젝티브-C 언어를 이용해 아이폰 게임을 개발할 수 있게 되었습니다. Cocos2d-iPhone 엔진의 기능을 C++ 언어를 사용하여 멀티 플랫폼 환경으로 개발할 수 있게 확장한 것이 Cocos2d-x입니다.

Figure 22 Cocos2d 관계도

 

 

2.1    Cocos2d-x를 사용하는 이유

모바일 플랫폼 환경에서 애플리케이션이나 게임을 개발할 때에는, 사용하는 플랫폼에 따라 지원하는 언어가 각각 다릅니다. iOS는 오브젝티브-C, 안드로이드는 자바를 사용하며, 현재 모바일 시장은 이 두 가지 플랫폼이 대부분을 차지하고 있습니다. iOS와 안드로이드 모두에서 게임을 출시하려면 두 가지 언어로 개발해야 합니다. 이러한 어려움을 극복하기 위해 하나의 언어로 제작되어 두 가지 플랫폼에 모두 적용시킬 수 있게 만들어진 엔진이 바로 Cocos2d-x입니다.

C++ 언어로 제작하여 iOS에서 사용할 수 있는 IPA 파일을 생성할 수도 있고, 안드로이드에서 사용하는 APK 파일도 생성할 수 있습니다. , 하나의 소스를 여러 플랫폼에 적용할 수 있다는 것입니다. 이는 개발 비용을 줄이고, 유지보수 면에서도 두 종류의 소스 파일을 관리할 필요 없이 하나의 소스만을 관리하면 되므로 효율을 높여줍니다.

또 게임에서 사용하는 여러 기능을 게임 엔진에 포함된 리소스를 활용하여 쉽게 구현할 수 있습니다. 모든 클레스를 처음부터 직접 개발하여 사용한다면 엄청난 개발 기간과 노력이 들어가겠지만, Cocos2d-x는 이러한 부분을 엔진 자체에서 지원하므로 간단하고 쉽게 여러 기능을 구현할 수 있습니다.

Cocos2d-x는 무료로 제공되는 오픈소스로서 자유롭게 소스를 확인하고 자신이 원하는 방향으로 수정할 수도 있으며, 많이 사용되는 유니티 엔진과 비교하여 성능이 빠릅니다. 그리고 대부분의 유명한 서드파티 툴도 함께 사용할 수 있습니다.

Cocos2d-x는 이름 그대로 2D용 게임 개발 엔진으로 2D 게임을 제작하는 데 많은 도움을 줍니다. 게다가 오픈소스를 기반으로 무료로 사용할 수 있습니다. 2013Cocos2d-x의 창업자인 왕저王哲의 말에 따르면 중국의 모바일 게임 업계에서는 약 70% 정도가Cocos2d-x를 이용하여 게임을 개발하고 있습니다. 국내에서 많이 사용되고 있는 유니티 엔진과 비교해보면 완전 무료라는 점과 좀 더 저사양의 기기에서도 사용할 수 있다는 장점이 두드러집니다.

가장 많이 사용하는 게임 엔진인 유니티3D와 비교하여 장점과 단점을 비교해보겠습니다.

 

구분

주요 개발 언어

가격

지원

오픈소스

성능

용량

2D 게임 개발

3D 게임 개발

Cocos2d-x

C++

무료

무료로서 지원이 느림

O

빠름

적음

2D 게임 개발에 용이함

3D 게임 개발에 필요한 부분에 대한 클래스 지원이 미흡

유니티

C#

유료(유니티5 모바일 기준 약 500만 원)

유료(모바일 빌드)로서 지원이 확실함

X

느림

개발은 가능하나 엔진이 무겁기에 용량이 크고 성능이 느림

3D 게임 개발에 용이함

 

간략히 요약하면 Cocos2d-x는 무료이며 2D 게임 개발에 최적화되어 있습니다. 유니티는 유료이며 지원을 확실히 받을 수 있으나 2D 게임 개발보단 3D 게임 개발에 최적화되어 있습니다.

 

2.2    Cocos2d-x를 이용하여 만들어진 게임들

Cocos2d-x로 개발하여 출시된 게임은 굉장히 많습니다. 국내 게임 중에는 대표적으로 <모두의마블>, <제노니아5>, <쿠키런>, <다함께 퐁퐁퐁> 등이 있습니다. 다음 그림과 같이 수많은 게임이 Cocos2d-x로 개발되었습니다.

 

 

Figure 23 Cocos2d-x로 출시된 게임들

2.3    Cocos2d-x 2.x 버전과 3.x 버전의 차이점

이 책은 Cocos2d-x의 최근 버전인 Cocos2d-x 3.4 버전을 사용합니다. 기본적으로 큰 틀은 벗어나지 않지만 2.x 버전과 3.x 버전은 많은 차이점이 있습니다. 앞으로는 3.x 버전이 대세가 되고, 계속 업데이트되어 발전할 예정이므로 지금 시작한다면 3.4 버전으로 시작하는 것이 좋습니다.

3.x 버전으로 업데이트되면서 생긴 가장 큰 차이점은 2.x 버전에서 사용하던 CC라는 Prefix가 사라졌다는 점과 C++ 11을 지원한다는 점입니다. 예를 들어 2.x 버전의 CCSprite라는 이미지 클래스를 3.x 버전에서는 Sprite라는 클래스 이름으로 사용합니다. 또한 C++ 11을 지원하므로 기존에 사용할 수 없었던 람다 식이나 auto 키워드를 사용할 수도 있습니다. 람다 식이란 정의되어 있지 않은 익명의 메소드로서 쉽게 말해 따로 콜백 메서드를 생성하지 않은 상태에서 내부 메서드를 작성하여 좀 더 편리하며 빠르게 코드를 짤 수 있게 해줍니다. 주로 반복되지 않는 로직상 한 곳에서만 호출되는 콜백 메서드에서 사용하면 편리합니다.


Prev | Next