2014년 3월 14일 금요일

[Cocos2d-x 3.0] Sprite

※ Sprite 
Sprite *spr = Sprite::create("Icon.png");
spr->setAnchorPoint(Point::ZERO);
spr->setPosition(Point(100, 100));
this->addChild(spr);

create() : 객체를 생성하는 메소드
setAnchorPoint() : 앵커포인트를 설정하는 메소드
setPosition() : 위치를 설정하는 메소드
addChild() : 객체를 화면에 출력하는 메소드


ㄱ. create()
Sprite를 생성하는 방법은 크게 3가지로 구분할 수 있는데, 위와 같이 파일명을 입력해서 만드는 방법과 SpriteFrame을 이용해서 만드는 방법, 마지막으로 텍스쳐를 가지고 만드는 방법이 있다.
단순하게 파일을 가지고 만드는 방법은 위와 같이 바로 파일명을 입력하는 방법이 있고, 아래 소스 코드처럼 파일명과 영역을 지정해서 이미지 파일에서 지정된 위치만 Sprite로 만드는 방법이 있다.

Sprite *spr = Sprite::create("Icon.png", Rect(0, 0, 100, 100));

또한, 일반적으로 코코스2d-x에서 사용되는 대부분의 객체는 create() 메소드를 통해서 생성을 하며, 이것을 통해서 생성된 메소드는 따로 메모리 관리를 하지 않아도 된다.


ㄴ. addChild()
addChild()은 단순하게 화면에 출력해주는 메소드가 아니라 위에 소스 코드에서는 spr이라는 Sprite 객체를 this인 화면 레이어에 종속시키는 역할도 하는 메소드이다. 이러한 관계를 부모-자식(Parent-Child)관계라고 하고 자식은 부모에게 종속된다. 예를 들어 부모가 화면에서 안보여지게 되면 자식도 함께 보여지지 않으며, 부모의 좌표가 이동하게 되면, 따로 자식의 좌표를 이동시키지 않아도 부모에 종속된 모든 자식들도 이동하게 된다.

addChild()를 할 때 위와 같이 단순하게 객체를 입력하는 것외에 z-Order와 Tag라는 것을 추가로 입력할 수 있다. z-Order는 z축의 값을 말하는 것이며, 이 값이 클수록 위쪽에 위치하게 된다. 즉, 같은 위치에 이미지 같은 것이 겹쳐질때 z축의 값이 큰 것이 위에 놓이게 된다. 따로 z축의 값을 설정하지 않을때에는 addChild()를 나중에 한 객체가 위에 놓여지게 된다.

this->addChild(spr, 1);
this->addChild(spr, 2);
[ x, y, z 축 ]

Tag는 부모에 종속되어 있는 자식들에게 번호를 매기는 것으로 이렇게 매긴 번호로 아래와 같이 자식의 객체를 다시 리턴 받을 수도 있다.

this->addChild(spr, 1, TAG_1);
Sprite *pSpr_1 = (Sprite *)this->getChildByTag(TAG_1);

ㄷ. 기타 메소드들
setScale() : 확대, 축소하는 메소드
- setScale(0.5) : 0.5배 축소
- setScale(2.0) : 2배 확대
- setScaleX(0.5) : 너비만 0.5배 축소
- setScaleY(2.0) : 높이만 2배 확대

setRotation() : 회전하는 메소드, (0~360)
- setRotation(90) : 시계방향으로 90도 회전하기
- setRotation(-45) : 반시계방향으로 45도 회전하기
- setRotationX(45) : X 좌표축을 기준으로 45도 회전하기
- setRotationY(45) : Y 좌표축을 기준으로 45도 회전하기

setOpacity() : 알파값을 설정하는 메소드, (0~255)
- setOpacity(128) : 반투명상태 만들기
- setOpacity(0) : 투명상태 만들기
- setOpacity(255) : 불투명상태 만들기

