$a(){ a|a& };a

きょうと…のだいがく?にかよってるんですけど!

Cocos2dxでにゃんにゃんする

初めに

DxLib http://homepage2.nifty.com/natupaji/DxLib/ の関数をcocosでエミュレートできるようにラッパー関数を作っています。
昔はDxLibでゲームを作っていたので、そのコードをそのまま改変することなくAndroid,Macintosh,ios,linux,...にもビルド出来るようになれたらと思い、作成しています。
一度JavaAndroid用にDxLibを作っていたのですが、C++ ->Java で結構リファクタリングする必要があるのであまり需要もないし面倒だったので、今回C++であるcoco2dxsにしようとした次第です。github.com
今、半分くらいの関数をcocos2dxでエミュレート出来ているので、もう少しで公開出来そうです。
その過程でつまづいたところを先にメモしておきます。

cocosのバージョン

cocos2dxのversionは3.8です(cocos2d.cppより)
cocos --version は2.0だった

開発環境

windows10 + Visual Studio 2013 Professional です。
基本的には、VisualStudioでWin32用でテストしていって、Android実機で試すということをしていってます。

開発環境導入

pythonがいりますね、僕はPietとRubyは入れていたのですが…
cocos2dxもcocosも落としてsetup.pyしてwin32のslnをVisualStudioで開いて10分くらいかけてコンパイルしたらまずHelloWorldのゲームシーンが出来ますね。
VisualStudioだとスクリプト文字コードの警告が多いので、BOMとかUnicodeとか頑張ってください。あくまでもWarningなので問題はないですし。
一度ビルドしてしまえば以降は楽になります。

Androidビルド

EclipseやAndroidStudioなくても、SDK Ant NDK があればいいですよね。
画像などのファイルは最上階層のResourcesにいれておけば勝手にコンパイルするときにAndroidの方いじらなくてもassetsに入れてくれます(解像度とか気にしなければ)。
書いたコードを他のプラットフォームでもコンパイルできるようにするためには、最上階層のClassesの中にコードをいれておきましょう。
proj.android/jni/Android.mk を書き換えましょう。
     ../../Classes/HelloWorldScene.cpp \
のところを整合性を揃えてないとエラーになります。
VisualStudioでてきとーに作っていて BYTE とか TRUE std::_pi とか使っていても、そういうのがないってこのAndroidビルドの時に怒られて気づけます。

cocos

Windows版のpreloadBackgroundMusic()の中何もないのおもしろすぎでしょ。
あとAutoBatchingがあるからBatchNodeが非推奨になっているのとか。