create-android-project.sh(.bat)로 프로젝트를 만들고 그 안의 build_native.sh로 빌드를 한 뒤, eclipse에서 New->Other->Create Android Project from Existing Source로 만들어진 소스를 기반으로 안드로이드 프로젝트를 생성할 시 소스에서 org.cocos2dx 관련된 패키지를 사용하는 부분은 모두 에러로 나타난다. 이것은 Cocos2dx 라이브러리 관련 소스가 import 되지 않아 나타나는 에러인데 이것을 해결하려면 다운로드 받은 Cocos2dx 디렉토리를 $COCOS2DX_HOME이라고 했을 때 New->Other->Create Android Project from Existing Source에서 $COCOS2DX_HOM..
CCArray를 생성하는 방법은 보통 다음과 같다. CCArray *pArray = CCArray::create(); 혹은 CCArray *pArray = CCArray::createWithObjects( obj1, obj2, NULL ); 보통 이렇게 생성할 것이다. 하지만 이렇게 CCArray를 생성한 뒤 나중에 Array에 addObject를 하려고 하면 에러가 난다. 이것을 해결하기 위해선 위 소스를 다음과 같이 바꿔주면 된다. CCArray *pArray = CCArray::create();pArray->retain(); 혹은 CCArray *pArray = CCArray::createWithObjects( obj1, obj2, NULL );pArray->retain(); 이런 실수는 레퍼런스 ..
그냥 소스만 주는 것은 좋지 않은 것이라는 걸 저도 알고, 다른 분들도 알고 있다고 생각합니다. 하지만 뭔가를 이해하는데 가장 좋은 방법도 소스를 보는 방법입니다. 그래서 일단 소스를 첨부하고 시작하도록 하겠습니다. 제가 만든 애니메이션 클래스는 한 파일 안에 여러 애니메이션 이미지가 들어 있는 이미지를 이용하는 클래스인데요. 일단 간단하게 구현하기 위해 세로로 여러 줄을 지원하진 않고, 가로로 한 줄만 지원하도록 하였습니다. (만드는 게임에 많은 애니메이션을 요구하는 것이 아니라 이렇게 만든 부분도 있습니다. 보통 만들 때에는 프레임 당 가로, 세로 길이를 넣어서 java에서 문자열을 split 하듯이 그림을 2차원 배열로 만들어서 각각의 인덱스에 해당하는 프레임을 뽑아오더군요.) 1. 팩토리 패턴 만..
Cocos2d-x를 하다 보면 팩토리 패턴 함수들이 자주 눈에 띕니다. 가장 많이 쓰는 CCSprite를 예로 들어보면 ### cpp static CCSprite* spriteWithTexture(CCTexture2D *pTexture); static CCSprite* spriteWithTexture(CCTexture2D *pTexture, const CCRect& rect); static CCSprite* spriteWithTexture(CCTexture2D *pTexture, const CCRect& rect, const CCPoint& offset); static CCSprite* spriteWithSpriteFrame(CCSpriteFrame *pSpriteFrame); static CCSprit..
안드로이드의 경우엔 다양한 해상도 때문에 골머리를 앓는 경우가 많다. 다들 알겠지만 cocos2d-x로 안드로이드 프로젝트를 만들 때에는 cygwin, ndk 등을 이용하여 안드로이드 프로젝트를 생성하는 create_android_project.bat 파일을 실행하고 이렇게 해서 만들어진 안드로이드 프로젝트에 기존에 만든 cocos2d-x 데스크탑용 소스들을 넣은 뒤 컴파일해서 안드로이드에 포팅한다. 난 cocos2d-x가 C++로 작업하며 윈도우를 띄워서 작업하다가 그대로 안드로이드와 iOS에 올릴 수 있다느 사실을 굉장히 매력적으로 느꼈으나 가장 큰 문제인 해상도 문제를 어떻게 해결해야할지 몰라서 꺼리고 있었는데 열심히 해결 방법을 찾기 위해 노력한 결과 그 방법을 찾아낼 수 있었다. 뭐 현재 해상도..
이거 때문에 삽질을 해서..... 다른 사람들은 이 글을 보고 삽질을 겪지 않길 바란다. 이 autorelease() 메소드 이름을 보면 알겠지만 이 메소드를 호출한 객체는 굳이 메모리 해제를 하지 않아도 되는 객체가 된다. 그런데 나는 autorelease()를 걸어둔 메소드들을 delete 했고 이것은 게임을 종료할 때 에러창이 뜨는 요인이 되었다. autorelease() 메소드 구조가 어떻게 되어 있고 release() 메소드가 있는 클래스들의 구조가 정확히 어떻게 되어 있는지는 모른다. 단지 레퍼런스 카운터로 어떻게 어떻게 한다는 것만 알지. CCObject 클래스를 상속받은 객체들은 메모리 해제를 할 때 모두 release를 하는 방식인데(CCObject에 선언 되어 있는 메소드이다.) aut..
LibGDX에서는 Action를 제공합니다. 그리고 그 Action을 적용시킬 수 있는 Actor들이 있습니다. 그림을 이용한 Actor를 만들 때에 좋은 것이 바로 Image 클래스 입니다. (조심하십시오. Actor 패키지의 Image 클래스가 있고, 다른 패키지의 Image 클래스가 있습니다.) http://code.google.com/p/libgdx/source/browse/trunk/gdx/src/com/badlogic/gdx/scenes/scene2d/actors/Image.java?r=2602 오픈소스 라이브러리의 장점을 최대한 활용합시다. 공개되어 있는 소스를 보면 상속관계 등을 손쉽게 이해할 수 있습니다. Actor에게는 Action을 등록할 수 있습니다. Image 클래스는 Actor를..
어느 정도 LibGDX 프로젝트를 작성 해 놓은 상태라는 가정 하에 진행 합니다. 여러분들은 게임에서 사용할 리소스들을 어떠한 폴더에 만들어 놓으셨을 겁니다. LibGDX 홈페이지에서 나오는 동영상 강의(http://code.google.com/p/libgdx/wiki/VideoTutorials)에 따라서 프로젝트 생성을 하신 분들은 안드로이드 프로젝트 작성이 작업이 되어 있을 겁니다. 따라서 리소스들만 옮기면 됩니다. 사용하는 리소스들이 들어가야 할 위치는 안드로이드 프로젝트의 assets 폴더 내부 입니다. 그림으로 보시면 단박에 이해하실 수 있을겁니다. 저는 리소스들을 resource라는 폴더 안에 모아놨기 때문에 안드로이드 프로젝트에 assets 폴더 안에 그 resource 폴더를 그대로 복사해..
다운로드 http://code.google.com/p/libgdx-texturepacker-gui/ LibGDX를 사용하는 유저(혹은 LibGDX 개발자)가 내장되어 있는 Texture Packer 기능으로 GUI툴을 만든 것 같습니다. jar 파일을 실행해야합니다. jar 실행파일 여는 법은 검색해보시면 잘 나옵니다. Texture Atlas는 다음 그림을 보시면 이해하실 듯 합니다. 게임 자료를 찾다보면 이러한 그림들을 보신적이 몇번 있을 것입니다. 이 Texture Atlas를 사용함으로써 리소스 파일 갯수도 줄이고, 용량도 줄일 수 있다고 합니다. (용량에 대해서는 잘 이해가 안가지만) 어찌되었든 연관된 그림들을 한 그림 파일 안에 압축해서 넣음으로써 얻는 이점이 있죠. Texture Packer..
- Total
- Today
- Yesterday