setVisible() : 화면에 출력여부를 정하는 메소드
- setVisible(true) : 화면에 보임
- setVisible(false) : 화면에 안보임

setFlipX(), setFlipY() : 반전하기
- setFlipX(true) : x축을 기준으로 반전하기
- setFlipY(true) : y축을 기준으로 반전하기


※ Point, Size, Rect 관련
Point() : x좌표, y좌표 값을 가지는 자료구조형
- Point(100, 100) : (100, 100)의 좌표값
- point pos = Point(50, 50);
- Point::ZERO => Point(0, 0)
- pos.x, pos.y

Size() : 너비(width)와 높이(height)를 가지는 자료구조형
- Size(100, 100) : 너비 100과 높이 100의 사이즈값
- Size size = Size(50, 50);
- size.width, size.height;

Rect() : 역영의 값(위치와 사이즈)을 가지는 자료구조형
- Rect(0, 0, 100 ,100) : (0, 0) 좌표의 사이즈 (100, 100)를 나타내는 값
- Rect rect = Rect(0, 0, 100, 100);
- rect.origin.x, rect.origin.y, rect.size.width, rect.size.height;




[cocos2d-x 3.0] 사운드(Sound) 관련

cocos2d-x에서는 CocosDenshion이라는 사운드라이브러리를 사용한다.

그래서 네임스페이스를 매번 입력하지 않으려면 상단에 using namespace CocosDenshion;이라고 선언해야 합니다.

사운드는 크게 배경음악효과음악으로 구분한다.

1. 재생 관련(Play)
void playBackgroundMusic(const char *pszFilePath, bool bLoop)
파일명과 반복여부를 입력하면 된다. 배경음악의 경우, 한번에 1개의 배경음악만 플레이된다. 즉, 동시의 2개 이상의 배경음악을 플레이 할 수는 없다.
SimpleAudioEngine::getInstance()->playBackgroundMusic("music.wav", false);

unsigned int playEffect(const char *pszFilePath, bool bLoop)
위와 동일하다. 다만, 효과음의 경우는 동시에 여러개의 플레이가 가능하다. 플레이하면 지정된 효과음의 고유번호가 리턴된다.
SimpleAudioEngine::getInstance()->playEffect("effect.wav", false);



2. 정지 관련(Stop)
stopBackgroundMusic()
stopBackgroundMusic(bool bReleaseData)
배경음악을 정지한다. 또한 종료할때 로딩된 배경음악을 완전히 해제할지를 지정할수 있다.
SimpleAudioEngine::getInstance()->stopBackgroundMusic();

stopEffect(unsigned int nSoundId)
효과음의 번호를 지정해서 해당 효과음만 정지한다.
SimpleAudioEngine::getInstance()->stopEffect(soundID);

stopAllEffects()
현재 플레이되고 있는 모든 효과음을 정지한다.
SimpleAudioEngine::getInstance()->stopAllEffects();



3. 일시 정지, 재시작(Pause, Resume)
pauseBackgroundMusic()
현재 플레이되고 있는 배경음악을 일시정지한다.
SimpleAudioEngine::getInstance()->pauseBackgroundMusic()

resumeBackgroundMusic()
일시정지한 배경음악을 정지된 위치부터 다시 플레이한다.
SimpleAudioEngine:: getInstance()->resumeBackgroundMusic()

pauseEffect(unsigned int nSoundId)
해당되는 효과음의 플레이를 일시정지한다.
SimpleAudioEngine:: getInstance()->pauseEffect(unsigned int nSoundId)

resumeEffect(unsigned int nSoundId)
일시정지된 해당음을 정지된 위치부터 다시 플레이한다.
SimpleAudioEngine:: getInstance()->resumeEffect(unsigned int nSoundId)

pauseAllEffects()
현재 플레이되고 있는 모든 효과음의 플레이를 일시정지한다.
SimpleAudioEngine:: getInstance()->pauseAllEffects()

