Cocos2d-x

Quick Start

최신 버전 다운로드

본 가이드는 Cocos2d-x 3.17.2 버전을 기준으로 작성되었습니다.

1. 플러그인 구성

  • 샘플 프로젝트내의 Plugins 폴더에 SDK에 필요한 파일들이 들어있습니다.

  1. ) android : android build에 필요한 파일들이 들어있습니다.

  2. ) ios : ios build에 필요한 파일들이 들어있습니다.

  3. ) navergamesdk : cocos2d-x프로젝트와 android, ios 등 각 플폼에 연결 필요한 파일들이 들어있습니다.

2. 플러그인 설치

  • 귀 사의 Cocos2d-x프로젝트와 SDK 연동을 하기 위해서는 Plugins내의 navergamesdk폴더를 아래와 같이 귀 사의 프로젝트 내의 Classes 폴더내에 복사를 합니다.

  • 만약 귀 사의 프로젝트에서 android 혹은 ios 플래폼 하나만 출시하실 예정이라면 platform 하단의 android 혹 ios 폴더 중에 해당하는 폴더만 남기시고 지우시면 됩니다.

2-1. NaverGameSDK.h

  • 해당 파일 안에는 sdk 연결에 필요한 코드가 작성되어 있습니다.

3. 플러그인 적용

귀 사의 프로젝트내에서 sdk를 사용하려는 곳에 헤더파일을 include시킵니다. (샘플프로젝트에서는 HelloWorldScene.h에 적용하였습니다)

#include "NaverGameSDK.h"
  • NaverGameSDK.h를 찾지못한다고 나온다면 rootProject/CmakeLists.txt에 헤더파일을 하단 이미지와 같이 추가시켜줘야합니다.

3-1. SDK 초기화

SDK를 초기화할 때는 다음과 같은 초기화 옵션을 설정하고 init() 메서드를 호출합니다.

nng::NaverGameSDK::init("UKvNABLDsyEJusJGsXL2", "rK4suc_Qd0", "naver_game_4developer");

3-2. SDK 이벤트 리스너 등록

SDK에서 보내는 각종 이벤트를 받기위해서는 리스너를 등록하여야합니다.

//리스너는 NaverGameSDK.h 에 선언되어있습니다.
nng::NaverGameSDK::setSdkListener(this);

3-3. SDK 지원 Funtion 살펴보기

  1. 홈 배너 불러오기

    nng::NaverGameSDK::startHomeBanner();
  2. 점검 배너 불러오기

    nng::NaverGameSDK::startSorryBanner();
  3. 특정 게시판 불러오기

    nng::NaverGameSDK::startBoard(boardId);
  4. 특정 글 불러오기

    등록된 글의 번호로 바로 실행하는 메서드 입니다. 만약 예약노출을 통해서 등록한 예약 게시글의 경우에는 예약글의 번호를 FeedId 에 입력하고 IsTempFeedId 를 True 로 입력해야 합니다.

    nng::NaverGameSDK::startFeed(feedId, isTempFeedId);
  5. sdk 종료시키기

    nng::NaverGameSDK::stopSdk
  6. 국가코드 불러오기

    모바일 기기의 countryCode를 얻어옵니다. 반드시 init() 메서드가 호출된 이후에 호출해야 정상적인 값을 얻어올 수 있습니다.

    nng::NaverGameSDK::getCountryCode();

    countryCode는 두 개의 알파벳으로 이루어진 국가코드(ISO 3166-1 alpha-2)입니다. 이를 활용하면 코드 내에서 국가별 분기처리가 가능합니다.주요 국가코드는 다음과 같으며 이외의 국가 코드는 링크를 참고하십시오.

    국가코드

    국가

    CN

    중국

    JP

    일본

    KR

    대한민국

    TH

    태국

    US

    미국

아래는 샘플프로젝트의 안드로이드 빌드 환경입니다.참고하여 주시기 바랍니다.

  • Cocos2d-x 3.17.2

  • Android Studio 4.2

  • Gradle 4.9 (proj.android/gradle/wrapper/gradle-wrapper.properties)

  • Ndk 16.1.4479499

  • Cmake 3.10.2.4988404 (with Ninja 1.10.2)

