おけやの日々

株式会社おけやのブログです。業務、企画、技術の事など様々な事を書きます。

cocos2d-x で ios android 両対応のプラグインを書く最善の方法

プログラマの吉田です。

ちょっと煽ったタイトルを付けましたが CCNativeExtensionTemplate という cocos2d-x で ios android 両対応のプラグインを書くためのテンプレート的なものを作りました。

github.com

前回のブログで CCFirebase という Firebase を cocos2d-x で扱うためのプラグインを作った事を報告しましたが、CCFirebase もこの CCNativeExtensionTemplate を使いました。

cocos2d-x (c++) でネイティブな機能を使う場合 ios の場合は objective-c++、android の場合は JNI を使わないといけません。

cocos2d-x の FileUtils を参考に両対応の API は Classes/CCNativeExtensionTemplate.h に、 ios でのみ使用する関数は Classses/ios 以下のファイルに、 android のみで使用する関数は Classes/android 以下に JNI のブリッジを書いてネイティブの java のコードは proj.android/java/src 以下に書きます。

実際には README.md の記述どおり setup を使用すると CCNativeExtensionTemplate.h は setup の引数で渡した名前にリネームされるのでそちらを使うことになります。

だいぶ状況が改善しているとはいえゲーム開発者はまだまだ協力が足りないです。

みんながみんな Firebase の実装をやってその方法をブログに書く程度では多くの人の工数を多少は減らせても無くす事はできません。

再利用したいコードはこの template を使って構築し github で公開しましょう。バイナリ配布とかケチ臭いことをせず OSS なライセンスにしませんか? pull request を受け付けていれば誰かがバグを直してくれたり最新版に追随してくれるかもしれません。またあなたの次回作に組み込むのも楽になります。

風が吹けば儲かるどころか風が吹けば吹き飛ぶかもしれないような弱小な会社ではありますが、ささやかながら他のゲーム開発者の助けになればと思います。