cocos2d-xとLuaでゲームが出来るかな?

cocos2d-xとLuaを覚え書き

Lua用プロジェクト

cocos2d-xでLuaを使うためのプロジェクト作成、SDcardからLuaファイルの読み込みについて

現在最新Verのcocos2d-x v2.1rc0-x-2.1.3での説明をしていきます

cocos2d-x Luaプロジェクト

旧バージョンではAndroid,iOS共有プロジェクトを作る場合色々と面倒でしたが、最新バージョンでは簡単に作ることができます。やり方は多所で書かれているので簡単説明。


1.create_project.pyでプロジェクトを作る

create_project.pyを使うことで、マルチプラットフォーム共有プロジェクトを自動で作ってくれます。
ファイルの場所:

  [cocos2d-xのフォルダ]/tools/project-creattor/create_project.py

  ※実行にはPythonが必要です。WIndowsは先にインストールの必要があります。

  Macは最初から入っていた気がする?

コマンドプロンプトで上記のフォルダまで移動したら、以下のコマンドでプロジェクトを作成します。

 python create_project.py -project <プロジェクト名> -package <パッケージ名> -language lua

最後の-languageをluaに指定することでLua用のプロジェクトが作成されます。

成功すれば [cocos2d-xのフォルダ]/projects/プロジェクト名 に作らているはずです。

Android,iOS以外はいらいないので、その他のproj.~を削除

androidADK、iosはXcodeでそれぞれのproj.にあるプロジェクトファイルを使いサンプルが動作することを確認しましょう。


2.Android SDcardからLuaを読み込む

通常はbuild_native.shを実行し、プロジェクトをビルドします。

その際に必要なリソースファイルはassetsにコピーされます。アプリケーションはassetsの中のリソースを読み込むわけです。

これでは、Luaファイルの変更→毎回ビルド(時間がかかる)→apkの転送 となり、Luaスクリプトの強みを活かせません。

そこで、LuaファイルはAndroid端末のSDcardへ直接転送し、アプリケーションにはそこからLuaファイルを読みこんでもらうように変更します。 Luaファイルの変更→SDCardへコピー(即終わる)→即反映

詳しい説明は前回同様にこちらの方が書いてくれていますので参考にします。


#20 まさか、Cocos2d-x 使っているのに C++ 書いてるわけないよね?

http://tech.kayac.com/archive/20_snmp.html


・AppDelegate.cppを変更する

上記のHPを参考にして書き換えます。
HPの説明では、最初のLuaファイルは指定しているので読み込まれるのですが、requireの検索パスが設定されていないので、他のファイルを読み込むことができません。
パス指定を追加します。

const char *luaSearchPath = "/mnt/sdcard/Resources";    // 環境に合わせてLuaファイルの検索パスを指定
pEngine->addSearchPath( luaSearchPath );

また、Luaファイルだけでなく、他のリソースもSDcardから読み込みたい!というときはそちらの指定もする。

std::vector< std::string> resourcesPaths;
resourcesPaths.push_back( "/mnt/sdcard/Resources");      // 環境に合わせてリソースファイルのパスを指定
CCFileUtils::sharedFileUtils()->setSearchPaths( resourcesPaths );
LuaファイルをAndroidへコピーする

Androidへのコピーはadbを使用します。ディレクトリをまるごとコピーするのが簡単です。

adb push <コピーするディレクトリ> <コピー先のAndroidディレクトリ>


これで、アプリケーションはSDcardからLuaファイルを読んでくれるようになります。
なお、ビルド時にassetsへLuaファイルを入れる必要が無くなるので、build_native.shを修正しassetsへLuaファイルをコピーを無効にしておきましょう。
(デフォルトのassetsが先に参照される?ため)



・iOSは?

iOSは自分はやっていません・・・
上記のHPでも説明されていますが、iPhoneにはSDCardがなく面倒くさいようです。
また、Androidと違い、シミュレータの動作もしっかりしているのでMac上でテスト→実機で確認という方法を取っています。
やってみたいという方は、上記HPを参考にお試しあれ



大分長くなったけれど、これでLuaファイルの読み込み!実行!修正!が高速で出来るようになりました。

次回は、Luaの開発環境について紹介したいと思います。