1. Cocos2d-x와 Android를 연결하는 브릿지 파일(코드)을 추가하기

샘플프로젝트내의 Plugins 폴더입니다

Plugins폴더내의 android 폴더 내용입니다.

  1. ) com... 폴더 안 끝에 android에서 cocos프로젝트와 브릿지역할을하는 NNGSdk.java 파일이 들어있습니다.

  2. ) navergame-sdk-gradle-x.x.x.aar 은 Navergame sdk 라이브러리 입니다.

샘플프로젝트 디렉토리 구조입니다.

1-1. navergame-sdk-gradle-x.x.x.aar

Naver Game SDK 라이브러리입니다.

  • rootProject/proj.android/app/libs 폴더에 붙여넣어줍니다. libs폴더가없으면 생성해주세요.

1-2. NNGSdk.java

Android에서 Cocos2d-x프로젝트와 SDK를 연결시켜주는 브릿지코드가 작성된 파일입니다.

  • rootProject/proj.android/app/src 폴더에 붙여넣어줍니다. com..으로시작되는 폴더 전체를 붙여넣어주세요.

1-3. NaverGameSDK.cpp

Cocos2d-x에서 Android프로젝트와 연결시켜주는 브릿지코드가 작성된 파일입니다.

  • rootProject/Classes/navergamesdk/platform/android/NaverGameSDK.cpp 파일이 있나 확인하고 없으면 Plugins폴더에서 찾아 붙여넣어주세요.

  • cocos2d-x 버전에 따라 JniHelper가 다른이름으로 작성되어 있을 수 있으니 버전이 다를경우 확인해보세요

#include "NaverGameSDK.h"
#include "platform/android/jni/JniHelper.h"

using namespace cocos2d;

namespace nng {
    static bool getStaticMethod(JniMethodInfo &methodinfo, const char *methodName, const char *paramCode) {
        static const char* kCafeSdkClass = "com/navercorp/nng/cocos2dx/sample/NNGSdk";
        return JniHelper::getStaticMethodInfo(methodinfo, kCafeSdkClass, methodName, paramCode);
    }

    static NaverGameSDKListener* sdkListener = nullptr;

    void NaverGameSDK::setSdkListener(NaverGameSDKListener* listener) {
        sdkListener = listener;
    }

    void NaverGameSDK::init(std::string clientId, std::string clientSecret, std::string loungeId) {
        JniMethodInfo t;
        if (getStaticMethod(t, "init","(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V")) {
            jstring _clientId = t.env->NewStringUTF(clientId.c_str());
            jstring _clientSecret = t.env->NewStringUTF(clientSecret.c_str());
            jstring _loungeId = t.env->NewStringUTF(loungeId.c_str());

            t.env->CallStaticVoidMethod(t.classID, t.methodID, _clientId, _clientSecret, _loungeId);

            t.env->DeleteLocalRef(_clientId);
            t.env->DeleteLocalRef(_clientSecret);
            t.env->DeleteLocalRef(_loungeId);
            t.env->DeleteLocalRef(t.classID);
        }
    }

    .
    .
    .

    extern "C" {
        JNIEXPORT void JNICALL
        Java_com_navercorp_nng_cocos2dx_sample_NNGSdk_onSdkStarted(JNIEnv* env, jclass thiz) {
            if (sdkListener == nullptr) return;
            sdkListener->onSdkStarted();
        }

        .
        .
        .
    }
}   /* namespace nng */
  • kCafeSdkClass = "com/navercorp/nng/cocos2dx/sample/NNGSdk";

    • NNGSdk.java 파일의 위치경로입니다. 만약 NNGSdk.java의 위치경로를 변경하였다면 해당 위치에 맞게 수정하여주십시오.

  • Java_com_navercorp_nng_cocos2dx_sample_NNGSdk_Funtion네임

    • NNGSDK.java 파일의 위치경로입니다. 만약 NNGSdk.java의 위치경로를 변경하였다면 해당 위치에 맞게 수정하여주십시오.

2. 안드로이드로 빌드하기위한 설정