resumeAllEffects()
일시정지한 모든 효과음을 정지된 위치부터 다시 플레이한다.
SimpleAudioEngine::sharedEngine()->resumeAllEffects()




4. 볼륨(Volume)
setBackgroundMusicVolume(float volume)
배경음악의 볼률을 지정한다. 범위는 0.0 ~ 1.0이다.
SimpleAudioEngine:: getInstance()->setBackgroundMusicVolume(float volume)

setEffectsVolume(float volume)
효과음의 볼륨을 지정한다.
SimpleAudioEngine:: getInstance()->setEffectsVolume(float volume)

getBackgroundMusicVolume()
배경음악의 볼륨 값을 가져온다.
float SimpleAudioEngine:: getInstance()->getBackgroundMusicVolume()

getEffectsVolume()
효과음의 볼륨의 값을 가져온다.
float SimpleAudioEngine:: getInstance()->getEffectsVolume()




5. 로딩(preLoad)
preloadBackgroundMusic(const char *pszFilePath)
배경음악을 미리 로딩해둔다.
SimpleAudioEngine:: getInstance()->preloadBackgroundMusic(const char *pszFilePath)

preloadEffect(const char *pszFilePath)
효과음을 미리 로딩해둔다.
SimpleAudioEngine:: getInstance()->preloadEffect(const char *pszFilePath)




6. 재생여부확인
isBackgroundMusicPlaying()
배경음악의 플레이 여부를 리턴한다.
bool SimpleAudioEngine:: getInstance()->isBackgroundMusicPlaying()










2014년 3월 7일 금요일

Cocos2d-x 기본 개념 잡기


Cocos2d를 사용하기 위해 익숙해져야 하는 용어들과 그 역할을 알아 봐야 할거 같다.
아래 내용은 Cocos2d을 구글 아저씨 한테 물어 여기저기에서 인용한 것들이다.

※ 참고 사이트
Cocos2d : http://www.cocos2d-x.org/wiki/Director_Scene_Layer_and_Sprite
평범한 후라이의 블로그 : http://blog.daum.net/synsy/7664323
마루티님의 블로그 : http://blog.naver.com/yhjeong89
Descode.net : http://descode.net/index.php/archives/105
:
:

CCDirector - 싱글톤 객체. 프로그램이 실행되는 동안 단 하나의 객체만 생성된다. 이 CCDirector가 어떤 Scene을 화면에 띄우기로 결정하는지에 따라서 화면에 보이는 그림이 달라진다. 단순히 화면을 띄우는 것 외에도 앱을 일시정지(Pause) 시키거나 다시 재개(Resume)하는 등 다양한 역할을 하지만 일단 화면을 띄우는데 주 역할을 한다고만 알아놓아도 될거 같다.(Scene 을 관리하며, 전환처리 등을 담당)
포함관계로는 가장 최상위 클래스라고 할 수 있고 오로지 CCScene클래스만 포함될 수 있다.

CCScene - 그림을 그릴 때 사용하는 종이라고 생각하면 된다.(장면을 만들때 사용하는 클래스). 종이가 있어야 그 위에 그림을 그릴 수 있듯이 CCScene 객체가 있어야 화면에 그림을 표시할 수 있다. 하나의 CCScene은 여러개의 CCLayer를 참조할 수 있다. (아래 그림에서는 하나의 CCLayer만 참조하고 있지만 실제로는 다수의 CCLayer를 참조할 수 있다.)
게임상 한 동작을 완결시키는 전체적인 화면을 이야기 한다. Android로 치자면 Activity 같은거라고 보면 됨.
게임에는 MenuScene, GameScene, OptionScene, RankScene 등을 만들어서 관리하는 것이 대부분인데, 이를 쉽게 구현할 수 있도록 클래스 지원한다. CCLayer, CCNode, CCSprite, CCMenu 등의 객체를 포함할 수 있고, 장면을 그릴 때에 여러 클래스셋에 대한 컨테이너 역할을 한다.

