UNREAL

Quick Start

최신 버전 다운로드

네이버 게임SDK의 샘플 프로젝트를 Unreal Engine에서 실행하는 방법은 다음과 같습니다.

  1. sample/unreal-sample-4.23.1 폴더 안의 프로젝트를 Unreal Editor 에서 실행한다.

  2. 콘텐트 -> NewMap.umap 파일을 연다.

  3. 월드셋팅 -> 게임모드 에 NNGUnrealSampleGameMode 가 셋팅되어있는것을 확인한다.

  4. 테스트 기기에 실행하여 StartHome 버튼을 클릭하여 SDK가 정상적으로 실행되는 것을 확인한다.

1. 플러그인 설치

본 가이드는 Unreal 4.23.1 버전을 기준으로 작성되었습니다.

  • 프로젝트가 없다면 새 프로젝트를 만듭니다.

  • 프로젝트가 실행되었으면 package 폴더의 NaverGameSdk_xxx.zip 파일을 압축해제하여 PlugIns 폴더에 붙여넣기 합니다. 만약 PlugIns폴더가 없으면 새로 생성합니다. 폴더명은 NaverGameSdk 가 되어야 합니다.

  • 언리얼 엔진을 재실행하고 세팅의 플러그인 을 실행하여 others 섹션에 NaverGameSDK 가 잘 적용되었는지 확인합니다.

2. NaverGameSdk 적용

플러그인이 설정되었으면 블루프린트를 사용하여 언리얼 프로젝트에 NaverGameSdk 를 적용하는 방법을 가이드합니다

  • 현재 레벨의 레벨블루프린트 를 편집합니다.

  • 레벨 블루프린트가 열렸으면 게임 시작시에 미리생성된 메인메뉴를 띄우도록 설정하겠습니다.

  • BeginPlay 이벤트의 화살표를 드래그하여 위젯 생성을 선택합니다.

  • 위젯을 생성하였으면 Class의 드롭박스를 선택하여 mainMenu 블루프린트를 연결합니다.

  • 위젯생성의 다음플로우를 끌어서 Add to Viewport 명령을 실행합니다. 타깃은 Return Value를 연결합니다.

  • 콘텐츠 브라우저의 소스패널을 열고 NaverGameSdk콘텐츠 폴더를 선택하여 mainMenu 블루프린트를 편집합니다.

  • 콜백함수 (Delegate)는 다음과 같은 방법으로 등록이 가능합니다.

void foo() {

    // 네이버 게임 SDK 시작
    FNaverGameSdkModule::OnSdkStarted.AddUObject(this, &YourModule::OnSdkStarted);
        
    // 네이버 게임 SDK 종료
    FNaverGameSdkModule::OnSdkStopped.AddUObject(this, &YourModule::OnSdkStopped);
        
    // 인게임 메뉴 코드 수신
    FNaverGameSdkModule::OnReceiveInGameMenuCode.AddUObject(this, &YourModule::OnReceiveInGameMenuCode);
}

void YourModule::OnSdkStarted()
{
    UE_LOG(LogTemp, Warning, TEXT("OnSdkStarted"));
}

void YourModule::OnSdkStopped()
{
    UE_LOG(LogTemp, Warning, TEXT("OnSdkStopped"));
}

void YourModule::OnReceiveInGameMenuCode(const FString& InGameMenuCode)
{
    UE_LOG(LogTemp, Warning, TEXT("OnReceiveInGameMenuCode, %s"), *InGameMenuCode );
}
  • 플러그엔진 공통 설정이 완료되었습니다.

  • 이어지는 Android, iOS 의 세부 환경설정을 설정하도록 합니다.

3. Android 환경설정

  • 안드로이드버전은 그래들빌드만 지원합니다. Enable Gradle Instead of Ant 를 체크하여 그래들빌드로 전환합니다.

  • ApkPackaging 색션을 열고 application 노드에 엘리먼트를 추가 버튼을 누르고 android.requestLegacyExternalStorage="true" 항목을 추가합니다.

  • (Target SDK Version -> 30 이 상부터는 android.requestLegacyExternalStorage 를 추가하지 않아도 됩니다.)

