728x90

어제 ;; 컴퓨터 포멧..을 했는데 다시 설치해야할 경우 저도 자꾸 햇갈려서 정리를 해야 겠다 싶어서 정리를 하겠습니다.

 

우선 준비물.

Visual Studio 2013 (당연히 설치되어있다는 가정입니다.) 

Cocos2d-x

Python 2.7.8

Ant

NDK

SDK

 

이렇게 준비하시면 되겠습니다

 

Cocos2D-x 3.2 (현재 글쓰는 기준으로 3.2가 제일 최신이네요)

http://www.cocos2d-x.org/filedown/cocos2d-x-3.2.zip

 

Python 2.7.8  (다운받으시고 설치후 환경변수 Path에 파이썬 설치 경로를 추가 해주세요. 2.7.8입니다!!!!

ex). C:\Python27;)

https://www.python.org/ftp/python/2.7.8/python-2.7.8.amd64.msi

 

Ant

http://apache.tt.co.kr//ant/binaries/apache-ant-1.9.4-bin.zip

 

NDK (NDK가 예전에 알기론 r9가 호환이 대는걸로 알앗는데 이제는 10도 호환이 되더군요.)

 

12/31 추가 글

(ndk 10도 가능하긴 한데 아직 3.2 부분에서 많은 문제가 있는거 같습니다. 저는 다시 r9로 바꾸었습니다.)

참고 주소 http://www.cocos2d-x.org/news/307 (3.2와 ndk 10 문제 부분에 관해서 얘기..)

 

http://dl.google.com/android/ndk/android-ndk32-r10-windows-x86_64.zip

 

SDK (SDK가 안드로이드 5.0 롤리팝이 나오면서 예전에 이클립스 ADT 받는것과 먼가 달라진듯 합니다. 영어를보니 뭐 운영 환경을 마이그레이션이니 뭐니.. 되있는데 아직 제가 아는 부분은 아니라서 그전 버전의 ADT 받는 사이트가 있더군요. 여기서 받으시면 압축 파일안에 sdk manager와, sdk 폴더 등등이 있을거에요.)

http://downloads.puresoftware.org/files/android/adt-bundle/

 

다 다운 받으셧으면 저같은 경우 어떻게 세팅 되어 있느냐

 

저는 우선 C드라이브에 cocos라는 폴더를 만들어 그안에 ndk와 ant 를 압축 풀어 두었습니다.

 

또 저는 이클립스 EE 버전에서 안드로이드를 같이 사용하기 위해서 LunaEclipse 안에 sdk와 sdk manager를 넣어 두었습니다 (필요한 파일은 sdk랑 sdk manager만 잇으면 됩니다.)

 

cmd 창에서 cocos2d-x-3.2 폴더 경로로 가신후 그안에 있는 setup.py 를 실행시키면

아래와같이 ndk, sdk, ant의 경로를 잡아줌과 동시에 환경변수를 추가하게 됩니다.

주의 하실건 sdk와 ndk는 해당 폴더가 있는 경로까지 잡아주시면 되는데

ant 같은 경우에는 bin 폴더 까지 경로를 잡아주셔야 합니다.

 

혹여나 잘못 입력 하셧을 경우에는 걱정하지 마시고 아래 사진처럼 환경변수 설정에 가시면 위에서 실행하여 생긴 환경변수가 그대로 보이실겁니다 저기서 그냥 고쳐주시면 됩니다.

 

 

다 재대로 되셨다면 cmd 창을 열어서 cocos 를 한번 쳐보세요 그럼 아래 사진과 같이 수루루룩 뜰껍니다.

 

혹시 재대로 하셨는데 Python 은 일부 뭐 어쩌구 저쩌구 말 나오면 파이썬 경로 재대로 안잡힌겁니다.

제일 위에서 말씀드렷듯이 반드시 Path 경로에 파이썬 경로를 잡아주세요

 

12/31 추가 글

 