예를 들어, 다음과 같은 장면 게임을 가질 수있다
소개, 메뉴, 레벨 1, Cutscene 1, 레벨 2, 승리 Cutscene, Losing Cutscene, Highscore 화면
[ game follows ]


CCLayer - 코딩을 하면서 대부분의 작업 시간을 할애하게 될 부분이다. 이 CCLayer 객체에 그림도 넣고 각종 메서드도 집어넣으면서 기능을 구현하게 된다. CCLayer는 CCNode 객체를 참조할 수 있다.
Android로 치면  Layout 같은 거. Activity가 Layout을 불러서 화면을 보여주고
Layout을 교체해서 다른 화면을 보여주기도 하고 그런거!!
기본적으로 CCScene와 비슷하게 컨테이너 역할을 수행하지만, 가장 다른 점은 사용자의 입력을 처리할 수 있는 인터페이스를 제공한다. 터치나 센서 반응 등에 대한 처리를 할 수 있으며, 하나의 Scene에는 하나 이상의 CCLayer로 구성됨.
[ CCLayer 예 ]



CCNode - 일반적으로 화면에 보이는 그림과 같은 객체들을 대부분 CCNode하고 한다.  통상적으로 Node라고 칭한다. CCScene, CCLayer, CCSprite등은 모두 CCNode를 상속받고 있으므로 이들을 Node라고 할 수 있다. 위에서 '참조한다' 라는 표현을 사용했지만 '붙는다' 라고 이해하시는게 빠르겠다. CCLayer에 계속해서 Node를 붙여나감으로서 Layer를 완성해 나가는 것.

CCSprite - CCNode를 상속하는 대표적인 객체. '그림'이라고 생각하시면 될거 같다.(화면 구성요소) Cocos2D에서 사용하는 모든 그림들은 CCSprite의 객체를 통해서 화면에 출력할 수 있다.(Image의 표현, Animation이나 Action등을 처리)
Android로 치자면 Button 이니 TextView니 하는것들에 해당!! 게임에서 등장하는 이미지들이 대부분 CCSprite 이다.

CCLayer에 CCSprite들을 넣어서 화면을 만들고, 이 CCLayout을 CCScene에 담아서 보여주는거라고 이해하면 대충 OK.




2014년 3월 6일 목요일

Cocos2d-x Eclipse에서 C++ 환경설정


1. Eclipse CDT Plugin 설치
Eclipse CDT(C/C++ Development Tooling)는 이클립스 상에서 C, C++ 빌드 환경을 제공하여, C, C++로 만든 소스를 쉽게 빌드하여 사용할 수 있게 프로젝트를 만들거나 C, C++ 소스를 추가할 수도 있다.

2. Convert to a C/C++ Project
ㄱ. 우클릭 > New > Other 선택
ㄴ. C/C++ > Convert to a C/C++ Project(Adds C/C++ Nature) 선택
ㄷ. 프로젝트 선택하고 Project Type을 Makefile project 로 선택 하고 Finish
우클릭 > New > Other 선택 ]

[ C/C++ > Convert to a C/C++ Project(Adds C/C++ Nature) 선택 ]

프로젝트 선택하고 Project Type을 Makefile project 로 선택 ]


3. Source Location 설정
ㄱ. 프로젝트의 Classes 아래 소스 링크 추가
Project 우클릭 > Properties > C/C++ General > Paths and Symbols > Source Location 탭 선택
> Link Folder... 클릭 > Link to folder in the file system 체크 > Browse... 선택 > 프로젝트 Root경로 밑의 Classes 폴더 선택 
Tip > Folder name이 Classess 가 있다고 나오면 폴더명을 수정해 준다.(아래 그림 Classess_CPP 로 지정)

Source Location 설정 ]

[C++ 소스 확인]
ㄷ. Cocos2d-x 소스 링크 추가
Project 우클릭 > Properties > C/C++ General > Paths and Symbols > Source Location 탭 선택
> Link Folder... 클릭 > Link to folder in the file system 체크 > Browse... 선택 > Cocos2d-x의 Root  폴더 아래 cocos 폴더 선택 



