본문 바로가기

IT 번역/Cocos2d-x 메뉴얼[manual] 번역

주요 컴포넌트 | Main Components

작성일자: 2019-04-28

페이지: https://docs.cocos2d-x.org/cocos2d-x/en/basic_concepts/getting_started.html

 

Main Components · GitBook

It might seem overwhelming at first, but getting started with Cocos2d-x is simple. Before we dive into depth we must understand some of the concepts Cocos2d-x utilizes. At the heart of Cocos2d-x are Scene, Node, Sprite, Menu and Action objects. Look at any

docs.cocos2d-x.org

 

처음부터 좀 오바하는 것인지 모르지만, Cocos2d-x로 시작하는 것은 단순합니다. 좀더 깊이 들어가기 전에, Cocos2d-x에서 사용하는 개념 중 일부분을 훑어보겠습니다. Cocos2d-x의 주요 요소들은 씬(Scene)과 노드(Node), 스프라이트(Sprite), 메뉴(Menu), 액션 객체(Action objects)가 있습니다. 좋아하시는 아무 게임이나 한번 보시면, 방금 말씀드린 모든 요소들이 어떤 식으로든 포함되어 있는 것을 확인하실 수 있을 거에요!

한번 훑어보죠. 아마 일전에 해보신 되게 유명한 게임이랑 좀 비슷해 보일 수도 있어요:

... 되.. 되게 유명한 게임이랑 비슷하다며?

다음 그림을 보시죠, 스크린샷과 들어가 있는 요소들을 구분해서 보여드리겠습니다.

이 화면에서, 메뉴와 스프라이트랑 라벨을 보실 수 있을 겁니다. 이 요소들이 모두 Cocos2d-x에서는 동격으로 취급되지요. 갖고 계신 게임 디자인 문서를 한번 살펴보시고 어떤 요소들을 갖고 있으신지 확인해보세요, 분명 지금 보여드린 요소들 중 맞아들어가는 것이 몇몇개 보이실 겁니다.

 

게임을 만들어보죠 - 2 단계

이전 단계에서, FirstGame이라고 생성된 정상적으로 동작하는 Cocos2d-x 프로젝트를 얻어셨을 거에요. 이건 좋은 현상입니다. 준비해놓으신 개발 환경이 동작한다는 것을 확인시켜드린 것이니까요. 하지만, 그 뜻은 이제 직접 게임을 시작하는 코드를 들여다 봐야 한다는 것이고, 게임을 시작할 때 기본 결정 사항들이 어떻게 이루어지는지를 이해해야 한다는 뜻이기도 합니다. 이 부분을 이해해보기 위해서 몇몇개의 클래스들을 한번 들여다보죠. 크로스-플랫폼 코드들은 Classes/ 디렉토리에 저장되고, 플랫폼에 따른 코드들은 proj.android, proj.ios_mac, proj.linux, proj.win32 와 같은 식의 개별 폴더에 저장됩니다.

 

AppDelegate

AppDelegate 는 매우 중요한 클래스입니다. 이 클래스는 어떤 플랫폼에서 동작하도록 만들던지, 반드시 한번 호출됩니다. 마법이 시작되는 곳이죠! 한번 들여다보고 싶죠? 몇가지 중요한 부분들을 살펴보는게 좋겠네요!

디자인 해상도(Design resolution) - 스프라이트(Sprite) 객체들의, 그리고 그 외에도 많은 것들의, 크기를 결정하도록 도와줍니다. 이 해상도는 게임이 실행되는 기기의 화면 크기에 기반합니다. 이 덕분에, 각기 다른 화면 해상도에 따라 게임이 실행하는 것을 테스트할 때 좋습니다. 다음의 코드는 AppDelegate에서 관련된 부분들 발췌한 것입니다:

static cocos2d::Size designResolutionSize = cocos2d::Size(480, 320);
static cocos2d::Size smallResolutionSize = cocos2d::Size(480, 320);
static cocos2d::Size mediumResolutionSize = cocos2d::Size(1024, 768);
static cocos2d::Size largeResolutionSize = cocos2d::Size(2048, 1536);

AppDelegate::applicationDidFinishLaunching() - 게임 코딩을 시작할 때 가장 중요한 부분입니다. 이 함수는 이미 많은 기능이 구현되어 있습니다만, 필요한 사항에 따라 조정을 보여야 할지도 모릅니다. 아래에 HelloWorld 클래스를 이용하여 첫번째 씬(Scene)을 로드하고 실행하는 코드를 참고하세요:

// create a scene. it's an autorelease object
auto scene = HelloWorld::createScene();

// run
director->runWithScene(scene);

 

코드 일부 부분을 수정하기(Making a few code changes)

자, 이제 이 게임을 좀더 원하는 방식으로 변경할 수 있게 되었으니, glView의 타이틀을 바꿀 수 있습니다. 이 작업은 AppDelegate 클래스에서 추가한 내용을 이용하여 간단히 이룰 수 있습니다. 다음의 코드를 한번 들여다 보시죠. (찾기 힘들면 Find를 사용해서 찾아보셔도 됩니다.):

if(!glview) {
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC) || (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX)
        glview = GLViewImpl::createWithRect("FirstGame", cocos2d::Rect(0, 0, designResolutionSize.width, designResolutionSize.height));
#else
        glview = GLViewImpl::create("FirstGame");
#endif
        director->setOpenGLView(glview);
}


코드에서 "FirstGame"이라고 씌여있는 부분을 찾아보세요. 이 부분을 "Bubble Shooter"라고 변경하실 수 있습니다. 바꾸셔야 하는게 한 부분이 아니라, 두 곳이 있다는 것을 명심하세요! 이 변경사항은 IDE의 프로젝트나 디렉토리 이름을 변경하진 않습니다.

여기까지 하셨다면, 계속 이어가보지요...

디렉터는 누구죠?(Who is the Director?)