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)์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๋‚ด์—์„œ ๊ตญ๊ฐ€๋ณ„ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.์ฃผ์š” ๊ตญ๊ฐ€์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ์ด์™ธ์˜ ๊ตญ๊ฐ€ ์ฝ”๋“œ๋Š” ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.

๊ตญ๊ฐ€์ฝ”๋“œ

๊ตญ๊ฐ€

CN

์ค‘๊ตญ

JP

์ผ๋ณธ

KR

๋Œ€ํ•œ๋ฏผ๊ตญ

TH

ํƒœ๊ตญ

US

๋ฏธ๊ตญ

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

Was this helpful?