Unreal Engine 멤버십

Unreal Engine에서 Hybe Game Platform Service(이하, Platform) 연동을 위한 SDK 사용법에 대해서 설명합니다.

요구사항

Platform SDK를 사용하기 위한 요구 사항은 아래와 같습니다.

  • OS : Windows

  • Enreal Engine : 5.2.1

  • Visual Studio 2022 Version 17.9.6

플랫폼 SDK는 언리얼 플러그인으로 제공되고 있습니다.

연동 준비

SDK 설치

언리얼 엔진에서 Platform SDK를 사용하기 위해서는 배포된 플러그인을 프로젝트의 Plugins 복사합니다.

빌드 설정

ProjectName.Build.cs 파일에 SDK 플러그인 모듈 사용을 추가합니다.

// HybePlatform Plugin 사용설정
PrivateDependencyModuleNames.AddRange(new string[] { "WebBrowser", "HybePlatform" });

플랫폼 SDK는 다음 1개의 외부 라이브러리를 사용합니다.

  • Steamworks SDK

Binaries/Win64 폴더에 steam_api64.dll 이 위치해야 합니다.

스팀 설정

스팀 연동D정보를 DefaultEngine.ini에 SteamAppId를설정한합니.

Config/DefaultEngine.ini
[HybeGamePlatform]
SteamAppId=스팀앱ID

스팀 Overlay 지원

언리얼 에디터 모드에서 게임을 실행하는 경우 스팀 Overlay 가 지원되지 않습니다.

실행모드를 Standalone Game으로 설정 후 실행하세요.

API 연동

API Flow

  1. API 초기화

    1. SDK 설정 및 Steam App 계정 연동

  2. 플랫폼 로그인

    1. Steam

  3. 로그인 결과 이벤트 수신

  4. 게임 서버 접속

    1. 로그인 Verify Token 이용

플러그인 기본 구조

  • HybePlatformAgent

    • 게임 플랫폼 메인 Agent.

    • Platform의 모든 기능을 통합해서 제공합니다.

  • HybePlatformAuthAgent

    • 인증(Auth) 연동 이벤트를 제공하는 클래스.

    • 게임 클라이언트에서 상속한 클래스를 제공해야 합니다.

  • HybePlatformWebviewAgent

    • 인증 과정에서 발생하는 웹뷰 이벤트를 제공하는 클래스

    • 게임 클라이언트에서 상속한 클래스를 제공해야 합니다.

초기화

게임의 초기화 프로세스에서 플러그인 초기화를 수행합니다.

  • 플랫폼 Agent 등록

    • 플랫폼 이벤트 리스너 Agent 구현

      • HybePlatformAuthAgent 클래스를 상속받은 클래스 구현

    • 웹뷰 이벤트 리스너 Agent 구현

      • HybePlatformWebviewAgent 클래스를 상속받은 클래스 구현

  • 설정 정보 구성

  • Mount() 호출

  • 플랫폼 Agent 구현

    • HybePlatformAuthAgent 클래스를 상속 받은 클래스 구현

    • HybePlatformWebviewAgent 클래스를 상속 받은 클래스 구현

  • Webview 구현

    • 언리얼 Webview 플러그인 UWebBrowser 클래스를 상속 받은 클래스 구현

  • 설정 정보 구성

  • Mount() 호출

//1. 게임플랫폼 플러그인에 Agent를 등록한다. 
HybePlatformAgent::Instance().SetPlatformAuthAgent(NewObject<UStarterPlatformAuthAgent>());
HybePlatformAgent::Instance().SetPlatformWebviewAgent(NewObject<UStarterPlatformWebviewAgent>());

//2. 설정 정보와 함께 플랫폼 초기화를 시도한다.
std::string configJson = R"({
    "BuildEnv": "qa",
    "SteamAppID": 2691730,
    "ProjectId": "1006",
    "SteamIdentity": "ds-qa-10060021"
})";

//3. 클라이언트에서 사용하는언어를 설정한다.
HybePlatformAgent::Instance().SetClientLanguage(TEXT("ko"));