4. iOS 환경설정

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

  • DefaultEngine.ini 파일에 다음과 같이 프로젝트 설정을 추가합니다.

AdditionalLinkerFlags=-ObjC -lc++
AdditionalShippingLinkerFlags=-ObjC -lc++
AdditionalPlistData=<key>CFBundleURLTypes</key> <array>    <dict>            <key>CFBundleURLSchemes</key>           <array>               <string>gLinkSample</string>        </array>    </dict>   </array><key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict> <key>LSApplicationQueriesSchemes</key><array><string>naversearchapp</string><string>naversearchthirdlogin</string></array>    <key>CFBundleURLTypes</key><array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLSchemes</key><array><string>nngsdksample</string></array></dict></array><key>NSPhotoLibraryUsageDescription</key><string>Access your photos to create a post.</string>

Init() 메서드

Init() 메서드는 NaverGameSDK 을 셋팅하는 메서드 입니다.

void UGLink::Init(FString ClientId, FString ClientSecret, FString LoungeId)

TerminateSdk() 메서드

TerminateSdk() 메서드는 NaverGameSDK 를 종료시키는 메서드입니다. 특정 상황에서 sdk 를 종료시켜야 할때 호출합니다. 예를들어 OnReceiveInGameMenuCode Delegate 콜백을 통해서 전달되는 인게임메뉴코드 를 실행할때에는 반드시 TerminateSdk() 메서드를 호출하여 sdk를 닫아주어야 합니다.

void UGLink::TerminateSdk()

ExecuteHomeBanner() 메서드

등록한 배너창을 띄우는 메서드 입니다.

void UGLink::ExecuteHomeBanner()

ExecuteSorryBanner() 메서드

등록한 점검용 페이지 또는 특정 공지사항 페이지를 띄우는 메서드 입니다.

void UGLink::ExecuteSorryBanner()

ExecuteBoard(int BoardId) 메서드

특정 게시판을 바로 실행하는 메서드 입니다. BoardId 는 웹에서 게시판 접속 시 보이는 https://game.naver.com/lounge/{loungeId}/board/{boardId} 형태의 URL에서 알 수 있습니다.

void UGLink::ExecuteBoard(int BoardId)

ExecuteFeed(int FeedId, bool IsTempFeedId) 메서드

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

예약글이 게시되기 전에는 메서드를 실행하더라도 글이 노출되지 않습니다.

  • FeedId: 게시글 또는 예약게시글의

  • IsTempFeedId: FeedId 가 게시글 인 경우 false, FeedId가 예약게시글 인 경우 true

void UGLink::ExecuteFeed(int FeedId, bool IsTempFeedId)

ExecuteFeedWriting(int BoardId , FString Title, FString content, FString ImageFilePath) 메서드

글쓰기 화면을 실행하는 메서드 입니다. BoardId는 게시판번호, Title은 글의 제목, Text는 글의 내용, ImageFilePath는 첨부 이미지의 경로이며 이미지는 한 개만 첨부가 가능합니다.

모든 파라미터는 필수가 아니며 입력되는 경우 글 쓰기 화면에 미리 세팅됩니다.

  • BoardId: 게시판 번호입니다. 웹에서 게시판 접속 시 보이는 https://game.naver.com/lounge/{loungeId}/board/{boardId} 형태의 URL에서 알 수 있습니다.

  • Title: 글의 제목입니다.

  • Text: 본문에 추가될 문자열 입니다.

  • ImageFilePath: 첨부될 이미지의 LocalPath 입니다. 사진 권환 획득의 절차가 있으므로 해당 값을 직접 입력할 시 각 플랫폼에서 동작여부를 꼼꼼히 확인해야 합니다.

public UGLINK::ExecuteFeedWriting(
int BoardId, FString Title, FString Text, FString ImageFilePath);

SetCanWriteFeedByScreenshot(bool Enabled) 메서드

유저가 스크린샷을 캡쳐했을때 이를 감지하여 글쓰기로 연결하는 버튼을 띄우는 것을 설정하는 메서드 입니다. 미호출시 기본값은 ON(true) 입니다.

  • Enabled: true 이면 스크린샷을 캡쳐했을때 글쓰기 버튼을 띄웁니다.

