cocos2d-x Android GREE SDK 연동 5번째. Leaderboards웹 설정 및 GREE Platform Sample 연동

 cocos2d-x Helloworld에 GREE Platform에 Login/Logout 처리를 했었습니다. 이제는 마지막?으로 GREE의 Casual Game API( Leaderboards, Achievements )에 대한것을 정리를 해봅니다.

 소스 코드 작업 이전에 iOS Game Center가 그랬듯이 GREE 개발자 센터에서 Sendbox에 설정을 해줘야합니다. 먼저 GREE Leaderboard 등록을 해보겠습니다.

 GREE 개발자 센터에 로그인 하신 후 샌드박스 -> 테스트 어플리케이션 리스트를 클릭합니다.

 Leaderboard 작업 할 개발 중인 App의 Detail을 클릭합니다.

 Target Device의 Detail을 클릭합니다.

 Test Application Details 화면에서 맨 밑에보면 Leaderboards/Achievements settings가 있습니다. Leaderboard 옆의 Add를 클릭합니다.

 Leaderboard list에서 Register leaderboard를 클릭합니다.

 Leaderboard의 속성 설정 화면입니다.
  • Format of scores - 숫자값이나 시간으로 설정할 수 있다.
  • Sort order - 오름차순/내림차순 정렬 선택.
  • Method of updating score data - 점수 갱신 방법 설정으로 High Score 또는 Last Score 기준을 선택할 수 있다.
  • Timezone - 타임존 선택.

 Leaderboard Localization 설정을 위해 Add Languages를 클릭합니다. 그러면 위와 같은 팝업창이 뜹니다.
  • Language - 설정할 언어를 선택합니다.
  • Leaderboard Name - App에서 보여줄 Leaderboard의 이름.
  • Score Format - 특수 문자나 이모티콘을 제외한 Score Format. Leaderboard Format of scores에서 숫자로 설정된 경우 사용.

 Save를 클릭해서 나오면 위와 같이 추가되었습니다. 빨간줄로 경고?하는 건 Test App 등록할 때 지원했던 모든 언어에 대한 세팅을 안해서 default 언어로 보인다는 건데 설정안한 언어가 일본어 인데 제가 일본어를 아는 것도 아니고 살짝 무시하고 넘어갑니다.

 Submit을 클릭하면 Leaderboard 추가가 완료됩니다.

 자, 이제 개발쪽 부분을 정리해보겠습니다. 본격적으로 정리에 앞서 한가지 짚고 넘어가야할 것이 있는데요, GREE SDK는 기존에 제가 작업해봤던 ADFresca나 Game Center보다는 LowLevel 스러운 API인 듯하네요. 이 말이 뭔고 하니 ADFresca나 Game Center는 사용하는 개발자가 많이 몰라도 될 만큼 캡슐화를 잘 해놔서 sudo코드긴 하지만 showLeaderboard()나 showAdFresca() 처럼 간단히 초기화해서 한줄코드로 보여줄 수 있게 되어있는 반면, GREE SDK는 그렇지 않습니다.


 위 스샷은 GREE Sample을 빌드해서 제 폰에서 테스트 계정으로 접속해본 것입니다. 보이는 button이나 page같은 layout을 구성하는 xml부터 내부적으로는 GREE Platform에서 날라오는 친구리스트나 점수, 랭킹정보 등등 눈에보이지 않는 Data관리 및 메세지 Send/Recv 처리까지 모든 걸 다 SDK를 사용하는 개발자가 Java환경으로 구현을 해줘야 합니다. 쉽게 말해 Win32환경에서 Win32API나 DirectX API 정도까지 구현이 되어있는거죠.

 GREE 플랫폼 개요에 보면 아래와 같은 말이 있죠...
본 서비스의 모든 UI는 GREE에서 제공되므로, 개발자님이 자체 UI를 개발하실 필요가 없습니다.
 뭐, 틀린말은 아닙니다. Sample에 Layout관련 xml이나 이미지도 있고 소스로도 다 구현은 해놨으니까요. 제가볼때는 커스터마이징해서 쓰라고 다른 SDK처럼 숨기지 않고 많이 오픈시킨거 같은데 글쎄요? 양날의 검 아닐까요? 위에 스샷만 봐도 뭐 이뻐보이는데 저기서 뭘 또 커스텀하게 쓰라는건지? 그래서 전 결정했습니다. 어짜피 Java, Android 개발도 모르고 지금 개발해가는 중인데 내가 일정상 Java로 GREE SDK 써가면서 개발할 수도 없는 노릇이니 GREE Sample을 바로 cocos2d-x에 붙이기로 말이죠(팀장님이 UI 레이아웃 등을 커스터마이징 하자고는 안하시겠지...ㅋ). 잡설이 길었는데 이하 내용들은 그런 내용들입니다.

 먼저 Resource파일 복사가 필요합니다. 스샷에서 왼쪽이 GREE SDK의 GreePlatformSample\res 디렉토리 구조이고 오른쪽은 cocos2d-x의 HelloWorld\res 디렉토리 구조입니다. 아래 나오는 것들을 GreePlatformSample -> HelloWorld로의 복사입니다.
  • anim - 어따써먹는지 모르는 xml파일이 있음
  • drawable - png이미지와 관련 xml
  • layout - Layout 구성에 필요한 xml
  • values - 각종 문자열과 색상, 스타일 관련 xml
    • strings.xml의 app_name 속성 조심
 GREE Platform을 구동하는데 필요한 Resource를 복사했으니 이제 Source를 가져와야합니다.

 File -> Import -> File system에서 위와 같이 GreePlatformSample\src의 com과 net을 체크하고 Into folder는 cocos2d-x HelloWorld의 src로 지정합니다.