//4. 플랫폼 SDK 초기화를 수행한다.
HybePlatformAgent::Instance().Mount(FString(configJson.c_str()));

HybePlatformAuthAgent

게임 클라이언트에서는 HybePlatformAuthAgent 클래스를 상속 받은 이벤트 리스너를 제공해야 합니다.

HybePlatformAuthAgent

HybePlatformAuthAgent 클래스를 상속받은 이벤트 리스너를 제공해야 합니다.

class HYBEPLATFORM_API HybePlatformAuthAgent
{
public:
    virtual void OnLoginSuccess(const FString& resultJson);
    virtual void OnLoginFailure(const FString& resultJson);
    virtual void OnLogoutSuccess();
    virtual void OnLogoutFailure(const FString& resultJson);
    virtual void OnWithDraw();
    virtual void OnMount(bool mounted);
    virtual void OnRefreshVerifyToken(const FString& token);
};

HybePlatformWebviewAgent

웹뷰가 필요할 때 호출되는 이벤트를 처리하는 HybePlatformWebviewAgent 를 상속받은 이벤트 리스너를 제공해야한다.

class HYBEPLATFORM_API HybePlatformWebviewAgent
{
public:
    virtual void OnCloseWebview();
    virtual void OnShowWebview(const FString& url);

    void EvalMethod(const FString& actionJson, std::function<void(const FString&)> callback);
};

실행 환경 정보 구성

플랫폼 초기화 함수(HybePlatformAgent::Mount)에 전달하는 실행 환경 JSON 정보는 다음과 같습니다.

플랫폼 초기화 함수(HybePlatformAgent::Mount)에 전달하는 실행 환경 JSON 정보는 다음과 같습니다.

{
    "BuildEnv": "qa",
    "SteamAppID": 00000000,
    "ProjectId": "0000",
    "SteamIdentity": "sample-qa-00000000"
}
Key
설명
예시

BuildEnv

개발 환경

qa, prod

SteamAppID

기술PM에게 전달 받은 SteamAppID

ProjectId

기술PM에게 전달 받은 ProjectID

SteamIdentity

스팀 ID 토큰 (개발사에서 발급)

HybePlatformAgent

게임 플랫폼의 서비스를 제공하는 메인 클래스로 게임 플랫폼이 제공하는모든 기능은 HybePlatformAgent를 통해서 제공됩니다.

Agent 등록

플랫폼 인증 과정에서 발생하는 이벤트를 수신하기 위해서는 Agent를 제공해야 합니다.

HybePlatformAgent::SetPlatformAuthAgent

HybePlatformAuthAgent을 상속받은 Agent 클래스를 등록합니다.

void SetPlatformAuthAgent(HybePlatformAuthAgent* authAgent)

파라미터

  • authAgent HybePlatformAuthAgent을 상속 받은 클래스 인스턴스

HybePlatformAgent::SetPlatformWebviewAgent

HybePlatformAuthAgent을 상속받은 Agent 클래스를 등록합니다.

void SetPlatformWebviewAgent(HybePlatformWebviewAgent* webviewAgent)

파라미터

  • webviewAgentHybePlatformWebviewAgent을 상속 받은 클래스 인스턴스

Agent 등록 예
HybePlatformAgent::Instance().SetPlatformAuthAgent(new PlatformAuthAgent());
HybePlatformAgent::Instance().SetPlatformWebviewAgent(new UMyGamePlatformWebviewAgent());

등록된 Agent는 플러그인에서 관리되며 클라이언트 종료 시 삭제됩니다.

1. 플러그인 초기화

HybePlatformAgent::Mount

플랫폼 SDK 플러그인 초기화를 수행합니다.

void HybePlatformAgent::Mount(const FString& configJson) const

파라미터

  • configJson 설정 정보를 담고있는 JSON 문자열

초기화 결과는 HybePlatformAuthAgent 를 상속 받은 Agent로 전달됩니다.

초기화 결과는 HybePlatformAuthAgent 상속받은 클래스의 OnMount 이벤트로 전달됩니다.