public UGLINK::SetCanWriteFeedByScreenshot(bool Enabled);

SetGameId(FString GameId) 메서드

네이버로그인과 연동되어 해당유저와 네이버아이디를 매칭시킵니다. 글쓰기와 댓글쓰기등을 통한 이벤트참여시 당첨된 유저의 게임아이디를 확인할 수 있습니다.

Init함수가 호출된 이후에 가능한 시점에 호출해주시면 됩니다.

  • GameId: 식별가능한 게임아이디를 입력합니다. 네이버아이디 당 하나만 저장됩니다.

static void SetGameId(FString GameId);

다음은 SetGameId() 메서드를 구현한 예입니다.

  NNGLink.putGameId("naver_game_id_for_test")

SetAppName(FString AppName) 메서드

앱 이름을 설정하는 메서드로 iOS 환경에서만 유효합니다. 네이버 아이디로 로그인 개발자 센터에 등록한 앱 이름과 동일하게 설정해야 합니다.

init함수가 호출된 이후에 가능한 시점에 호출해주시면 됩니다.

static void SetAppName(FString AppName);

SetAppScheme(FString AppScheme) 메서드

앱 스킴을 설정하는 메서드로 iOS 환경에서만 유효합니다. 네이버 아이디로 로그인 개발자 센터에 등록한 앱 스킴과 동일하게 설정해야 합니다.

init함수가 호출된 이후에 가능한 시점에 호출해주시면 됩니다.

static void SetAppScheme(FString AppScheme);

GetAuthSettingDescription() 메서드

인증 오류 발생 시 살펴봐야 할 디버그 용도의 문자열입니다. Client ID, Client Secret, 앱 이름, 앱 스킴이 포함되어 있습니다. 각 값이 두 번씩 출력되는데, 괄호 없이 출력되는 내용은 실제 인증에 사용된 값이며 괄호로 싸인 내용은 SDK에서 캐시하고 있는 값입니다. 실제 인증에 사용된 값, SDK에 캐시된 값, 그리고 네이버 아이디로 로그인 개발자 센터에 등록된 값이 모두 일치해야 합니다.

static FString GetAuthSettingDescription();

getCountryCode() 메서드

기기의 countryCode를 얻어옵니다.

FString UGLink::GetCountryCode()

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

Sdk 내부에서 특정 이벤트가 발생했을때 delegate 를 통해서 이를 GameEngine 에 알립니다.

OnSdkStarted() 딜리게이트

NaverGameSdk 가 실행되었을때 발생합니다.

DECLARE_MULTICAST_DELEGATE(FOnSdkStarted);

등록방식은 다음과 같습니다.

// 네이버 게임 SDK 시작
FNaverGameSdkModule::OnSdkStarted.AddUObject
    (this, &ANNGUnrealSampleGameMode::OnSdkStarted);

OnSdkStopped() 딜리게이트

NaverGameSdk 가 종료되었을 때 발생합니다.

DECLARE_MULTICAST_DELEGATE(FOnSdkStopped);

등록방식은 다음과 같습니다.

// 네이버 게임 SDK 종료
FNaverGameSdkModule::OnSdkStopped.AddUObject
    (this, &ANNGUnrealSampleGameMode::OnSdkStopped);

OnReceiveInGameMenuCode(const FString&) 딜리게이트

NaverGameSdk 에서 인게임메뉴코드 를 실행해야 할 때 발생합니다. 공식 라운지 관리페이지 > SDK 관리 > 배너관리 페이지에서 배너에 '인게임 메뉴' 를 등록했을때 사용합니다. Android 와 iOS 각각의 플랫폼에 따라 등록한 값이 각자 전달되므로 다른 값을 입력했다면 각차 처리해 주셔야 합니다.

DECLARE_MULTICAST_DELEGATE_OneParam(
    FOnReceiveInGameMenuCode, const FString& /* In-Game Menu Code */);

등록방식은 다음과 같습니다.

// 인게임 메뉴 코드 수신
FNaverGameSdkModule::OnReceiveInGameMenuCode.AddUObject
    (this, &ANNGUnrealSampleGameMode::OnReceiveInGameMenuCode);

Last updated