# PC SDK Cocos2d-x チュートリアル
Windows Native開発環境でC++言語でチュートリアル用のHelloStoveプロジェクトにSTOVE PC SDKを連動する方法について説明します。
このチュートリアルを進む前に、STOVE Launcher (opens new window)をインストールしてSDK開発環境を準備するを参照して、App key、App secret、Game Idを事前に発行する必要があります。
# チュートリアル用例題ソースコードダウンロード
下のリンクからチュートリアル用のHelloStoveプロジェクトをダウンロードします。
Hello Stoveプロジェクト
はVisual Studio 2015 Update 3
で作成され、Visual Studio 2019
でも正常動作することがテストされました。
ダウンロードしたHelloStoveプロジェクトはSTOVEPCDKの連動方法を順次説明するためのソースコードなので、SDKとは連動していない状態です。
次の説明からSDKの連動方法を順次説明します。
# プロジェクトの環境構築
- PC SDKダウンロードページから、最新バージョンの
Native(C/C++)
配布ファイル(以後StovePCSDK
で記載)をダウンロードします。ファイルを解凍した後、コピーしてHelloStove_Native
フォルダーの中に貼り付けます。
ビジュアルスタジオを実行して HelloStove_Cocos2dx\proj」win32
経路のHelloStove_Cocos2dx.sln
を開きます。
# 1) ``追加のインクルード ディレクトリ` 設定
プロジェクトのプロパティページ(Alt + F7)を開き、C / C ++
設定プロパティの追加インクルードディレクトリ
にStovePCSDK_ {バージョン番号} /include
パスを追加します。
チュートリアル例題は「win32/Release」環境を基準に説明します。
win32 / Debug
は対応していないため、例題に従った場合、問題が発生することがあります。
プロジェクトプロパティページの「追加付きディレクトリー」に「StovePCSDK_{バージョン番号}/include」パスを追加します。
$(SolutionDir)StovePCSDK_2.3.1\include
# 2) 追加のライブラリ ディレクトリ
設定
プロジェクトプロパティページの追加ライブラリディレクトリ
にStovePCSDK_{バージョン番号}/bin
」フォルダパスを追加します。
$(SolutionDir)..\StovePCSDK_2.1.0\bin\$(Platform)\$(Configuration)
# 3) 追加の依存ファイル
設定
プロジェクトのプロパティーページの追加の依存ファイル
に StovePCSDK.lib
を追加します。
> Releaseモード : StovePCSDK.lib
# 4) ソースファイルにStovePCSDK.h
をincludeする。
Hello Stove.cpp
ファイルを開き、下記の通り#include
とStove PCSDK.h
を追加します。
#include "HelloStove.h"
#include "SimpleAudioEngine.h"
/*ここに「チュートリアル」コードを追加します。*/
#include "StovePCSDK.h"
2
3
4
5
# 5) ビルドする
ビジュアルスタジオのビルド
メニューからRelease
でソリューションビルドを実行します。 すべての設定に異常がなければ、コンパイルエラーなしで正常にビルドが完了します。
コンパイルエラーが発生した場合、エラーメッセージを確認し、パス設定や「プロジェクトの環境構成」をもう一度ご点検ください。
# SDK初期化
StovePCSSDKを初期化するには、StovePCConfig
構造体に設定値を満たし、StovePCCallback
構造体にコールバック関数を連結した後、StovePC_Init
関数を呼び出します。
以下のコードをHelloStove::onClickedInit
関数に作成します。
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;
StovePCResult result = StovePC_Init(config, callback);
if (result != StovePCResult::STOVE_PC_NO_ERROR)
{
std::string error = StringUtils::format("[ERROR] StovePC_Init, Result: %d", result);
logOutput(LogType::LogError, error);
}
else
{
std::string success = "[OK] StovePC_Init";
logOutput(LogType::LogSuccess, success);
//StovePC_Init 関数の呼び出しに成功したため、
//タイマーから定期的にStovePC_RunCallback関数を呼び出します。
schedule(schedule_selector(HelloStove::updateTimer), 1.0f);
}
}
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
"YOUR_APP_KEY"、"YOUR_SECRET_KEY"、"YOUR_GAME_ID"はSTOVE Studio (opens new window)から事前に発行されたデータに変更する必要があります。 STOVE Studioに入店申請した
STOVEアカウント
でSTOVEランチャーにログインせずに「StovePC_Init」関数が呼び出されると、150エラーコード(sgup初期化失敗)が発生します。
StovePC_Init
関数が成功的に呼び出しされれば、STOVE_PC_NO_ERROR
が、リターン・なります。STOVE_PC_NO_ERROR
が成功的にリターンなると、タイマー(Timer)を通じてStovePC_RunCallback
関数が周期的に呼び出しされるようにご処理ください。
これらの処理はCocos2d-xのタイマーであるschedule関数で1秒ごとに実行するコールバックHelloStove::updateTimer
関数を設定してupdateTimer関数の中でStovePC_RunCallback
関数が周期的に実行されるようにします。
void HelloStove::updateTimer(float time)
{
/*ここに「チュートリアル」コードを追加します。*/
StovePC_RunCallback();
}
2
3
4
5
StovePC_Init
関数が正常に実行されればcallback.OnInitComplete=OnInitComplete
にかけておいたコールバックOnInitComplete
関数が実行され、この関数の注釈を外し、以下のコードを入力します。
void OnInitComplete()
{
/*ここに「チュートリアル」コードを追加します。*/
std::stringstream ss;
ss << "<Init Complete>" << std::endl;
// HelloStove例題画面にssテキストを表示する。
GetHelloStove()->logOutput(LogType::LogNormal, ss.str(), 1);
}
2
3
4
5
6
7
8
9
10
StovePC_Init
関数、または他のStovePCSDK関数呼び出しに失敗した時に呼び出されるコールバックOnError
関数の注釈を外し、以下のコードを入力します。
void OnError(const StovePCError error)
{
/*ここに「チュートリアル」コードを追加します。*/
std::stringstream ss;
ss << "<Error>" << std::endl
<< error.functionType << std::endl
<< error.result << std::endl
<< error.message << std::endl
<< error.externalError << std::endl;
GetHelloStove()->logOutput(LogType::LogError, ss.str(), 5);
}
2
3
4
5
6
7
8
9
10
11
12
# SDK終了
StovePCSDK関数のすべての使用が終わった後にStovePCSDKで使用中のリソースを整理してリードして設定したタイマーを停止するために下記コードをHelloStove::onClickedUnInitialize
関数に入力します。
void HelloStove::onClickedUnInitialize(Ref* pSender)
{
/*ここに「チュートリアル」コードを追加します。*/
StovePCResult result = StovePC_UnInit();
if (result != StovePCResult::STOVE_PC_NO_ERROR)
{
std::string error = StringUtils::format("[ERROR] StovePC_UnInit, Result: %d", result);
logOutput(LogType::LogError, error);
}
else
{
unschedule(schedule_selector(HelloStove::updateTimer));
std::string success = "[OK] StovePC_UnInit";
logOutput(LogType::LogSuccess, success);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# ユーザー情報を取得
STOVEランチャーによりゲームを実行したユーザー情報は、StovePCSDKのStovePC_GetUser
関数で入手できます。
以下のコードをHelloStove::onClickedGetUser
関数に入力して、StovePC_GetUser
関数の使い方を確認してください。
void HelloStove::onClickedGetUser(Ref* pSender)
{
/*ここに「チュートリアル」コードを追加します。*/
StovePCResult result = StovePC_GetUser();
if (result != StovePCResult::STOVE_PC_NO_ERROR)
{
std::string error = StringUtils::format("[ERROR] StovePC_GetUser, Result: %d", result);
logOutput(LogType::LogError, error);
}
else
{
std::string success = "[OK] StovePC_GetUser";
logOutput(LogType::LogSuccess, success);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
StovePC_GetUser
関数が正常に実行されると、コールバックOnUser
関数が呼び出しられ、StovePCUser
パラメータでユーザー情報を獲得できます。 以下のコードをご確認ください。
void OnUser(const StovePCUser user)
{
/*ここに「チュートリアル」コードを追加します。*/
std::stringstream ss;
ss << "<UserInfo>" << "\n"
<< " memberNo: " << user.memberNo << "\n"
<< " nickname: " << g_converter.to_bytes(user.nickname) << "\n"
<< " gameUserId: " << user.gameUserId << "\n";
GetHelloStove()->logOutput(LogType::LogNormal, ss.str(), 5);
}
2
3
4
5
6
7
8
9
10
11
12
# トークン情報を取得
StovePC_GetToken
関数はトークン情報を得て来る時に使用します。 下段のコードをHelloStove::onClickedGetToken
関数に入力します。
トークンとは? STOVEランチャーにログインしたユーザーのアクセストークン(Access Token)で、ゲームサーバーはこのアクセストークンをSTOVE認証サーバーに渡してログインしたユーザーの検証を行うことができます。 アクセストークンの詳細な説明は、STOVEインディチームにお問い合わせ (opens new window)で技術サポートを受けることができます。
void HelloStove::onClickedGetToken(Ref* pSender)
{
/*ここに「チュートリアル」コードを追加します。*/
StovePCResult result = StovePC_GetToken();
if (result != StovePCResult::STOVE_PC_NO_ERROR)
{
std::string error = StringUtils::format("[ERROR] StovePC_GetToken, Result: %d", result);
logOutput(LogType::LogError, error);
}
else
{
std::string success = "[OK] StovePC_GetToken";
logOutput(LogType::LogSuccess, success);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Stove PC_Get Token
関数が正常に呼び出されると、コールバックOn Token
関数のトークン値を以下のコードで確認できます。
void OnToken(const StovePCToken token)
{
/*ここに「チュートリアル」コードを追加します。*/
std::stringstream ss;
ss << "<Token>" << "\n"
<< token.accessToken;
GetHelloStove()->logOutput(LogType::LogNormal, ss.str(), 2);
}
2
3
4
5
6
7
8
9
# ビルド及び実行
ビルドが完了したHelloStove_Cocos2dx.exe
実行のためにはStovePCSDK_{バージョン番号}\bin\Win32\Release
フォルダの動的ライブラリ(DLL)ファイルをHelloStove_Cocos2dx\proj.win32\Release.win32
フォルダにコピーしてください。
ファイルのコピーが完了したら、STOVEランチャーを実行して、STOVE Studioに登録したIDでログインします。
さて、ビジュアルスタジオでF5
を押してHelloStoveプロジェクト
をビルドして実行します。
HelloStove画面のボタンを順番に押して見ながら、正常に動作するかを確認します。
おめでとうございます!
StovePCSDKをCocos2d-xへの連動に成功しました。