BLOGSpeee開発陣による技術情報発信ブログです。ネイティブアプリ技術Tweetお初にお目にかかります。自宅のエスプレッソマシンの調子が悪く、オーバーホールに出そうか悩み中のカフェマスターです。舞鶴鎮守府の兼業提督でもあります。コードの修正を反映するたびに、アプリ再ビルド、転送、起動の待ち時間がかかりますがとっても無駄ですよね?書いたコードが即反映されれば、集中力も切れないし、生産性向上は間違いなし。いうことで、今回はiOS環境でシミュレータを起動したまま、コードをガシガシ書いていくためのプロジェクト雛形作成方法をご紹介したいと思います。2系をインストール済みの環境を想定しています。LuaパッケージマネージャセットアップHomebrewを使ってLua関連パッケージをインストールします。luarocksはrubyのgemに相当するパッケージマネージャです。luarocksMoonScriptセットアップLuaはクラスの概念がなかったり初めて扱うには取っ付きづらいのでここではCofeeScript風の文法で記述でき、LuaにコンパイルできるMoonScriptを使うことにします。luaC++側でスクリプトを動的リロードする仕組みを作成ここから実際のコーディングを行っていきます。C++側でスクリプトを動的にリロードしてシーンを再スタートさせる仕組みを作ります。先ほど作成したSceneManagerをスクリプト側から呼び出せるようにします。tolua++を使うための定義ファイルを作成します。restartGameScene();};定義ファイルを元にtolua++でグルーコードを作成します。tolua++はCocos2d-xのtoolsディレクトリ下のものをそのまま利用します。Classes/tolua_glue/bind.pkgAppDelegateでアプリのエントリポイントを切り替えます。SceneManager::startGameScene();グルーコードについての詳細はこちらのサイトでご覧ください。元ファイルを作成します。App\startTitleScene()が再度呼ばれるようになります。menulayerMoonScriptをLuaにコンパイル最後にMoonScriptをLuaにコンパイルして完成です。MoonScriptの更新を検知して自動でコンパイルしてくれます。Luaの出力先としてiOSシミュレータのアプリケーションのDocuments下に直接書きだします。することでScenemanager.cppの動的リロード時に最新のスクリプトファイルを読み込むことになります。serverをアプリ内で動かしてpostで差分を投げつける方法で対応可能です。応用編として試してみてください。当方が担当したプロジェクトでは直前の素のcocos2d-xで作ったプロダクト(両方エンジニアは私1名)に比べて1.5倍~2倍の成果が出せていました。今回は触れていませんが、コールバックが簡潔に書けるため、イベントハンドラなどを記述しだすとさらに威力が発揮されます。設定ファイルをyaml形式でさくっと記述し、即リロードしてゲームに反映することでレベルデザインも捗りますよ。チーム開発を加速するためにディレクターが設定値を編集出来るように仕組み化していくと面白いですね。