추가로 자료를 더 찾아보는 도중 어떤분께서 3.2 부분에서 환경 설정이나, 안드로이드로 빌드, 프로젝트 생성등 저보다 훨씬 자료를 더 잘 정리하신 블로거 분이 계시더라구요 그래서 참고 하시라고 링크 띄워 봅니다.

 

http://makerj.tistory.com/156

 

 

끝!

728x90
Posted by 정망스
,
728x90

 

 

 

우선 현재만든 cocos 프로젝트에 libNetwork를 추가 시켜주어야 합니다.

 

 

경로 : 자기가만든 cocos프로젝트->cocos2d->cocos->network 입니다.

 

 

그리고 프로젝트의 빌드종속성->프로젝트 종속성으로 들어갑니다.

 

 

libNetwork에 체크를 해주고 확인을 합니다.

 

 

프로젝트의 속성으로 들어가서 링커->입력 부분에서

저 3가지 lib를 추가 해준다.

 

 

그리고 C/C++ 부분에서 일반 부분에서

추가 포함 디렉토리에서 경로를 추가 해주어야 한다.

 

..\Classes;

$(EngineRoot);

$(EngineRoot)cocos;

$(EngineRoot)cocos\editor-support;

$(EngineRoot)cocos\audio\include;

$(EngineRoot)cocos\network;

$(EngineRoot)external;

$(EngineRoot)external\chipmunk\include\chipmunk;

$(EngineRoot)external\curl\include\win32;

$(EngineRoot)external\websockets\win32\include;

$(EngineRoot)extensions;

..

 

일단 내 프로젝트 디렉토리에는 이정도로 추가되어있다 아직 나도 정확히 어떤부분을 추가해야되는건지는 잘몰라서일단 다 적어올려놓는다.

 

오른쪽 클릭 복사가 막혀있기 때문에 임의로 메모장에 적어서 파일을 올려 놓을테니 필요하신분들은 거기 있는것들 그냥 복사해서 추가 하면 될듯합니다.

 

lib.txt

 

다하셨으면 확인 하시면 이제 전반적인 설정은 끝

 

<HelloWorldScene.h>

 

간단하게 기본적으로 cocos 프로젝트를 생성하면 생기는 HelloWorldScene 에서 한번 해보는 코드입니다.

 

위에 보이는 3가지 헤더파일 include 하시고

웹 서버로 요청을 한 후 다시 응답을 받아 처리할 함수를 하나 만듭니다.

 

<HelloWorldScene.cpp>

 

HttpRequest의 객체를 만든다음 해당 url로 요청을 보내는 코드 부분입니다.

 

setUrl 안의 주소는 웹서버의 역할을 하고 있는 이름은 main이고 서블릿으로 만든 자바파일입니다.

 

(넘겨온 name의 파라미터 값을 따로 저장해서 json으로 만들어서 뿌려주는 간단한 코드입니다.)

 

 

 

postData 변수를 보면 해당 url에 파라미터로 name을 넘겨주고 있고 그 name 파라미터의 값은 test 입니다.

 

그리고 cocos에서 요청을 보낼때 POST 형식으로 보내고 있기 때문에 서블릿에서도 doPost, doGet 이있는데

doPost 부분에서 처리해야 합니다.

 

 

기본적으로 응답이 재대로 오지않았으면 바로 return을 시키고 있습니다.

 

뭐 그외의 예외상황도 여러가지 처리하고 있구요.. 자세히 코드를 설명하진 않겠습니다..

 

vector를 만들어서 응답으로 받아온 데이터를 넣고 있습니다.

 

그리고 strData에 추가시킨후 cocos 화면 자체에선 확인할수 없고

디버깅 모드로 돌려서 출력창에서 한번 확인해 보면...

 

뭐 출력창엔 재대로 response가 되었으면 complete 라는 문구와 함께

response의 responseCode 번호가 찍히게 되게 되있고

 

제일 중요시 볼건 srtData 변수에 웹서버에서 보내온 데이터가 재대로 받아졌는지 입니다.