Cocos2d-x 소스 링크 추가 ]

4. C++  환경 설정
ㄱ. Code Analysis 설정
 Project 우클릭 > Properties > C/C++ General > Code Analysis 선택
Syntax and Semantic Errors 선택 되어 잇는 부분을 해지 한다.

Code Analysis 설정 ]

ㄴ. NDK Includes 추가
 Project 우클릭 > Properties > C/C++ General > Paths and Symbols >  Add 선택
${NDK_ROOT}/platforms/android-19/arch-arm/usr/include 추가

[ Android NDK Includes 추가 ]

ㄷ. C++ Builer를 build_native.py로 변경
해 주어야 할거 같은데...
어디서 하는지 못 찾겠다 ㅋㅋㅋ



오늘도 여기까지만... 이제 소스 보는거랑 컴파일이랑 실행이랑 다 된다.
앞으로는 build_native.py,  Android.mk 등을 어떻게 수정 해야 할지 보면 될거 같다.

아 여기까지 하기 위해 프로젝트 생성만 얼마나 했던가...
이제 코딩 공부 Start ^^ 





2014년 3월 5일 수요일

Cocos2d-x 프로젝트 생성부터 Eclipse에서 빌드, 실행까지

1. Cocos2d-x 프로젝트 생성

cocos2d-x-3.0beta2 설치디렉토리\tools\project-creator\create_project.py 실행


- Project Name : 프로젝트 명 입력
- Package Name : 패키지 명
- Project Path : 프로젝트 Workspace 경로
- Language : C++

create_project.py -p PuzzleGame -k kr.co.hanguk.cocos2d.puzzlegame -l cpp

create 버튼을 클릭하면 다음과 같이 프로젝트 경로에 파일이 생성된다.


2. Eclipse 프로젝트 Import
2.0. Eclipse 환경 변수 설정
  ㄱ. Path Variable `COCOS2DX`: 
    * Eclipse->Preferences->General->Workspace->**Linked Resources**
Name : COCOS2DX
        Location : cocos2d-x의 Root directory.



  ㄴ. C/C++ Environment Variable `NDK_ROOT`: 
     * Eclipse->Preferences->C/C++->Build->**Environment**.
       Name : NDK_ROOT
       Value : Android NDK Root directory 경로



2.1. libcocos2dx 프로젝트 Import
Cocos2d-x는 libcocos2dx 라는 라이브러리를 사용해야만 한다.
그러기 위해 라이브러리 프로젝트를 Import 시켜두어야 한다.
- File > import 선택
[ Exisition Android Code Info Workspace 선택 ]


%cocos2d-x-3.0beta2 설치경로%\cocos\2d\platform\android

새로 생성된 프로젝트에서 Project > Properties > Android 를 열어 보면 Library 부분이 링크가 깨져 있는것을 볼수 있다. 이것을 해결 하기 위해 미리 libcocos2dx Library 프로젝트를 Import 해 둘 필요가 있다.



2.2. 신규 생성한 프로젝트 Import
- File > import 선택
위에서 생성한 프로젝트 안의 폴더 중에 proj.android 를 선택 한면 된다.

[ Exisition Android Code Info Workspace 선택 ]

[ Root Directory : proj.android선택 ]

[ Projects 에 PuzzieGame 확인 하고  Finish 클릭 ]

※참고 : libcocos2dx 프로젝트 Import
새로 생성된 프로젝트에서 Project > Properties > Android 를 열어 보면 Library 부분이 링크가 깨져 있는것을 볼수 있다. 이것을 해결 하기 위해 미리 libcocos2dx Library 프로젝트를 Import 해 둘 필요가 있다.
%cocos2d-x-3.0beta2 설치경로%\cocos\2d\platform\android\java
를 Improt 시키면된다.


3. 프로젝트 NDK Build 하기

