StovePCSDK를 사용하기 위해서는 초기화 함수를 먼저 실행해줘야 합니다. 초기화 방법은 StovePCConfig와 StovePCCallback 구조체에 적절한 값을 입력하고 StovePC_Init 함수를 호출합니다. StovePC_Init 함수의 사용방법은 CHelloStoveDlg::OnBnClickedInit 함수에 아래와 같이 입력하여 사용합니다.

void CHelloStoveDlg::OnBnClickedInit()
{
    /*여기에 '따라하기' 코드를 추가합니다.*/

    //config
    StovePCConfig config;
    memset(&config, 0, sizeof(StovePCConfig));

    config.env = "LIVE";
    config.appKey = "YOUR_APP_KEY";
    config.secretKey = "YOUR_SECRET_KEY";
    config.gameId = L"YOUR_GAME_ID";
    config.logLevel = StovePCLogLevel::STOVE_PC_LOG_LEVEL_DEBUG;
    config.logPath = L"";

    //callback
    StovePCCallback callback;
    memset(&callback, 0, sizeof(StovePCCallback));

    callback.OnError = OnError;
    callback.OnInitComplete = OnInitComplete;
    callback.OnToken = OnToken;
    callback.OnUser = OnUser;

    //initialize
    StovePCResult result = StovePC_Init(config, callback);
    if (result != StovePCResult::STOVE_PC_NO_ERROR)
    {
        //StovePCSDK initialize fail
        _displayConfig(config);
        CString log;
        log.Format(L"[Error] StovePC_Init, Result %d", result);
        OnLog(log);
    }
    else
    {
        //StovePCSDK initialize success
        _displayConfig(config);
        OnLog(L"[Success] StovePC_Init");

        //StovePC_Init 함수 호출이 성공했으므로,
        //타이머에서 주기적으로 StovePC_RunCallback 함수를 호출합니다.
        SetTimer(USER_TIMER, 500, NULL);
    }
}

<aside> 💡 주의사항

PCSDK 로그경로는 절대적경로로 설정해야 합니다. ex) C:\\Program Files\\{Your Game Folder}\\Logs 마지막에 "\"는 추가하지 않습니다. PCSDK 에서 "StovePCSDK.log" 파일명을 자동으로 추가합니다.

만약 "" 빈문자열로 경로를 설정하게 되면 PCSDK는 자동적으로 게임실행파일 폴더 또는 PCSDK DLL 이 위치한 폴더의 경로로 로그가 생성됩니다.

</aside>

<aside> 💡 "YOUR_APP_KEY", "YOUR_SECRET_KEY", "YOUR_GAME_ID"는 STOVE Studio (opens new window)로부터 사전에 발급 받은 데이터로 변경해야 됩니다.

</aside>

만약 STOVE Studio에 입점 신청한 스토브 계정으로 스토브 런처에 로그인 하지 않고 StovePC_Init 함수가 호출되면 150 에러코드(sgup 초기화 실패)가 발생합니다.

위의 코드에 포함되어 있듯이 CHelloStoveDlg::OnBnClickedInit 함수에서 호출한 StovePC_Init 함수의 반환 값이 성공이면 (즉, STOVE_PC_NO_ERROR을 리턴 할 시) StovePC_RunCallback 함수를 타이머에 걸어줘야 합니다. 여기 따라하기 예제에서는 MFC의 SetTimer 함수를 통해, 500ms 마다 StovePC_RunCallback 함수를 호출하도록 코딩하였습니다. SetTimer를 통해 콜백 CHelloStoveDlg::OnTimer함수가 주기적으로 실행될 시에 아래 코드와 같이 StovePC_RunCallback함수를 걸어 둡니다.

void CHelloStoveDlg::OnTimer(UINT_PTR nIDEvent)
{
    if (nIDEvent == USER_TIMER)
    {
        /*여기에 '따라하기' 코드를 추가합니다.*/
        StovePC_RunCallback();
    }
    CDialogEx::OnTimer(nIDEvent);
}

StovePC_Init 함수가 정상적으로 완료됐을 때 호출되는 콜백 OnInitComplete 함수의 주석을 풀고 아래 코드를 작성합니다.

또한 StovePC_Init 함수가 정상적으로 실행되면 콜백 OnInitComplete 함수가 호출됩니다. 즉, OnInitComplete 함수가 호출되면 StovePC_Init 함수가 성공적으로 실행되었음을 의미하여 아래 코드와 같이 StovePCSDK초기화가 성공한 것을 로그로 남길 수 있습니다.

void OnInitComplete()
{
    /*여기에 '따라하기' 코드를 추가합니다.*/

    OnLog(L"[Success] InitComplete\\n");
}

StovePC_Init 함수, 또는 기타 다른 StovePCSDK의 함수 호출이 실패하는 경우 OnError 함수가 호출됩니다. StovePCSDK의 함수 에러를 확인하기 위해 아래 코드를 작성하여 확인할 수 있습니다.

void OnError(const StovePCError error)
{
    /*여기에 '따라하기' 코드를 추가합니다.*/

    OnLog(L"[Error]\\n");

    CString log;
    log.Format(L"StovePCError occurred\\n -funcType: %d, result:%d, externalError: %d", error.functionType, error.result, error.externalError);

    OnLog(log);
}