PC SDK는 스토브 플랫폼의 게임지원서비스를 게임에 통합할 수 있도록 API를 제공합니다. PC SDK가 지원하는 게임지원서비스로는 스탯, 업적, 리더보드가 있습니다. 각각의 서비스는 아래와 같이 정의합니다.

PC SDK 게임지원서비스 API를 사용하기 위해서는 스튜디오를 통한 게임지원서비스의 메타데이터 등록이 선행되어야 합니다.

메타데이터 관리에 대한 내용은 간단한 콘솔 사용 매뉴얼을 참고하시기 바랍니다.

1. Callback 설정

게임지원서비스 API를 사용하여 PC SDK와 커뮤니케이션 하기 위하여, 게임에서는 아래 StovePCCallbak 구조체의 콜백 포인터에 연결할 콜백함수를 정의해야 합니다.

struct StovePCCallback
{
    void(*OnError)(const StovePCError error);
    void(*OnInitComplete)();
    void(*OnToken)(const StovePCToken token);
    void(*OnUser)(const StovePCUser user);
    void(*OnOwnership)(int size, StovePCOwnership* ownership);

    // GetStat 처리가 완료됐을 때 호출되는 콜백
    void(*OnStat)(const StovePCStat stat);

    // SetStat 처리가 완료됐을 때 호출되는 콜백
    void(*OnSetStat)(const StovePCStatValue statValue);

    // GetAchievement 처리가 완료됐을 때 호출되는 콜백
    void(*OnAchievement)(StovePCAchievement achievement);

    // GetAllAchievement 처리가 완료됐을 때 호출되는 콜백
    void(*OnAllAchievement)(int size, StovePCAchievement* achievement);

    // GetRank API 호출시 응답받는 콜백 함수 포인터
    void(*OnRank)(int size, StovePCRank* rank, unsigned int rankTotalCount);
};

연동하기 1) Config, Callbak 설정에서와 같이 StovePCCallback 구조체의 콜백 포인터에 콜백함수를 연결합니다.

// StovePCCallback 구조체 instance 생성
StovePCCallback callback;

// 모든 함수 포인터를 NULL로 초기화
memset(&callback, 0, sizeof(StovePCCallback));

// 구현한 함수 포인터를 연결
callback.OnError = OnMyErrorCallback; /*전역에서 정의한 콜백함수*/
callback.OnInitComplete = OnMyInitCompleteCallback; /*전역에서 정의한 콜백함수*/
callback.OnToken = OnMyTokenCallback; /*전역에서 정의한 콜백함수*/
callback.OnUser = OnMyUserInfoCallback; /*전역에서 정의한 콜백함수*/
callback.OnOwnership = OnMyOwnershipCallback; /*전역에서 정의한 콜백함수*/

 // 게임지원서비스
callback.OnStat = OnMyStat; /*전역에서 정의한 콜백함수*/
callback.OnSetStat = OnMySetStat; /*전역에서 정의한 콜백함수*/
callback.OnAchievement = OnMyAchievement; /*전역에서 정의한 콜백함수*/
callback.OnAllAchievement = OnMyAllAchievement; /*전역에서 정의한 콜백함수*/
callback.OnRank = OnMyRank; /*전역에서 정의한 콜백함수*/

OnStatOnSetStatOnAchievementOnAllAchievementOnRank 콜백함수를 반드시 구현할 필요는 없습니다.

게임에서 사용하는 게임지원서비스에 맞게 필요한 콜백함수만 구현하여 연결하면 됩니다.

2. 사용자 스탯 업데이트 하기

StovePC_SetStat 함수로 로그인한 사용자의 해당 게임에 대한 특정 스탯을 업데이트 합니다.

// 입력 파라미터
// const char* statId : 스튜디오에서 등록한 스탯 식별자
// const int statValue : 업데이트할 스탯값
StovePCResult result = StovePC_SetStat("STAT_ID", STAT_VALUE);
if(result == StovePCResult::STOVE_PC_NO_ERROR)
{
    /* 성공 처리 */
}

StovePC_SetStat 함수가 정상적으로 처리되면 OnSetStat 콜백이 호출됩니다.

콜백에 전달되는 StovePCStatValue 구조체에는 현재 스탯값과 업데이트 상태를 나타내는 플래그 및 에러메세지가 포함되어 있습니다.

스탯값이 완전하게 반영되어 업데이트 되었다면 Updated 필드는 true, ErrorMessage 필드는 빈문자열이 포함되며, 스탯값이 부분적으로 업데이트 되었다면 Updated 필드는 true, ErrorMessage 필드는 "integer overflow" 와 같은 문자열이 포함됩니다.

예를들어 INCREMENT 유형 스탯의 현재 스탯값이 2,147,483,000 라고 가정하고 StovePC_SetStat API를 통해 1,000을 합산하려 한다면 Int32 타입이 가질 수 있는 값의 범위를 벗어나게 되므로 업데이트를 요청한 값(1,000)의 일부만 반영되어 현재값이 Int32 타입의 최대값인 2,147,483,647로 업데이트 되는 경우 ErrorMessage 필드에 "integer overflow" 와 같은 문자열이 포함됩니다.