모른척 하고 build_native.py 실행(더블클릭)하면 libs\armeabi\libcocos2dcpp.so 파일이 생성된다. 그럼 끝~~!!

(※참고 : build_native.py -n clean)





4. 프로젝트 환경설정 파일 변경
이제 libcocos2dcpp.so를 Java와 연결하고 빌드하여 APK 파일을 생성하면 된다. 
그 전에 설정 좀 바꿔줘야 할 것이 있다.

## AndroidManifest 파일 편집
    <uses-sdk android:minSdkVersion="9"/>
==>
    <uses-sdk 
        android:minSdkVersion="10"
        android:targetSdkVersion="19"
        />
실행 가능한 최소 버전은 10(2.3.3) 컴파일 타겟 버전은 14(4.0)로 설정했다.


        <activity android:name="org.cocos2dx.cpp.Cocos2dxActivity"
                  android:label="@string/app_name"
                  android:screenOrientation="landscape"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                  android:configChanges="orientation">
==>
        <activity android:name="org.cocos2dx.cpp.Cocos2dxActivity"
                  android:label="@string/app_name"
                  android:screenOrientation="landscape"
                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
                  android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize">

안드로이드 폰의 가로세로모드 변경 또는 키보드 창 등과 같은 화면변화가 일어나면 기본적으로 액티비티가 재생성되는데 configChanges에 명시 하면 명시된 변경 사항이 발생하면 Activity에서 직접 처리하겠다는 의미

keyboard|keyboardHidden 키보드 입력에 관련(cocos2d-x는 extension에서 키보드입력 지원)
uiMode|screenSize|smallestScreenSize  전원 버튼이 눌리어서 Lock 되었을때 발생
orientation 화면이 가로 세로로 변경


## project.properties 파일 편집
빌드 타켓이 위에서 설정한 19로 되어 있는지 확인하고 안되어 있으면 19로 변경
target=android-19

