본문 바로가기

Study/Engine

Android에서 Cocos2d-x로 제작할 때 해상도 이슈

Android용 게임을 제작할 때 자주 등장하는 이슈가 바로 Multi-resolution이 아닐까 싶은데요, Cocos2d-x에서는 어떻게 대처하는지에 대해서 포스팅 해보겠습니다. 제 자신이 정리도 해볼 겸 쓰는 포스팅이기도 합니다.



***** 게임의 기본 해상도를 480*320이라고 가정합니다.


Android 기기에 게임을 올려보면 아래와 같이 나올 것입니다.





하지만 우리가 원하는 것은 저 화면 전체가 의도했던 480*320으로 나오는 것이죠. 일단 비율은 무시한다고 치고 말이죠... 그렇게 하기위해서는 해당 프로젝트의 AppDelegate.cpp 로 가셔서, applicationDidFinishLaunching() 이라는 메소드에서 코드 한줄을 추가해주시면 됩니다.


bool AppDelegate::applicationDidFinishLaunching()
{
    // initialize director
    CCDirector *pDirector = CCDirector::sharedDirector();
    pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
    CCEGLView::sharedOpenGLView()->setDesignResolutionSize(1280, 720, kResolutionExactFit); 


이렇게 하고 실행하게 되면~!





짜잔~! 일단 원하는대로(?) 화면에 꽉 차게 나왔습니다.


=====추가 (13.01.15)

참고로 setDesignResolutionSize의 세 번째 인자값을 적절히 바꿔주면 비율에 맞춰서 꽉 채우느냐 적당히 늘리느냐를 선택할 수 있습니다. 종류는 3~4개 정도 되는 것 같은데, 보통 kResolutionNoBorder를 많이 쓴다고 하더라구요 ^_^ 하지만 kResolutionNoBorder를 쓰게 되면 화면 비율과 제작했을 때의 비율과 다르면 실제로 보이는 화면의 일부분이 잘려나가게 됩니다. 그러면서 좌표도 조금은 달라지게 되는데요, 이 부분을 감안해서 적절히 제작하시면 될듯 'ㅅ'...



P.S : Windows 개발 환경에서 TTF로 한글을 출력하려니까 저렇게 깨져 나오더군요... Windows에서 실행할 때 한글 출력하게 하는 방법을 써서 Windows에서는 잘 나오는데 안드로이드는 어떻게해야할지 잘 모르겠습니다 ㅠㅠ... 아예 소스코드 인코딩 자체가 UTF8이 아니라서 그런것일까요? ㅇ>-<