void UMyGamePlatformAuthAgent::OnMount(bool mounted)
{
    UE_LOG(LogTemp, Warning, TEXT("Platform Mounted : %d"), mounted);
}

2. 로그인

HybePlatformAgent::Login

플랫폼 로그인을 수행합니다.

void HybePlatformAgent::Login(const FString& signinMethod) const

파라미터

  • signinMethod 로그인 종류 (STEAM, GOOGLE, APPLE)

스팀 계정을 이용한 플랫폼 로그인 예

HybePlatformAgent::Instance().Login(TEXT("STEAM"));

플랫폼 로그인(Signin)은 백그라운드에서 수행되고 등록한 HybePlatformAuthAgent로 결과 이벤트가 전달됩니다.

3. 로그인 취소

HybePlatformAgent::CancelLogin

플랫폼 로그인을 프로세스를 중단합니다.

웹뷰를 이용한 서비스 이용 약관 동의 과정 등에서 사용 할 수 있습니다. 웹뷰에서 제공하는 닫기 버튼을 클릭한 경우 로그인 과정을 중단할 수 있습니다.

void CancelLogin()

4. 플랫폼 로그인 이벤트

플랫폼 로그인은 백그라운드에서 수행되며 등록한 HybePlatformAuthAgent로 결과가 전달됩니다.

백그라운드에서 호출되는 이벤트는 메인(게임) 스레드가 아니기 때문에 게임 오브젝트를 직접 호출하지 않도록 주의 해야 합니다.

HybePlatformAuthAgent::OnLoginSuccess

플랫폼 로그인이 정상적으로 완료된 경우에 호출됩니다.

void OnLoginSuccess(const FString& resultJson)

파라미터

  • resultJson 로그인 결과 JSON

{
  "imid": "LUDLJKU29PSYL5PMPJJM",
  "loginVerifyToken": "eyJhbGciOiJIUzI1NiJ9.eyJpbUlkIjoiTFVETEpLVTI5"
}
Key
설명

imid

플랫폼 계정 ID

loginVerifyToken

플랫폼 백엔드 인증에 사용되는 로그인 Token

HybePlatformAuthAgent::OnLoginFailure

플랫폼 로그인이 실패한 경우에 호출됩니다.

void OnLoginFailure(const FString& resultJson)

파라미터

  • resultJson 로그인 실패 결과 JSON

{ 
  "code": 2,
  "message": "Unknown login error"
}

에러 코드는 다음과 같습니다.

enum class Code
{
    UNKNOWN_ERROR       = 0,
    NO_INITIALIZE       = 1,
    SIGNIN_FAIL         = 2,    // Google/Apple Signin Fail
    PLATFORM_LOGIN_FAIL = 3,    // 플랫폼 로그인 실패
    AUTO_LOGIN_FAIL     = 4,    // 자동 로그인 실패
    WITHDRAW_ACCOUNT    = 5,    // 계정 탈퇴 회원
    SIGNUP_FAIL         = 6,    // 회원가입 실패
};

message는 개발 과정에서 참조 목적으로 제공되며 다국어를 지원하지 않기 때문에 유저에게 표시하는 용도로 사용하지 않습니다.

HybePlatformAuthAgent::OnLogoutSuccess

void OnLogoutSuccess()

HybePlatformAuthAgent::OnLogoutFailure

플랫폼 로그아웃이 실패한 경우에 호출됩니다.

void OnLogoutFailure(std::string resultJson)

PlatformAuthAgent::OnWithDraw

계정 탈퇴 시 호출되는 이벤트입니다.

향후 기능 추가 예정입니다.

OnRefreshVerifyToken(const FString& token)

HybePlatformAuthAgent::OnMount

플랫폼 SDK 초기화 완료 시 호출됩니다.

void OnMount(bool mounted)

파라미터

  • mounted 초기화 결과

HybePlatformAuthAgent::OnRefreshVerifyToken

게임서버 로그인에 필요한 인증 토큰 요청 시 호출됩니다 (게임서버인증연동 참고)

