# PC SDK Nativeチュートリアル
Windows Native開発環境でC++言語でチュートリアル用のHelloStoveプロジェクトにSTOVE PC SDKを連動する方法について説明します。
このチュートリアルを進む前に、STOVE Launcher (opens new window)をインストールしてSDK開発環境を準備するを参照して、App key、App secret、Game Idを事前に発行する必要があります。 例はVisual Studio 2015 Update 3で書かれており、親バージョンのVisual Studioではプロジェクトのアップグレードが必要です。
# チュートリアル用のHelloStoveプロジェクトをダウンロード
下のリンクからチュートリアル用のHelloStoveプロジェクトをダウンロードします。
このプロジェクトはまだPC SDKと連動されてない状態です。これからPC SDK連動を進めましょう。
# プロジェクトの環境構築
- PC SDKダウンロードページから、最新バージョンの
Native(C/C++)
配布ファイル(以後StovePCSDK
で記載)をダウンロードします。ファイルを解凍した後、コピーしてHelloStove_Native
フォルダーの中に貼り付けます。
StovePCSDKのコピーが完了したら、Visual Studioを実行してHelloStove.slnを選択してプロジェクトをロードします。
# 1) C/C++
: ``追加のインクルード ディレクトリ` 設定
プロジェクトのプロパティページ(Alt + F7)を開き、C / C ++
設定プロパティの追加インクルードディレクトリ
にStovePCSDK_ {バージョン番号} /include
パスを追加します。
$(SolutionDir)StovePCSDK_2.3.1\include
# 2) リンカ
: 追加のライブラリ ディレクトリ
設定
プロジェクトのプロパティ ページにリンカ - 一般
構成プロパティの追加ライブラリディレクトリ
にStovePCSDK_ {バージョン番号} / bin
フォルダパスを追加します。
$(SolutionDir)StovePCSDK_1.\bin\$(Platform)\$(Configuration)
# 3) 追加の依存ファイル
設定
プロジェクトのプロパティーページの追加の依存ファイル
に StovePCSDK.lib
を追加します。DebugとReleaseの構成別に追加する依存ファイル名が違いますのでご注意ください。
Debugでは StovePCSDKd.lib
(後ろにdが付きます)、ReleaseではStovePCSDK.lib
です。
> Debugモード : StovePCSDKd.lib
> Releaseモード : StovePCSDK.lib
2
- ここからはプロジェクトをビルドしてエラーが発生しないかチェックしてみます。 エラーが発生した場合は、上記の手順を順番に確認して問題をご解決ください。
# 4) HelloStoveDlg.h
ヘッダファイルを修正する
HelloStoveプロジェクトの HelloStoveDlg.h
ファイルを開き、次のようにコードを追加します。
#pragma once
#include "afxwin.h"
/*ここに「チュートリアル」コードを追加します。*/
#include "StovePCSDK.h"
2
3
4
5
# 5) ビルドする
ビルド
メニューからソリューションビルド
を実行します。全ての設定に異常がなければコンパイルエラーは発生せず正常にビルドされます。
コンパイルエラーが発生する場合、エラーメッセージを確認し、パスの設定やPC SDKバイナリーのコピーと貼り付けが問題なく行われているか確認します。
# SDK初期化
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);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
"YOUR_APP_KEY"、"YOUR_SECRET_KEY"、"YOUR_GAME_ID"はSTOVE Studio (opens new window)から事前に発行されたデータに変更する必要があります。 STOVE Studioに入店申請した
STOVEアカウント
でSTOVEランチャーにログインせずに「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);
}
2
3
4
5
6
7
8
9
StovePC_Init
関数が正常に完了されると呼び出されるコールバック OnInitComplete
関数の注釈を外して下のようにコードを作成します。
また、StovePC_Init
関数が正常に実行されると、コールバックOnInitComplete
関数が呼び出されます。 つまり、OnInitComplete関数が呼び出されると、StovePC_Init関数が正常に実行されたことを意味し、次のコードのようにStovePCSDK初期化が成功したことをログに残すことができます。
void OnInitComplete()
{
/*ここに「チュートリアル」コードを追加します。*/
OnLog(L"[Success] IninComplte\n");
}
2
3
4
5
6
7
StovePC_Init
関数、または他のStovePCSDKの関数呼び出しが失敗した場合、OnError
関数が呼び出されます。 StovePCSDKの関数エラーを確認するために、以下のコードを書いて確認することができます。
void OnError(const StovePCError error)
{
/*ここに「チュートリアル」コードを追加します。*/
OnLog(L"[Error]\n");
CString log;
log.Format(L"StovePCError occured\n -funcType: %d, result:%d, external error: %d", error.functionType, error.result, error.externalError);
OnLog(log);
}
2
3
4
5
6
7
8
9
10
11
# SDK終了
StovePCSDKのすべての使用が終了したら、リソースをクリーンアップするために StovePC_UnInit
関数呼び出しが必要です。 以下のように CHelloStove::OnBnClickedUnInit
関数に StovePC_UnInit
関数を呼び出すコードを追加します。
void CHelloStoveDlg::OnBnClickedUnInit()
{
/*ここに「チュートリアル」コードを追加します。*/
StovePCResult result = StovePC_UnInit();
if (result != STOVE_PC_NO_ERROR)
{
CString log;
log.Format(L"[Error] StovePC_UnInit, Result %d", result);
OnLog(log);
}
else
{
OnLog(L"[Success] StovePC_UnInit");
}
}
...
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
次のチュートリアル コードは、StovePCSDKの初期化が成功したと仮定します。
# ユーザー情報を取得
STOVEランチャーにログインしたユーザー情報を取得するには、StovePC_GetUser
関数で確認できます。 StovePC_GetUser
関数の動作確認のためにCHelloStoveDlg :: OnBnClickedGetUser
関数に追加します。
void CHelloStoveDlg::OnBnClickedGetUser()
{
/*ここに「チュートリアル」コードを追加します。*/
StovePCResult result = StovePC_GetUser();
if (result != STOVE_PC_NO_ERROR)
{
CString log;
log.Format(L"[Error] StovePC_GetUser, Result %d", result);
OnLog(log);
}
else
{
OnLog(L"[Success] StovePC_GetUser");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
StovePC_GetUser
関数が正常に呼び出された時のコールバック OnUser
関数の注釈を外して下のようにコードを作成します。
StovePC_GetUser
関数が正常に呼び出されると、コールバックOnUser関数が呼び出されます。 コールバック OnUser 関数が呼び出されると、StovePCUser 引数でユーザー情報を抽出できます。
void OnUser(const StovePCUser user)
{
/*ここに「チュートリアル」コードを追加します。*/
OnLog(L"<User>");
CString log;
log.Format(L"memberNo : %I64d", user.memberNo);
OnLog(log);
log.Format(L"nickname : %s", user.nickname);
OnLog(log);
log.Format(L"gameUserId : %s", user.gameUserId);
OnLog(log);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# トークン情報を取得
STOVEランチャーにログインしたユーザーのトークン情報を取得するときは、StovePC_GetToken
関数ご使用ください。 CHelloStoveDlg::OnBnClickedGetToken
関数に StovePC_GetToken
関数を追加してトークン情報を StovePCSDK に要求します。
void CHelloStoveDlg::OnBnClickedGetToken()
{
/*ここに「チュートリアル」コードを追加します。*/
StovePCResult result = StovePC_GetToken();
if (result != STOVE_PC_NO_ERROR)
{
CString log;
log.Format(L"[Error] StovePC_GetToken, Result %d", result);
OnLog(log);
}
else
{
OnLog(L"[Success] StovePC_GetToken");
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
トークンとは? STOVEランチャーにログインしたユーザーのアクセストークン(Access Token)で、ゲームサーバーはこのアクセストークンをSTOVE認証サーバーに渡してログインしたユーザーの検証を行うことができます。 アクセストークンの詳細な説明は、store.support@smilegate.comで技術サポートを受けることができます。
StovePC_GetToken
関数が正常に呼び出されると、コールバック OnToken
関数が呼び出されます。 OnToken
関数の StovePCToken
引数でトークン情報が確認できます。
void OnToken(const StovePCToken token)
{
/*ここに「チュートリアル」コードを追加します。*/
OnLog(L"<Token>");
CString log;
log.Format(L"accessToken : %s", MtoW(token.accessToken));
OnLog(log);
}
2
3
4
5
6
7
8
9
10
# ビルド及び実行
StovePCSDK_{バージョン番号}\bin\{プラットフォーム}\Release
フォルダを HelloStove_Native\bin\{プラットフォーム}\Release
フォルダーに置き換えます。
STOVEランチャーを起動しログインします。
UI画面のボタンを順番に実行しながら、正常に動作することを確認します。
おめでとうございます!
PC SDK Nativeチュートリアルが成功的に終わりました。