게임 개발/Cocos2d-x 18

Cocos2d-x 3.0 베타2 안드로이드에서 애드몹(Admob) 달기

Cocos2d-x가 기존 2.x대 버전과는 달리 3.0으로 오면서 안드로이드의 메인 액티비티가 일반 액티비티가 아닌 NativeActivity로 변경되었습니다. NativeActivity를 사용하면, 자바 호출이 필요하지 않는 프로젝트에서는 성능향상을 가져올 수 있다고 합니다만, 문제는 자바 호출이 필요할 경우 입니다. 대표적인 것이 인앱결제라든지 랭킹플랫폼, 광고 플랫폼등이 있겠지요. 3.0 베타2 버전에서는 알파버전과는 달리 기본적으로 Cocos2dxActivity.java 가 들어있습니다만 (알파버전은 이조차도 없어서 직접 생성해야 했습니다) 기존 2.x대의 일반 액티비티에서 애드몹과 같은 광고 플랫폼을 올리는 방식이 더이상 통하지 않더군요.(광고배너가 아예 화면에 나타나지를 않습니다.) Cocos..

cocos2d-x 3.0 스프라이트 수동 관리

(!) 주의 : 이 글은 C++ 초보자용입니다. 아이폰용 cocos2d를 사용하다가 넘어온분들이 C++에 익숙치 않아 헤메는 분들을 위한 글입니다. cocos2d-x 3.0 beta2에서 (beta1에서도 동일) 변경점 중의 하나가 몇몇 클래스의 생성자와 init관련 멤버함수들이 protected 로 지정되었다는 점입니다. 즉, 이제는 기본적으로 아래와 같이 수동(?)으로 스프라이트를 생성하려고 하면, cocos2d::Sprite *pMySprite = new cocos2d::Sprite;pMySprite->initWithFile ("..........."); 빌드시 cocos2d::Sprite의 protected 생성자를 호출했다는 에러가 발생합니다. Calling a protected construc..

Cocos2d-x 3.0 beta2 발표

2014년 1월 27일에 Cocos2d-x 3.0 Beta2 가 발표되었습니다. 약 보름조금 넘어서 발표되었는데요, 생각보다 이번에는 업데이트가 빠르네요. 발표 소식은 http://www.cocos2d-x.org/news/179 에서 살펴볼 수 있습니다. 소식은 리카르도 퀘사다씨가 올린것으로 나오는군요. 이번 버전의 변화점은 https://github.com/cocos2d/cocos2d-x/blob/cocos2d-x-3.0beta2/CHANGELOG 에서 확인해 볼 수 있습니다. 살펴보면 일부 기능 추가와 많은 버그 픽스가 있었던 것으로 나오는데요, 주요점을 보면 게임에 따라 20%~100%의 렌더링에서의 퍼포먼스 향상이 있다고 하며, 스택에서 AutoReleasePool을 생성하는것을 지원한다고 합니다..

Cocos2d-x 3.0 beta 안드로이드 빌드하기