게임 클라이언트는 수신한 인증 토큰을 게임 서버에 전달해야 합니다.

void OnMount(bool mounted)

파라미터

  • mounted 초기화 결과

HybePlatformAuthAgent::OnWithDraw

계정 탈퇴 시 호출되는 이벤트입니다.

탈퇴한 유저는 더 이상 플레이되지 않도록 조치해야 합니다.

void OnWithDraw()

5. 게임 서버 인증 연동

클라이언트는 게임 서버에 접속하기 위해서는 플랫폼 로그인 후 수신한 로그인 인증 토큰을 게임 서버에 전달하여야 합니다. 게임 서버는 수신한 인증 토큰을 플랫폼 백엔드를 통해 변조 여부를 검증 합니다.

HybePlatformAgent::RefreshVerifyTokenAsync

게임 서버 로그인에 필요한 인증 토큰을 요청합니다.

백그라운드에서 수행되면 인증 토큰은 HybePlatformAuthAgent::OnRefreshVerifyToken() 이벤트로 전달 됩니다.

void RefreshVerifyToken() 

파라미터

  • 없음

로그인 성공 이벤트(OnLoginSuccess)로 수신한 유저 식별정보(이하IMID)가 전달됩니다. IMID는 개발 목적으로 제공되며, 인증토큰을 게임 서버에 전달 한 후 게임 서버로 부터 IMID를 수신하여 사용해야 합니다.

6. 회원 가입 웹뷰 연동

게임 플랫폼 연동 과정에서 다양한 목적으로 유저에게 웹뷰를 팝업합니다 (다국어 지원)

  • 로그인 프로세스에서 신규 회원인 경우 서비스 이용 동의

  • 회원 탈퇴 요청

  • 구글/애플/이메일 로그인 (지원하는 서비스의 경우)

언리얼에서 제공하는 WebBrowser 플러그인을 활용하여 연동하는 방법 다음과 같습니다.

  1. Webview 플러그인 활성화

    1. Plugins > Webview 체크

  2. ProjectName.Build.cs 에서 WebBrowser 플러그인 모듈을 추가합니다.

    
    PrivateDependencyModuleNames.AddRange(new string[] { "WebBrowser" });
    PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
    
  3. UWebBrower를 상속받을 C++ 클래스를 추가합니다. 아래는 플랫폼 연동에 필요한 기능한 구현된 샘플 Webbrower 소스입니다. 아래 메소드는 반드시 구현 되어야 합니다. - PostMessage : JavaScript → SDK 통신 시 호출되는 이벤트 핸들러 - PrepareJsBridge : 웹뷰의 JavaScript 와 언리얼 통신 설정

    //UMyGameWebview.h
    UCLASS()
    class UMyGameWebview : public UWebBrowser
    {
    	GENERATED_BODY()
    	
    public:
        UFUNCTION(BlueprintCallable)
        void PostMessage(FString jsonResponse);
        void PrepareJsBridge();
        void ShowWebview(const FString& url);
        void CloseWebview();   
    
    protected:
        virtual TSharedRef<SWidget> RebuildWidget() override;
    };
    

    // UMyGameWebview.cpp
    /**
    * @brief JavaScript -> Unreal 함수 호출을 처리하는 이벤트 핸들러
    * @param jsonMethod JSON 형태의 메소드 호출 포맷
    */
    void UMyGameWebview::PostMessage(FString jsonMethod)
    {
        HybePlatformAgent::Instance().GetWebviewAgent()->EvalMethod(jsonMethod, [this](const FString& resultJson) {
            if (resultJson.IsEmpty() == false)
            {
                FString js = FString::Printf(TEXT("window.unityEventHandler(%s);"), *resultJson);
                ExecuteJavascript(js);
            }
        });
    }
    
    /**
    * @brief 웹뷰(JavaScript)에서 언리얼 오브젝트를 호출하도록 설정한다.
    */
    void UMyGameWebview::PrepareJsBridge()
    {
        FString linkName = TEXT("webbridge");
        WebBrowserWidget->BindUObject(linkName, this, true); //true : URL이 변경되어도 계속 바이딩 유지
    }
    
    void UMyGameWebview::ShowWebview(const FString& url)
    {
        WebBrowserWidget->LoadURL(url);
        SetVisibility(ESlateVisibility::Visible);
    }
    
    void UMyGameWebview::CloseWebview()
    {
        SetVisibility(ESlateVisibility::Hidden);
    }
  4. HybePlatformWebviewAgent 상속 클래스에서 OnShowWebview(url) 이벤트 수신 시 웹 브라우저를 화면에 띄웁니다.

