'2014/01'에 해당되는 글 185건
- 2014.01.13 CCNode 및 CCArray 의 메모리 관리
- 2014.01.13 [IT 서적]시작하세요 cocos2d 아이폰 게임 프로그래밍! - 초보자를 위한 책
- 2014.01.13 c++에서 bool 형 값 true false 실수할 수 있는 부분
- 2014.01.13 애플리케이션 오류
- 2014.01.13 cocos2d-x multi-resolution
- 2014.01.13 cocos2d-x 스크롤 테이블뷰 예제 소스
- 2014.01.13 cocos2d-x CCString 분리후 CCArray 에 넣기( 문자열 분리하기)
- 2014.01.13 cocos2d-x 의 메모리 관리
- 2014.01.13 구글 인앱 빌링 ver 3 item already owned 오류시 해결방법
- 2014.01.13 cocos2d-x 멀티해상도 지원
'잡다한것들전부 > 팁' 카테고리의 다른 글
| cocos2d-x 멀티 터치 처리하기 (0) | 2014.01.14 |
|---|---|
| autoRelease 및 retain() , release(), retainCount() (0) | 2014.01.13 |
| CCNode 및 CCArray 의 메모리 관리 (0) | 2014.01.13 |
| cocos2d-x multi-resolution (0) | 2014.01.13 |
| cocos2d-x 스크롤 테이블뷰 예제 소스 (0) | 2014.01.13 |
| cocos2d-x CCString 분리후 CCArray 에 넣기( 문자열 분리하기) (0) | 2014.01.13 |
많은 게임 회사들이 Unity-3d나 cocos2d를 이용해서 게임을 개발합니다. 그중에 2d쪽 게임을 개발할때는 좋은 퍼포먼스와 많은 라이브러리를 제공하는 cocos2d를 많이 씁니다. (Unity-3D로도 2d 게임을 개발 할 수 있지만, cocos2d 보다는 퍼포먼스 면에서 떨어진다고 합니다. 물론 3d쪽으로는 좋은 엔진입니다.)
저는 mac 이 없는 관계로 windows 개발 환경에서도 안드로이드 게임을 개발 할 수 있는 좋은 방법이 없을까 고민 하던 중 cocos2d-x를 알아 보게 되었고, windows 환경에서도 cocos2d-x라는 멀티플랫폼을 지원하는 게임엔진에 대해서 알게 되었고, 그 매력에 빠져 들게 되었습니다.
cocos2d-x 는 이름에서 알 수 있듯이 cocos2d를 벤치마킹 해서 만든 엔진이며, cocos2d와는 달리 c++을 사용하며, 멀티플랫폼 게임엔진입니다.
지원하는 운영체제는 ios, android, bada, blackberry qnk , win32, linux , win8 metro, mac os X 등 많은 플랫폼을 지원합니다.
하지만 아직까지는 국내에 나와있는 cocos2d-x 전용 서적은 없으므로 cocos2d 서적을 보면서 공부를 해야되는 상황이었습니다.
가장 먼저 이 책은 책이름에서 알 수 있듯이 초보자를 위한 서적입니다. 가장 기본적인 cocos2d의 기본 구조 및, 스프라이트(이미지)를 그리는 방법, 레이블 다루기, 메뉴 다루기, cocos2d의 강점인 action 사용하기, 타일맵 사용하기 등 cocos2d의 가장 기본적인 기능에 초점을 두고 만든 책 인거 같습니다. 만약 cocos2d에 대해 어느정도 알고 있고, 사용 할 수 있는 프로그래머라면 큰 도움은 되지 않을 것 같지만, 정말 초보자를 위해서 잘 작성된 책인 것 같습니다. 책 뒤에는 기본적인 게임을 만들 수 있는 예제도 수록 되있어, 초보자도 쉽게 익힐 수 있을 겁니다.(cocos2d의 듀토리얼과 거의 같은 수준의 예제 입니다.).
일단 너무 기본적인 내용에 충실하기 때문에, 제가 이책을 보면서 실제로 게임을 개발 하려고 할때 , 파일들을 어떤식으로 관리하며 cocos2d-x의 경우 클래스를 어떤식으로 나누고 그 클래스에 어떤 변수나 함수를 설정해야 되나 막막했던 기억이 있습니다. 확실히 실무에 바로 써먹기에는 어려운 점이 있는 것 같습니다.
하지만 처음으로 공부를 하는 입장에서는 부담없이 보고 따라하면서 배울 수 있는 책인 것 같습니다.
'보고싶은책' 카테고리의 다른 글
| 게임프로그래머를 위한 자료구조와 알고리즘 (0) | 2014.01.13 |
|---|---|
| Introduction to Algorithms (0) | 2014.01.13 |
| [IT 서적]시작하세요 cocos2d 아이폰 게임 프로그래밍! - 초보자를 위한 책 (0) | 2014.01.13 |
| 실전 유니티 3D 입문과 완성UNITY 3D 4.2 이상 (0) | 2014.01.06 |
| 5가지 실전 게임으로 배우는 코코스2d-x (0) | 2014.01.06 |
| c# 책 (0) | 2014.01.06 |
'잡다한것들전부 > C, C++, C#' 카테고리의 다른 글
| [펌]C언어 자료구조 - 연결리스트(Linked List) (0) | 2014.01.13 |
|---|---|
| [펌] 단순연결리스트(Single Linked List) 예제 (0) | 2014.01.13 |
| c++에서 bool 형 값 true false 실수할 수 있는 부분 (0) | 2014.01.13 |
| 동기화 비동기화 동기식 비동기식 이란? (0) | 2014.01.13 |
| 추상 클래스 (C++) (0) | 2014.01.10 |
| Duff's Device (0) | 2014.01.10 |
어플리케이션 오류
이 버전의 애플리케이션에서는 Google Play를 통한 결제를 사용 할 수 없습니다. 자세한 내용을 도움말 센터를 참조하세요
먼저 어플을 등록하고 인앱을 등록합니다.
인앱을 등록한후 인앱은 반드시 활성화 apk로 해야되며,
등록한후 2~3시간 이후에 적용이 됩니다.
그리고 인앱결제 테스트를 하기 위해서는 설정에서
테스트 권환이 있는 Gmail 계정에등록한후(이것도 2~3시간 이후에 확인 가능합니다.)
테스트를 하기 위해서는 반드시!!!
Export로 keystore가 적용된 apk파일을 추출하여 핸드폰에 넣어서 테스트를 해야됩니다.
이렇지 않을 시에는 위와 같은 오류가 발생합니다.
'잡다한것들전부 > 안드로이드' 카테고리의 다른 글
| 안드로이드 gcm 관련 php 통신. (0) | 2014.08.07 |
|---|---|
| 안드로이드 유효성 검사하기 AsyncTask.. (0) | 2014.08.05 |
| 애플리케이션 오류 (0) | 2014.01.13 |
| 구글 인앱 빌링 ver 3 item already owned 오류시 해결방법 (0) | 2014.01.13 |
| 구글 안드로이드 인앱결제 관련 인앱빌링 ver3 적용 (0) | 2014.01.13 |
| adb 패스 설정 (0) | 2014.01.07 |
http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Multi_resolution_support#designResolutionSize Multi-resolution support(since cocos2d-2.0-x-2.0.4)안드로이드 기기에서 다양한 해상도를 적용 하기는 어렵다. Cocos2d-x는 두가지 메서드를 제공한다 The principle
예를들어, 이 메서드를 사용하면 아이폰 4s의 가로모드 사이즈는 '960x640'이다. 레티나 장치에 레티나가 아닌 것을 사용 하는 방법은 무엇일까? 너는 두가지 메서드만 알고 있으면 된다. 하나는 designResolutionSize 이고 다른 하나는 contentScaleFactor 이다. designResolutionSizeAll your game's coordinates rely on design resolution no matter what the size of your device screen. If the UI layout of your game is the same on all resolutions, you just need only a set of coordinates. 디자인 해상도는 설정할수 있다.
첫번째와 두번째 피라미터 값은 디자인 해상도의 높이와 넓이 이고 세번째 값은 디바이스에 뿌려주는 방식 이다.
세번째 값에 대해서는 맨 마지막에 설명하겠다.
You could also use more than one set of resources on different devices to make a better display by Here are some code snippets in HelloCpp project. contentScaleFactorContentScaleFactor는 designResolutionSize에 ResourcesSize에서 비율을 설명합니다 ContentScaleFactor describes the ratio from ResourcesSize to designResolutionSize. 일반적으로 'ResourceBackGround.height/DesignResolution.height' 혹은 'ResourceBackGround.width/DesignResolution.width'. 둘중 하나를 사용하며, 너의 게임에 맞는 방법을 선택하면 된다. When using NoBorder mode, there are some areas of the backgroud out of scope. If you use absolute coordinates based on design resolution size(480x320), You can get the origin point of 'visible rectange' by 'CCDirector::sharedDirector()->getVisibleOrign()'. Together with 'CCDirector::sharedDirector()->getVisibleSize()', 당신은 9개의 점을 화면위에서 확인할수 있다. 'Left','Right', 'Top','Bottom','Center','LeftTop','RightTop','LeftBottom' and 'RightBottom'.
When RH/DH isn't equal to RW/RH, You should decide to select Width or Height ratio of resource to design resolution. Policies지금 cocos2d-x는 세 가지 방식을 지원합니다. Exact fitThe entire application is visible in the specified area without trying to preserve the original aspect ratio. Distortion can occur, and the application may appear stretched or compressed. 전체 응용 프로그램은 원래 가로 세로 비율을 유지하기 위해 노력하지 않고 지정된 지역에서 볼 수 있습니다. 왜곡이 발생할 수 있으며, 응용 프로그램은 늘어나거나 압축 나타날 수 있습니다. No borderThe entire application fills the specified area, without distortion but possibly with some cropping, while maintaining the original aspect ratio of the application. 응용 프로그램의 원래 가로 세로 비율을 유지하면서 전체 응용 프로그램, 왜곡하지 않고 있지만, 아마도 몇 가지 자르기와 함께 지정된 영역을 채 웁니다. Show allThe entire application is visible in the specified area without distortion while maintaining the original aspect ratio of the application. Borders can appear on two sides of the application. 응용 프로그램의 원래 가로 세로 비율을 유지하면서 전체 응용 프로그램은 왜곡없이 지정된 영역에 표시됩니다. 국경은 응용 프로그램의 두면에 게재 될 수 있습니다.
Mark② and Mark③ are both black rectangle areas. But they are different, Mark③ is out of Opengl Viewport, so you can't put any game elements onto it.
|
'잡다한것들전부 > 팁' 카테고리의 다른 글
| autoRelease 및 retain() , release(), retainCount() (0) | 2014.01.13 |
|---|---|
| CCNode 및 CCArray 의 메모리 관리 (0) | 2014.01.13 |
| cocos2d-x multi-resolution (0) | 2014.01.13 |
| cocos2d-x 스크롤 테이블뷰 예제 소스 (0) | 2014.01.13 |
| cocos2d-x CCString 분리후 CCArray 에 넣기( 문자열 분리하기) (0) | 2014.01.13 |
| cocos2d-x 의 메모리 관리 (0) | 2014.01.13 |
cocos2d-x 스크롤 예제 소스
'잡다한것들전부 > 팁' 카테고리의 다른 글
| CCNode 및 CCArray 의 메모리 관리 (0) | 2014.01.13 |
|---|---|
| cocos2d-x multi-resolution (0) | 2014.01.13 |
| cocos2d-x 스크롤 테이블뷰 예제 소스 (0) | 2014.01.13 |
| cocos2d-x CCString 분리후 CCArray 에 넣기( 문자열 분리하기) (0) | 2014.01.13 |
| cocos2d-x 의 메모리 관리 (0) | 2014.01.13 |
| cocos2d-x 멀티해상도 지원 (0) | 2014.01.13 |
'잡다한것들전부 > 팁' 카테고리의 다른 글
| cocos2d-x multi-resolution (0) | 2014.01.13 |
|---|---|
| cocos2d-x 스크롤 테이블뷰 예제 소스 (0) | 2014.01.13 |
| cocos2d-x CCString 분리후 CCArray 에 넣기( 문자열 분리하기) (0) | 2014.01.13 |
| cocos2d-x 의 메모리 관리 (0) | 2014.01.13 |
| cocos2d-x 멀티해상도 지원 (0) | 2014.01.13 |
| 숫자에 세자리마다 콤마를 찍는 알고리즘 (0) | 2014.01.10 |
c++에서는 new를 해주면 delete를 해주듯이.
cocos2d-x는 new로 객체를 생성시 release()를 호출하여 메모리를 해제한다.
cocos2d-x의 모든 클래스는 CCObject클래스를 상속받는데 CCObject클래스는 생성자에서 m_uReference라는 값을 1로 만들어준다.
m_uReference 의 값을 확인하는 함수는 retainCount()이다.
CCNode * node = new CCNode(); //CCNode의 m_uReference = 1 이됨
this->addChild(node); //CCNode의 m_uReference = 2 가됨
this->removeChild(node,true); //CCNode의 m_uReference = 1 가됨
node->release(); //CCNode의 m_uReference = -17891602(쓰레기값) 메모리해제됨 메모리 할당한값 전부 해제
addChilde시 m_uReference가 1 증가하고 , removeChild시 m_uReference가 1 감소한다. this의 m_uReference는 그대로 이다.
(메모리가 초기화 된것은 visual stduio에서 디버그-창-메모리-메모리1을 누르고 디버깅 모드에서 해당 주소값 입력후 초기화 되는지 확인하면 된다. 초기화가 되면 fe ee fe ee 이런식으로 값이 들어간다)
안전한 코드는 release()후 node = NULL을 입력시 안전한 코드가 된다. C++에서 delete후 null을 입력하는것과 마찬가지이다.
#define SAFE_RELEASE(p) if ((p) != NULL) { delete (p); (p) = NULL; }
이런식으로 정의한후
SAFE_RELEASE(node);로 해도 된다
cocos2d-x에서도 자체 매크로를 제공한다
#define CC_SAFE_DELETE(p) do { if(p) { delete (p); (p) = 0; } } while(0)
#define CC_SAFE_DELETE_ARRAY(p) do { if(p) { delete[] (p); (p) = 0; } } while(0)
#define CC_SAFE_FREE(p) do { if(p) { free(p); (p) = 0; } } while(0)
#define CC_SAFE_RELEASE(p) do { if(p) { (p)->release(); } } while(0)
#define CC_SAFE_RELEASE_NULL(p) do { if(p) { (p)->release(); (p) = 0; } } while(0)
#define CC_SAFE_RETAIN(p) do { if(p) { (p)->retain(); } } while(0)
#define CC_BREAK_IF(cond) if(cond) break
알아서 입맛에 맞게 매크로를 사용하면 된다.
void CCObject::retain(void)
{
CCAssert(m_uReference > 0, "reference count should greater than 0");
++m_uReference;
}
void CCObject::release(void)
{
CCAssert(m_uReference > 0, "reference count should greater than 0");
--m_uReference;
if (m_uReference == 0)
{
delete this;
}
}
autoRelease란 사용자가 메모리 관리에 신경을 덜 써도 된다. ( m_uReference 가 1이면 자동으로 메모리에서 해제된다.)
싱글턴으로 선언된 CCPoolManager에서 관리되면 CCPoolManager가 메모리에서 해제될때 CCPoolManager의 객체들을 전부
release()해주므로 CCPoolManager의 객체중 m_uReference가 1인 것들은 0이되고 자동으로 delete가 된다.
autoRelease는 보통 create()메서드 (2.0이상부터는 전부 create로 변경되었다.) 로 호출되는건 전부 라고 생각하면 된다.
CCNode * node = CCNode::create(); 이런식으로 호출하면 된다.
CCNode * CCNode::create(void)
{
CCNode * pRet = new CCNode();
pRet->autorelease();
return pRet;
}
CCObject* CCObject::autorelease(void)
{
CCPoolManager::sharedPoolManager()->addObject(this);
return this;
}
'잡다한것들전부 > 팁' 카테고리의 다른 글
| cocos2d-x 스크롤 테이블뷰 예제 소스 (0) | 2014.01.13 |
|---|---|
| cocos2d-x CCString 분리후 CCArray 에 넣기( 문자열 분리하기) (0) | 2014.01.13 |
| cocos2d-x 의 메모리 관리 (0) | 2014.01.13 |
| cocos2d-x 멀티해상도 지원 (0) | 2014.01.13 |
| 숫자에 세자리마다 콤마를 찍는 알고리즘 (0) | 2014.01.10 |
| [좌표] 좌표에 대해서 알아봅시다(convertToWorldSpace) 절대좌표 (0) | 2014.01.10 |
'잡다한것들전부 > 안드로이드' 카테고리의 다른 글
| 안드로이드 유효성 검사하기 AsyncTask.. (0) | 2014.08.05 |
|---|---|
| 애플리케이션 오류 (0) | 2014.01.13 |
| 구글 인앱 빌링 ver 3 item already owned 오류시 해결방법 (0) | 2014.01.13 |
| 구글 안드로이드 인앱결제 관련 인앱빌링 ver3 적용 (0) | 2014.01.13 |
| adb 패스 설정 (0) | 2014.01.07 |
| 안드로이드 동적 생성 view button progressbar 등 (0) | 2014.01.06 |
그림파일 이미지 해상도 960*640 (그림은 480*320으로 되있지만 960*640 이미지이다.)
디자인 해상도 480*320 (실제 작업 해상도) 터치좌표 반영되는 해상도 이다
디바이스 해상도 800*480 (가장 보편적인 디바이스 해상도 갤s 기준)
kResolutionExactFit.png
kResolutionNoBorder.png
kResolutionShowAll.png
1. noborder - 2번째
화면은 가득차지만 일부영역은 보여주지 못한다. 가로 세로 증가하는(Scale) 비율은 같다.
2. showAll -3 번째
전체 그림을 화면 안에 다 보여준다. 레터박스가 보일수 있으며 , 가로 세로 증가하는 비율은 같다.
3. ExactFit - 1번째
전체 그림을 화면 안에 다 보여준다. 가로 세로 증가하는 비율이 다르다.
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
visibleSize 실제 화면에 보이는 해상도
origin 짤린 해상도 기준으로 시작하는 x,y 좌표
일반적으로 개발자는 noborder(테두리없음) 을 많이사용한다고 한다.
터치좌표 기준
1.noborder은
visibleSize [480, 288]
origin [-0, 16]
짤린하면은 총 32픽셀
480*320 해상도 기준(DESIGN_RESOLUTION) 으로 17~304까지 터치가 먹히고
위아래 16포인트는 터치가 안먹힌다. (짤린화면은 총 32픽셀)
origin 시작지점 16부터
2.showAll은
visibleSize [480, 320]
origin [0, 0]
검은색 짤린 화면은 터치가 안먹히고 보여지는 해상도내에서 480*320내에는 다 터치가 먹힌다.
3.ExactFit은
visibleSize [480, 320]
origin [0, 0]
전부 터치가 먹힘
'잡다한것들전부 > 팁' 카테고리의 다른 글
| cocos2d-x CCString 분리후 CCArray 에 넣기( 문자열 분리하기) (0) | 2014.01.13 |
|---|---|
| cocos2d-x 의 메모리 관리 (0) | 2014.01.13 |
| cocos2d-x 멀티해상도 지원 (0) | 2014.01.13 |
| 숫자에 세자리마다 콤마를 찍는 알고리즘 (0) | 2014.01.10 |
| [좌표] 좌표에 대해서 알아봅시다(convertToWorldSpace) 절대좌표 (0) | 2014.01.10 |
| [디자인패턴] cocos2d-x 싱글톤 싱글턴 패턴 구현 (0) | 2014.01.08 |
TableViewTest.zip