1-1. AndroidManifest.xml

  • rootProject/proj.android/app/AndroidManifest.xml 파일 안에 SDK에서 필요한 권한 추가하여줍니다.

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

1-2. build.gradle

  • rootProject/proj.android/app/build.gradle 파일 안에 SDK와 SDK에서 필요한 라이브러를 추가하여줍니다

dependencies {
    implementation project(':libcocos2dx')
    /**
     * Navergame sdk와 필요한 libraries
     */
     
    implementation files('libs/navergame-sdk-gradle-x.x.x.aar')
    implementation "com.naver.nid:naveridlogin-android-sdk:4.2.6" // naveridlogin
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.7.20"      // Kotlin
    implementation "androidx.viewpager2:viewpager2:1.0.0"           // Viewpager2
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"   //swiperefreshlayout
    implementation "com.github.bumptech.glide:glide:3.7.0"          // Glide
    implementation "com.squareup.retrofit2:retrofit:2.9.0"          // Retrofit2
    implementation "com.squareup.retrofit2:converter-gson:2.9.0"
}

1-3. ndk 및 cmake 설치

  • Android Studio 이용방법

    • Android Studio -> Preferences -> 검색에 sdk 검색 후 sdk tools 탭에서 ndk와 cmake를 다운받아줍니다. (Show Package Details 체크하세요.)

1-4. ndk, cmake 적용

  • rootProject/proj.android/local.properties파일에 ndk, cmake 설치파일경로를 입력하여 줍니다.

3. 안드로이드로 빌드하기

Cocos2d-x프로젝트 안드로이드 빌드 방법은 2가지 입니다.

  • cmake

  • ndk

정확한 네이밍은 cocos2d-x버전에 따라 다를수 있으니 확인바랍니다. 3.17.2버전 기준으로는 build.gradle 파일안에서 확인 할 수 있습니다.

3-0. 빌드 타입 적용 방법

rootProject/proj.android/gradle.properties 파일 내의 PROP_BUILD_TYPE 프로퍼티에서 정할 수 있습니다.

  • cmake로 빌드하시려면 PROP_BUILD_TYPE=cmake 로 설정하시면 됩니다.

3-1. CMAKE로 빌드하기

3-2. NDK로 빌드하기

  • rootProject/proj.android/gradle.properties 내 PROP_BUILD_TYPE=ndk-build 확인합니다.

  • rootProject/proj.android/app/jni/Android.mk에 SDK에 필요한 파일 및 폴더경로를 추가해줍니다.

  • rootProject/proj.andorid/local.properties에 ndk설치파일패스가 잘 입력되어있는지 확인합니다.

  • 빌드버튼 클릭!

iOS 프로젝트에 Navergame SDK 적용하기

네이버 게임 iOS SDK는 iOS 12.0 버전부터 지원합니다.

네이버 게임 SDK를 사용하려면 XCode에서 다음과 같이 개발 환경을 설정합니다.

  • TARGETS 항목 중 실행될 앱을 선택합니다.

  • Build Setting 탭을 선택하고 Linking 항목에서 Other Linker Flags를 찾습니다.

    • Basic 또는 Customized모드 인 경우 Other Linker Flag가 보이지 않는 경우도 있습니다.이 경우 All 모드를 선택합니다.

    • 우상단에 위치한 검색창에 Other Linker Flag를 입력하면 쉽게 찾을 수 있습니다.

  • Other Linker Flags-ObjC 옵션과 -lc++ 옵션을 추가합니다.

  • Info.plist에 아래의 사용자 권한 획득 옵션을 추가합니다.

    • Privacy - Camera Usage Description

    • Privacy - Photo Library Usage Description

  • TARGETS 항목 중 실행될 앱을 선택하고 Info탭의 URL Types 항목에 Identifier 값과 URL Schemes값을 입력합니다.

  • Identifier 값은 해당 TARGETGeneral 탭에서 확인할 수 있습니다.

  • URL Schemes 값에는 네이버 아이디로 로그인 개발자 센터에 애플리케이션을 등록할 때 입력한 URL Scheme 값을 입력하면 됩니다.

Last updated