그러면 이렇게 에러표시인 빨간 x표가 많이 나오는 멘붕 상태가 올 수 있습니다. 모두 Import한 GREE Sample에서 발생을 했습니다. R cannot be resolved to a variable AboutActivity.java /org.cocos2dx.application.ApplicationDemo/src/net/gree/platformsample line 33 Java Problem

 에러가 발생하시면 링크로 따로 정리했으니 윗 링크를 참고하시기 바랍니다.

 이제 GREE SDK를 위해 가이드를 보면서 작업했던 GreeApplication.java 파일은 필요가 없으니 지웁니다. GREE Sample에 있는 GreePlatformSampleApplication.java를 쓸 것이기 때문이죠. 그리고 AndroidManifest.xml 파일의 application 태그를 수정합니다.

android:name="net.gree.platformsample.GreePlatformSampleApplication"


 다음으로 역시나 기존에 작업했던 Login/Logout 소스 부분을 지워버립니다. GreePlatformSampleActivity.java를 사용할 것이기 때문이죠. GreePlatformSampleActivity에서 Login 처리와 그에따른 메인 화면 처리를 담당합니다. 그리고 마찬가지로 AndroidManifest.xml에 아래 내용을 추가합니다.

          <activity
              android:name="net.gree.platformsample.GreePlatformSampleActivity"
              android:configChanges="orientation" >
         </activity>


 Helloworld의 Close버튼을 누르면 GREE를 활성화 하기위해 소스 부분을 Java JNI 관련 으로 변경하시고 아래 소스를 ApplicationDemo.java에 추가합니다.

public static void JavaJniTestFunc()
{
 Log.d("JNITest", "Success Java Func Call!");
 Intent intent = new Intent(getGameActivity(), GreePlatformSampleActivity.class);
        getGameActivity().startActivity(intent);
}

 이제 빌드 후 실행 로그인 하시면 잘 되는 것을 볼 수 있습니다.

 하지만 여기서 끝이 나면 지금까지의 저를 괴롭혔던 GREE SDK가 아니죠. 각 버튼들을 눌렀을 때 왼쪽과 같이 죽어버립니다. 이는 버튼과 대응되는 net.gree.platformsample에 있는 Activity들을 AndroidManifest.xml에 추가하시면 됩니다.
                                                
 cocos2d-x HelloWorld에 최종 GREE SDK가 적용된 스샷입니다. 이 상태로 Back버튼으로 Helloworld로 컴백도 잘 되네요.

 이번 포스팅은 여기서 마치겠습니다. 어쩌다보니 GREE쪽 UI Layout이나 구현 소스는 샘플것을 가져다 연동하고 게임에서 GREE로의 작업은 안되었네요. Leaderboards에 점수를 보낸다던지 이런 것 말이죠. 남은건 포스팅이 길어지니 따로 정리를 해볼께요.

 지금까지 cocos2d-x에 GREE SDK연동, 아니 GREE Platform Sample 연동을 정리해봤습니다. 마지막까지 GREE는 저를 실망시키지 않더군요. AndroidManifest.xml의 내용이 가이드와 Gree Platform Sample의 AndroidManifest.xml 내용이 달랐습니다. ServiceResultreceiverActivity, ImageViewActivity 등은 아예 빠져있었고 PostingActivity이어야 하는데 PostActivity로 오타로 가이드에는 있더군요. main activity의 intent-filter 내용도 틀렸구요. 아무튼 ADFresca나 Game Center에 비하면 붙이기 뭐같은 SDK가 GREE인 듯 싶네요. 제가 GREE관련 포스팅만 현재 이 포스팅 포함 17개나 되는 것이 그것을 증명하겠죠. 물론 제가 Java, Android개발을 모르고 시작한 것도 한 몫하겠지만요.

 설마 Gree Sample 소스가 Log나 Toast로 출력만 하고 실제 내부 구현은 안된 Sample은 아니겠지?;;;

댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.