7. 계정 탈퇴

HybePlatformAgent::Withdraw

계정 탈퇴를 요청합니다. 계정 탈퇴는 웹뷰를 통해서 진행되며 완료 시 OnWithDraw 이벤트가 전달됩니다.

void Withdraw()

파라미터

  • 없음

8. 로그 연동

게임 클라이언트는 플레이 과정에서 발생하는 유저의 행동 로그를 수집하여 전달해야 합니다. 전달하는 로그의 명세는 별도로 전달되는 로그 명세서를 참고하세요.

로그 전송 과정은 2 단계로 구분할 수 있습니다.

  • 로그 데이터 수집 : 로그 JSON 생성

  • 로그 전송

로그 데이터(JSON) 수집

로그 JSON은 로그 명세서를 참고하여 직접 생성하거나, 플러그인에서 제공하는 기능을 사용할 수 있습니다.

  • LogneticAgent

    • 공통 로그 등록 및 로그 전송

  • LogneticEvent

    • 로그 JSON 생성

LogneticEvent 로그 JSON을 생성하는 편의를 제공하고 있습니다.

각 프로젝트 별로 로그 JSON을 생성하는 별도의 기능이 있는 경우 사용하면 됩니다.

로그 속성 종류

로그 속성
설명

공통 속성

모든 로그에 추가되는 공통 속성

os_type service_id

자동 생성 속성

로그 JSON 생성시 현재 시간(UTC)으로 자동 추가(ISO8601)

cre_time

클라이언트 생성 속성

로그 명세서에 따른 클라이언트 로그

log_type

아래 포맷의 JSON 로그를 생성하는 경우

{
    "log_type": "LOGIN_COMP",
    "os_type" : 1,
    "service_id" : "10060000",
    "external_device_type" : 0,
    "external_device_id" : "b845158f4d599d791ca22790151cd473",
    "cre_time" : "2024-06-13T08:02:27.014000Z"
}

공통 속성 등록

공통 속성은 1회 등록하면 LogneticEvent를 사용하는 경우 자동으로 JSON 생성 시 추가됩니다.

Lognetic().SetCommon(TEXT("os_type"), 1); 
Lognetic().SetCommon(TEXT("service_id"), TEXT("10060000"));
Lognetic().SetCommon(TEXT("external_device_type"), 0); 
Lognetic().SetCommon(TEXT("external_device_id"), FPlatformMisc::GetLoginId());

개별 속성 등록

LogneticEvent()
    .Set(TEXT("log_type"), TEXT("LOGIN_COMP"))

로그 JSON 생성

JSON 생성 시 등록된 공통 속성과 생성 시간(cre_time) 속성이 자동으로 추가 됩니다.

FString logJson = LogneticEvent()
                   .Set(TEXT("log_type"), TEXT("LOGIN_COMP"))
                   .ToJson();

로그 JSON 생성 및 전송

Send() 메소드는 JSON을 생성 한 후 로그 서버로 전송을 수행합니다.

1개의 로그를 전송하는 경우에 사용합니다.

LogneticEvent()
    .Set(TEXT("log_type"), TEXT("LOGIN_COMP"))
    .Send();

중첩 구조 로그를 생성하는 경우