JSON으로 만든형식을 웹서버에서 받아오고 있고 디버깅 화면에서 저렇게 잘 받아오는게 보이네요~

 

끝!

 

 

728x90
Posted by 정망스
,
728x90
cocos2d-x 개발 중에, 왼쪽하단에 나오는 숫자가 궁금한 분들이 많은 것 같습니다.
제가 알고 있는 선에서 정리할까 합니다.

=====
100
0.027
31.1
=====
위와 같이 표시된 상태를 예로 하겠습니다.


첫번째 숫자
draw된 개체 수를 말합니다. 
즉, 현재 sprite, layer,  label등의 개체들을 얼마나 addChild했는가 입니다.

물론 빈 레이어를 올려도 숫자가 증가하고, 
addChild한 sprite를 setVisible(false)로 하면 (당연하겠지만) 증가하지 않습니다.
이 숫자는 높을수록, 게임 퍼포먼스가 떨어질 확률이 높겠지요.
많은 개체들을 draw하려고 하니, 프레임은 물론, 발열, 배터리까지 영향이 있게 되겠지요.

줄일 수 있으면, 최대한 줄이는게 좋겠구요,
팁을 드리자면, 10장의 이미지 리소스를 각각 sprite로 addChild하면 10이 증가하는 반면, 
배치노드 1장을 써서 10장의 sprite를 그리면 1증가합니다. (CCSpriteBatchNode)

한가지 더,
10장의 이미지 리소스를 texturepacker등의 툴로 1장의 png와 plist로 뽑아낸 후
CCSprite::createWithSpriteFrame(cache->spriteFrameByName("a.png")) 등의  방법으로 생성한다면
로딩 속도 및 메모리에서 이득을 볼 수 있으나, 역시 10장 모두 addChild됩니다.


두번째 숫자
두번째는 세번째와 의미가 같다고 알고 있는데, 매 프레임을 draw하는 시간입니다. 프레임당 초이죠.
통상 60프레임을 기준으로 개발한다고 했을 때, 초당 60프레임을 호출하므로, 프레임당 약 0.0166초 입니다.
최근 프레임들의 평균값을 표시하는 것 으로 알고 있습니다.


결국 매 프레임을 그리는 시간인건데, 무심코 지나칠 수 없는 부분이 있습니다.

보통 많이들 사용하시는  void update(float dt) 함수를 예로 들면,   

실제 게임을 만들었을 때, 여러가지 단말기에 대한 테스트를 하게 됩니다.
이 때 눈에 띄는 것이 단말기별 fps인데, 이는 단말기 마다 차이가 나기 마련입니다.

update() 함수에서 캐릭터가 60번의 프레임에 한번씩 이동하는 로직이 있다고 했을 때,
프레임을 초당 60으로 설정했으므로 이론상 update함수는 1초에 60번 호출되어야 합니다.

void someLayer::update(float dt)

{

    ++m_nTimes;

    if( m_nTimes == 60 )

        move();

}


예상했던 60 프레임째에 캐릭터는 이동했지만, 
실제 단말기마다 이동하는 시간은 차이가 나게됩니다.
즉, 프레임에 따라 들어오는 시간의 값 dt가 달라지게 되는데, 이 부분은 염두에 두어야 합니다.
프레임이 떨어지면, dt는 증가하고, (30프레임 x 0.033 = 약 1초)
프레임이 올라가면 dt는 감소합니다. (60프레임 x 0.0166 = 약 1초)


세번째 숫자
초당 프레임 수 입니다. 
참고하세요.

 

728x90

'cocos2d-x' 카테고리의 다른 글

스프라이트(Sprite) 액션 일시정지 & 다시시작  (1) 2014.03.30
스케줄(Schedule) 정리 中..  (0) 2014.03.30
Scene 전환 종류 정리中  (0) 2014.03.03
액션 종류들 정리中  (0) 2014.03.03
cocos2d-x  (0) 2014.02.19
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침