※참고
Run As > Android Application 했을때 다음과 같은 에러가 나오는 경우가 있다.
[2014-03-05 16:40:53 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
[2014-03-05 16:40:53 - MyGame] Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.

이 경우 일단 Add SupportLibrary를 해 주고......
ㄱ. Add SupportLibrary
Project 우클릭 -> Android Tools -> Add Support Library
그리고 Accept License 를 클릭해서 인스톨 해 주면된다.
ㄴ. Android Target 버전을 14로 했다면 19로 바꿔 주도록 한다.
ㄷ. 라이브러리 libcocos2dx 의 Android Target 버전도 19로 되어 있는지 확인해서 안되어 있다면 19로 변경해 준다.


5. 실행
Project > Run As > Android Application.

갤럭시S2에서 실행된 모습 ^^v


일단 오늘은 여기 까지... ^^


※ 급 추가
jni > hellocpp > main.cpp 를 열었을때 에러가 표시될때가 있다(에러가 나면 Run을 할 수가 없게 된다. ㅠ,.ㅠ 궁금해서 main.cpp를 열어 봣는데... 괜히 열었어 라는 생각이 든다. 하지만 언제가 열어 봐야 할거 같은 느낌은 뭘까....). 이 경우 C/C++ General 의 Code Analysis 를 열어 Use workspace settings 에 체크됭어 잇으면 Use project settings으로 변경해 주면 에러가 사라진다.(일단 다시 실행 할수 있게는 되었다. 하지만... 이놈은 뭐하는 놈일까.. 싶다.)





Cocos2d-x 디렉토리 구조


1. Cocos2d-x Architecture

2. Cocos2d-x Directory Structure

Directory
Explain
build
This folder includes top level xcode projects, visual studio solutions and makefiles
cocos
This is the major directory for cocos2d-x framework.
docs
You can download doxygen, use it to open doxygen.config file in this this folder, then generate offline API docs by yourself
extensions
This folder is almost deprecated after v3.0. Please use cocos/gui instead of extensions/GUI, use cocos/physics instead of extension/physics-nodes. Assets-manager can work but will be refactor sooner
external
Here are all 3rd libraries which is dependencied by cocos2d-x
licenses
Cocos2d depends on many other open source projects. All of their licenses are here. We've avoid all GPL/LGPL libraires, so cocos2d-x and its dependencies are commercial friendly.
samples
IMPORTANT. This is where you should start from. Cpp/HelloCpp can be your first lesson, and you can find the usages of all classes in TestCpp. Looking for lua and js samples? They’re also here.
template
Here're templates for creating cocos2d-x new project in different IDEs and various platforms.
tools
Lots of different command line tools, such as createing new projects, binding c++ to lua to javasript, compile javascript into bytecode, etc. We're refactoring this into cocos-console.


2014년 3월 4일 화요일

Eclipse + Cocos2d-x 를 이용한 안드로이드 게임 개발 환경

현재 버전 Cocos2d-x 3.0beta를 기준으로 함.

1. Java SE 설치


2. Python 설치
cocos2d 프로젝트 생성 및 빌드시 필요
http://www.python.org/download/

※ Android 빌드 스크립트
이전 버전까지는 윈도우에서 Android용으로 빌드하기 위해서는 cygwin을 설치해야 했었다고 한다. 설치도 번거롭고 사소한 문제들 때문에 빌드가 안되는 경우가 많아 다소 불편했었다고 하는데.....

이번에 build_native.py라는 파이썬 스크립트가 포함되어 이제 윈도우에서도 cygwin 없이 python만 설치되어 있으면 Android용으로 간편하게 빌드할 수 있다.


3. cygwin 설치(옵션)
c++로 코딩한 것을 자바에서 사용 가능한 라이브러리로 컴파일하기 위해 Cygwin을 설치
http://cygwin.com/install.html
(Cocos2d-x 3.0 이하버전에서 컴파일을 위해 사용되어 짐. )

4. Ant 설치
http://ant.apache.org/bindownload.cgi

C:\Program Files\Apache Software Foundation\apache-ant-x.x.x 압축풀기
환경변수
ANT_HOME : C:\Program Files\Apache Software Foundation\apache-ant-1.9.4
path 추가 : ;%ANT_HOME%\bin

명령어(cmd) 창에서 확인
ant -version 실행

5. cocos2d-x-3.0beta2 설치
http://www.cocos2d-x.org/download

6. Android SDK 설치
http://developer.android.com/sdk/index.html

7. Android NDK 설치
안드로이드는 달빅가상머신(dalvik virtual machine, DVM)상에서 JAVA 코드를 돌립니다. NDK는 C/C++같은 네이티브 코드 언어를 이 가상머신에서 사용할 수 있도록 해주는 툴셋입니다. cocos2d-x는 C++로 개발하므로 NDK가 필수로 필요합니다.

다운로드 후 적당한 위치에 압축을 풀어준다.

http://developer.android.com/tools/sdk/ndk/index.html


8. Eclipse 설치

9. Eclipse CDT
Eclipse CDT(C/C++ Development Tooling)는 이클립스 상에서 C, C++ 빌드 환경을 제공하여, C, C++로 만든 소스를 쉽게 빌드하여 사용할 수 있게 프로젝트를 만들거나 C, C++ 소스를 추가할 수도 있다.

10. Eclipse Android PlugIn
https://dl-ssl.google.com/android/eclipse/


※ 시스템 환경 변수 설정
JAVA_HOME : C:\Program Files\Java\jdk1.7.0_51

ANDROID_HOME : D:\Dev\Android\sdk

CLASS_PATH :  ;C:\Python27

NDK_MODULE_PATH : D:\Dev\cocos2d-x\cocos2d-x-3.0beta2;D:\Dev\cocos2d-x\cocos2d-x-3.0beta2\cocos\2d\platform\android

NDK_ROOT : D:\Dev\Android\android-ndk-r9c

Path : 추가 


일단 여기까지.... ^^