{
  "log_type": "LOGOUT",
  "os_type": 1,
  "service_id": "10060000",
  "external_device_type": 0,
  "external_device_id": "b845158f4d599d791ca22790151cd473",
  "cre_time": "2024-06-13T08:02:27.015000Z",
  "online_play": {
    "play_cnts": 5,
    "play_details": [
      {
        "dungeon_type": "10",
        "dungeon_id": "1",
        "scale": 2
      },
      {
        "dungeon_type": "20",
        "dungeon_id": "2",
        "scale": 5
      }
    ]
  }
}

AddObject() 메소드를 호출하여 하위 속성 이벤트 객체를 추가할 수 있습니다.

AddArray() 메소스를 호출하여 배열 속성을 추가할 수 있습니다.

LogneticEvent logoutLog;
logoutLog.Set(TEXT("log_type"), TEXT("LOGOUT"));

auto& onlinePlay = logoutLog.AddObject(TEXT("online_play"));
onlinePlay.Set(TEXT("play_cnts"), 5);
onlinePlay.AddArray(TEXT("play_details")) // online_play/play_details[0]
    .Set(TEXT("dungeon_type"), TEXT("10"))
    .Set(TEXT("dungeon_id"), TEXT("1"))
    .Set(TEXT("scale"), 2);
onlinePlay.AddArray(TEXT("play_details")) // online_play/play_details[1]
    .Set(TEXT("dungeon_type"), TEXT("20"))
    .Set(TEXT("dungeon_id"), TEXT("2"))
    .Set(TEXT("scale"), 5);
logoutLog.Send();

JSON 로그 전송

1개 이상의 수집한 로그를 전송하는 기능을 제공합니다.

단일 로그를 생성하면서 전송하는 경우

LogneticEvent 사용

LogneticEvent()
    .Set(TEXT("log_type"), TEXT("LOGIN_COMP"))
    .Send();

LogneticAgent 사용

FString logJson = LogneticEvent()
                   .Set(TEXT("log_type"), TEXT("LOGIN_COMP"))
                   .ToJson();
Lognetic().SendEvent(logJson)

1개 이상 로그를 전송하는 경우

FString logJson = LogneticEvent()
                   .Set(TEXT("log_type"), TEXT("LOGIN_COMP"))
                   .ToJson();
FString logJson2 = LogneticEvent()
                   .Set(TEXT("log_type"), TEXT("LOGOUT"))
                   .ToJson();
TArray<FString> logs = {logJson, logJson2};
Lognetic().SendEvent(logs)

LogneticEvent::Set

속성을 추가합니다.

template<typename T>
LogneticEvent& Set(const FString& key, T value)

파라미터

  • key 속성명

  • value 속성 값. int, usingined int, int64_t, uint64_64, float, double, FString 지원

리턴

  • LogneticEvent 객체

LogneticEvent::AddObject

하위 로그 이벤트 객체를 생성합니다. 지정된 키(key)에 하위를 등록합니다.

LogneticEvent& AddObject(const FString& key)

파라미터

  • key 하위 이벤트 키 값

리턴

  • 추가된 하위 이벤트 객체

LogneticEvent().Set(TEXT("log_type"), TEXT("LOGOUT"))
 .AddObject(TEXT("online_play"))
    .Set(TEXT("play_cnts"), 5)
    .ToJson();
JSON 생성 결과
  {
    "log_type": "LOGOUT",
    "cre_time": "2024-06-13T08:02:27.015000Z",
    "online_play": {
      "play_cnts": 5
    }
  }

LogneticEvent::AddArray

배열에 추가되는 로그 이벤트 객체를 생성합니다. 지정된 키(key)의 하위를 등록되며 지정된 키의 배열의 마지막 아이템으로 등록됩니다.

동일한 키(key) 로 호출할 때마다 배열에 새로운 이벤트 객체가 추가 됩니다.

LogneticEvent& LogneticEvent::AddArray(const FString& key)

파라미터

  • key 하위 이벤트 키 값

리턴

  • 추가된 하위 이벤트 객체

배열 1개 이벤트 추가
LogneticEvent log
  log.Set(TEXT("log_type"), TEXT("LOGOUT"))
     .AddArray(TEXT("play_details")) // online_play/play_details[0]
        .Set(TEXT("dungeon_type"), TEXT("10"))
        .Set(TEXT("scale"), 2);