지난번에, Cocos2d-x 3.0 베타의 프로젝트 생성 방법을 살펴봤습니다. (링크 : http://www.wingsnote.com/27) 이번 글에서는 안드로이드 빌드 하는 방법을 살펴봅니다. iOS의 경우에는 너무 간단해서 설명하지 않아도 될 것 같습니다. 그냥 생성된 프로젝트 디렉터리 중, 'proj.ios_mac' 디렉터리 내의 .xcodeproj만 XCode에서 열먼 모든게 끝나니까요. 안드로이드는, 빌드하는것이 그렇게 간단하지 않습니다. C++로 이루어진 cocos2d-x는 자바 환경이 기본인 안드로이드와는 이질적이기 때문에 NDK도 필요하고, 이클립스도 아무래도 안드로이드 전용 개발툴이 아니다 보니 이것저것 설정을 해 줘야 하거든요. (그래도 지루한 에러와의 싸움은 스트레스를 가중시키네요...

Cocos2d-x 3.0 beta에 새로 생긴 Vector, std::vector 대신 사용할 수 있을까?

이번에 Cocos2d-x 3.0 베타버전을 받아 보거나, 사이트에서 변경사항을 살펴보면, 이번 버전부터 cocos2d::Vector와 cocos2d::Map을 지원한다는 점을 봤을겁니다. 간단히 말해서, 기존의 cocos2d::CCArray (2.x) 혹은 cocos2d::Array (3.0알파) 대신에 cocos2d::Vector를, cocos2d::CCDictionary (2.x) 혹은 cocos2d::Dictionary (3.0알파) 대신에 cocos2d::Map을 사용하라는 것이지요. 그런데, 새로 생긴 cocos2d::Vector나 cocos2d::Map을 살펴보면, 마치 C++ 표준인 std::vector나 std::map과 유사하게 생겼습니다. 그래서 그런지, cocos2d::Vector 대..

Android NDK r9c 에서, std::to_string () 지원 안돼요~

Cocos2d-x 작업과 뗄레야 뗄 수 없는 NDK 빌드... 안드로이드는 기본 어플리케이션 프레임웍이 자바로 되어 있으니, C++을 사용하려면 NDK를 사용할 수 밖에 없죠. 당연히 Cocos2d-x도 안드로이드용으로 빌드하기 위해서는 NDK를 사용합니다. Cocos2d-x 3.0부터 본격적으로(?) C++11을 사용하기 때문에, std::to_string () 역시 당연히 될것이라고 생각했습니다. iOS용 빌드를 먼저하기 때문에, XCode에서도 물론 빌드도 잘 되고, 실행도 잘 되었습니다. 그러나, 잘 되겠지라고 생각한 NDK를 통한 빌드의 결과는? ...... jni/../../Classes/Game/AAAScene.cpp:204:26: error: 'to_string' is not a membe..

Cocos2d-x 3.0 beta, 멀티플랫폼 프로젝트 생성 방법 변경됨

Cocos2d-x 3.0 베타에서 멀티플랫폼 프로젝트의 생성방식이 바뀌었습니다. Cocos2d-x 2.1.4 에 있던 create_project.py를 이용한 멀티플랫폼 프로젝트 생성방식이 개인적으로 마음에 들지 않았던 점이 Cocos2d-x 엔진을 여러 프로젝트가 공유한다는 점이었거든요. 그래서, 보통 [cocos2d-x루트디렉터리/projects/내 프로젝트] 형태로 프로젝트가 생성이 되었었고, 여러 프로젝트를 만들어도 하나의 cocos2d-x 엔진을 공유하는 형태였지요. 문제는 이런방식으로 사용할 때, cocos2d-x는 하나만 있어도 되니 디스크 공간 절약도 되고, 문제있는 부분 하나만 고치면 전체 프로젝트에 적용된다는 장점은 있지만, 새 버전의 cocos2d-x가 나왔을 때 일부는 기존버전을, ..

Cocos2d-x 3.0 beta 출시!

어제인 2014년 1월 8일부로 Cocos2d-x 3.0 베타버전이 릴리즈 되었습니다. 그동안 3.0 alpha1 버전으로 오랫동안 기다렸는데요, 아마 두달 정도 기다린것 같습니. 알파에서 베타로 넘어온 이상 많은 부분의 개선이 있지 않을까 싶습니다. 자세한 내용은 http://cocos2d-x.org/news/172 에서 살펴 볼 수 있습니다. 그리고 드디어 3.0과 관련한 도큐먼트도 보강이 된 것 습니다. 사실 알파버전에서는 도큐먼트가 아무래도 많이 부족한 점이 있었죠. (대체로 샘플 프로젝트를 보면서 작업이 가능하기는 했습니다만...) (출처 : http://cocos2d-x.org/news) 공식사이트에서 설명하는 지난 3.0 alpha1 버전에 비해 개선된 주요점을 보자면, 새로운 랜더러가 드디..