Cocos2d-x は、 iOS と Android のクロスプラットフォーム開発に適したゲームエンジンではありますが、広告や解析などサードパーティ製 SDK ( 3rd SDK ) を導入しようとすると、一筋縄ではいかないことが多々ありました。理由としては、 3rd SDK の多くが iOS 向け・ Android 向けに用意されており、ゲーム開発者が Cocos2d-x との連携を行っていたためです。そのため、 Cocos2d-x のほか、 Objective-C , Java や iOS フレームワーク, Android SDK , Android NDK などに渡って理解が必要になりました。また Cocos2d-x 用 SDK を提供しているサービスもありますが、 Cocos2d-x のマイナーバージョンにより導入手順が異なるなど、 3rd SDK の導入は困難でした。
そこで考案されたのが SDKBOX です。これは Cocos2d-x を利用したゲームへの 3rd SDK 導入を容易にしてくれるツールです。 Cocos2d-x と同じ Chukong により開発が進められているものであり、 SDKBOX も無料で利用することができます。 SDKBOX の初期リリース時はコマンドラインにより処理されるものであり正常に動作しないケースが多々ありましたが、現在では Cocos2d-x のプロジェクト管理ツールである「 Cocos 」上で SDKBOX の適用が可能となり、また SDKBOX によってはフルオートで全ての設定が完了します。
このように非常に便利な SDKBOX について、今回はその利用方法をご紹介します。

1. SDKBOX の紹介

SDKBOX は Cocos2d-x の公式サイトからも利用することができますが、 SDKBOX のホームページが用意されています。
http://www.sdkbox.com/
SDKBOXサイト

また Chukong が開発しているため Cocos2d-x 専用と思われがちですが、実は Unity や UnrealEngine 用も一部のサービスのみ用意されています。

導入が容易になる 3rd SDK は、下記で確認することができます。
http://www.sdkbox.com/integrations
SDKBOXプラグイン

  • アプリ内課金
  • 広告
  • 解析
  • ストア
  • ソーシャル
  • 動画

など幅広くカバーされていることがわかるでしょう。上記は SDKBOX Plugin として用意されており、 SDKBOX が 3rd サーバとの連携を行います。つまり SDKBOX Plugin さえ導入すれば、あとはプロジェクトの好きなタイミングで任意の処理を呼び出すだけです。
SDKBOXシーケンス図

2. SDKBOX が適用されたプロジェクトを用意

最も簡単に SDKBOX が適用されたプロジェクトを作成するには、 Cocos2d-x のプロジェクト管理ツールである「 Cocos 」を用いることです。 Cocos を利用したプロジェクト作成方法は、「Cocos Studio を使った Android APK ファイル生成方法」で紹介しましたが、このとき表示されていた「 SDKs 」の項が正に SDKBOX なのです。その一覧には SDKBOX Plugin が表示されています。導入するプラグインは最新である必要がありますので、必要なプラグインの右にある「 Download 」または「 Update 」をクリックしてチェックボックスを有効にし、チェックを入れてください。そして「 Create 」ボタンを押下します。下記では参考に「 Youtube 」プラグインにチェックを入れています。また言語には「 JavaScript 」を選択しています。
SDKBOXの導入方法

既存プロジェクトに別のプラグインを適用するときは、プロジェクトのコンテキストメニューを開き「 Properties 」を選択します。「 Properties 」ウィンドウで追加するプラグインを選択できます。
SDKBOXプラグインの追加(1)
SDKBOXプラグインの追加(2)

3. プロジェクト編集

「 Youtube 」プラグイン( v.2.1.1 )の場合、 AppDelegate.cpp だけは自動編集されないため、自分で追記が必要になります。
(今後のアップデートで AppDelegate.cpp の編集も不要になると思われます。)

・AppDelegate.cpp 編集
15行目

#ifdef SDKBOX_ENABLED
#include "PluginYoutubeJS.hpp"
#include "PluginYoutubeJSHelper.h"
#endif

77行目

ScriptingCore* sc = ScriptingCore::getInstance();
#ifdef SDKBOX_ENABLED
sc->addRegisterCallback(register_all_PluginYoutubeJS);
sc->addRegisterCallback(register_all_PluginYoutubeJS_helper);
#endif
sc->start();

4. ソースコード編集

それでは実際に Youtube を表示するコードを書いてみます。プラグイン利用時は、 init 関数により必ず初期化が必要になります。 Youtube プラグインの場合は、 Youtube 動画を再生できますので playVideo 関数により実行します。

・app.js 編集
2行目

var HelloWorldLayer = cc.Layer.extend({
    ctor:function () {
        this._super();

        var mainscene = ccs.load(res.MainScene_json);
        this.addChild(mainscene.node);

        sdkbox.PluginYoutube.init();
        sdkbox.PluginYoutube.playVideo("YqyPa0UR-R0", 0, true, true);

        return true;
    }
});

5. アプリ実行

それでは実機を用いでアプリを実行しましょう。 Cocos Studio より「 Run Android 」を選択します。ビルドが始まりますのでしばらく待ちましょう。
アプリの実行アプリのビルド

ビルドが完了すると、アプリが実行されます。その画面には Youtube 動画が再生されているでしょう。
Android端末上での動作確認

6. まとめ

SDKBOX を利用することにより、 Cocos2d-x 以外の知識を使わず 3rd SDK を導入できることができました。しかもたった2ファイル・6行追加するだけの工数です。いかに SDKBOX が開発を容易にしてくれるものかが解って頂けたと思います。
今回は「 Youtube 」プラグインを用いて SDKBOX を紹介しましたが、ほかのプラグインも同様に簡単に 3rd SDK を導入することができます。また SDKBOX バージョンを重ねるごとに設定が簡単になっていますし、プラグインもかなり増えています。ぜひ今後も SDKBOX に注目してみていただければと思います。

One Comment

  1. Cocos Studioを使ったAndroid APKファイル生成方法 | チラ裏開発メモ says:

    […] 3rd SDK導入を容易にするSDKBOXの利用方法 […]