log.ToJson().Send();
JSON 생성 결과
{
  "log_type": "LOGOUT",
  "play_details": [
      {
        "dungeon_type": "10",
        "dungeon_id": "1",
        "scale": 2
      }
    ]
  }
}

동일한 키(key)로 호출할 때마다 배열에 새로운 이벤트 객체가 추가 됩니다.

배열 2개 이벤트 추가
LogneticEvent log
  log.Set(TEXT("log_type"), TEXT("LOGOUT"))
     .AddArray(TEXT("play_details"))  // online_play/play_details[0]
        .Set(TEXT("dungeon_type"), TEXT("10"))
        .Set(TEXT("scale"), 2);
  log.AddArray(TEXT("play_details"))  // online_play/play_details[1]
     .Set(TEXT("dungeon_type"), TEXT("20"))
     .Set(TEXT("scale"), 5);

log.ToJson().Send();
JSON 생성 결과
{
  "log_type": "LOGOUT",
  "play_details": [
      {
        "dungeon_type": "10",
        "scale": 2
      },
      {
        "dungeon_type": "20",
        "scale": 5
      }    
    ]
  }
}

LogneticEvent::Send

로그를 서버에 전송합니다. 아래의 추가 작업을 수행합니다.

  • 공통 속성 추가

  • 로그 생성 시간 추가 (cre_time)

void Send()

등록된 속성을 JSON으로 변환 후에 로그 서버에 전송합니다.

파라미터

  • 없음

LogneticAgent::SendEvent

JSON 로그를 서버에 전송합니다.

void SendEvent(const FString& json)
void SendEvent(TArray<FString> jsons)

파라미터

  • json 전송할 json 로그

  • jsons 전송할 json 로그 배열

FString myLog = BuildCustomLog();
LogneticAgent::Instance().SendEvent(myLog); // 동일 Lognetic().SendEvent(myLog);

1개 이상의 로그 전송이 필요한 경우.

로그 전송은 요청 시 마다 개별로 서버에 전송합니다.

여러 개의 로그를 한꺼번에 요청하는 것이 효과적입니다.

1개 이상 로그 전송하기
FString myLog = BuildCustomLog();
FString myLog2 = BuildCustomLog2();
FArray logs = {myLog, myLog2};
LogneticAgent::Instance().SendEvent(logs); // 동일 Lognetic().SendEvent(logs);

9. 기타

HybePlatformAgent::SetClientLanguage

게임 클라이언트에서 사용하는 언어를 SDK에 전달합니다.

지정된 언어 정보를 이용해서 플랫폼 연동 과정에서 출력되는 웹뷰의 다국어가 적용됩니다.

void SetClientLanguage(const FString& language)

파라미터

  • language ISO 639-1 언어코드( ko, en, ja, zh-tw). 웹뷰에 보여지는 컨텐츠는 지원 국가 외에는 영문(en)으로 출력 됩니다.

HybePlatformAgent::GetLocationCode

현재 사용자의 접속 국가 코드를 반환합니다

FString HybePlatformAgent::GetLocationCode()

리턴

  • ISO 3166-1 alpha-2 국가 코드, ex) KR, US

HybePlatformAgent::GetSteamInfo PC

연동된 스팀 정보를 조회합니다. Mount 호출이 정상적으로 수행된 후에 사용할 수 있습니다.

HybePlatform::SteamInfo HybePlatformAgent::GetSteamInfo()

리턴

  • SteamInfo 객체

class SteamInfo
{
public:
    UINT64 Id;            // User ID
    FString Language;     // (결제)스팀 API 호출시 사용되는 언어코드(ISO 639-1)
    FString Currency;     // (결제)통화코드 ex) KRW, USD
    INT AppBuildId;       // 앱빌드ID
};

Troubleshooting

플러그인 초기화 실패가 발생합니다.

해결 steam_api64.dll 파일이 실행 폴더에 위치하는지 확인합니다. (가이드 참고)

Last updated