2010-04-08
[iPhone]iPhone RPG開発ログ
Luaで実装するモデルをターミナルで動作確認する環境ができた。 同じソースをXcodeでビルドし実行できることも確認した。
モデルはCのAPIとしてObjective-Cに対して提供する。 モデルの内部ではLuaが使われているが、Objective-Cで実装されるコントローラからはLuaの存在は見えない。
モデルを実行するのに毎回Xcodeでコンパイル/実行をするのは面倒なので、 CのAPIをgccでビルドして実行する仕組みを作った。 ターミナル内でソースを書いて、その場で随時実行しながら中身を作り込んでいく。 iPhoneのような特殊なデバイスと開発環境を相手にするときは、ソース編集から実行確認までのサイクルを短くする環境を構築することが開発効率を高めるキモになる。この辺りはコンシュマーゲームの開発と全く同じ。
Luaスクリプトはファイルとして読み込むんじゃなくて、Cの文字列として生成して、Cソースに埋め込むようにした。
今の開発環境には4つの言語が混在している。
- Objective-C …… ビューとコントローラ
- C …… モデルAPI
- Lua …… モデルの実装
- Ruby …… RakefileやC APIの自動生成
同時にvimのバッファに乗っているが特に違和感はない。 Webだってサーバーサイドのメイン言語とは別にSQLとかJavaScriptとかHTMLとかCSSとかたくさん使うか。
todo
- Luaのスクリプトから自動的にAPIとなるC関数を生成する仕組み
- 必要なAPIをいくつか洗い出してみる