Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。

iPhone RPG開発ログ5

あと10回このような開発ログを残すことができれば、そのときはアプリがある程度の形になっているはず、と信じて進んでゆく。

キャラデータを引っ張ってきて、そのキャラ用のアイコンを表示するように。 と、ここで男女を表すパラメータが存在してないことに気づく。性別を表すパラメータの変数名は何がいいんだろ。

その他メイン画面を作成中。

todo

  • メイン画面
    • ○キャラアイコンの表示
    • △メインパネルの表示
    • アクティブキャラ情報の表示
  • キャラの名前変更
  • lua_closeをどこかで呼ぶこと ... 参考: http://karetta.jp/book-node/lua/228837
permalink
category: iPhone(22)

iPhone RPG開発ログ

既存の問題点を修正しつつ、Luaベースのモデルからキャラクター数を取得してその数だけメイン画面にキャラクターアイコンを表示。 これで一応モデル、コントローラ、ビューの一連の流れが動作したことになる。

todo

  • ○ゲームの初期化(セーブデータのリセット)
  • メイン画面
    • ○キャラアイコンの表示
    • メインパネルの表示
    • アクティブキャラ情報の表示
  • キャラの名前変更
  • lua_closeをどこかで呼ぶこと ... 参考: http://karetta.jp/book-node/lua/228837
permalink
category: iPhone(22)

iPhone RPG開発ログ

開発環境のバージョンアップ。xcode_3.2.2_and_iphone_sdk_3.2_finalを入れた。

Lua関数をラッピングする仕組みを強化。文字列型も返せるようになった。 あとは必要な型が増えたらハッシュに追加すればいい。

C APIジェネレータがやってることの割に長いけどとりあえず良いか。 少し使えばまた手を入れることになるだろうから、そのあと徐々にコードをきれいにしていこう。

ファイル構成を整理。

開発環境の準備が整ってきたので、ゲームの内容を実装する。何から手を付けたものか。

todo

  • ゲームの初期化(セーブデータのリセット)
  • メイン画面
    • キャラアイコンの表示
    • メインパネルの表示
    • アクティブキャラ情報の表示
  • キャラの名前変更
permalink
category: iPhone(22)

iPhone RPG開発ログ

モデルAPIの洗い出し。

  • active_character ... アクティブキャラクターの取得
  • party_characters ... パーティメンバーのリスト
  • characters ... 全メンバーのリスト

ん、ちょっと待てよ。LuaのメソッドをCの関数として一対一に関連づけていこうと思っていたけど、構造体を返すような場合はどうしたらいいんだろ。Luaから直接構造体は返せないよな。Luaのテーブルの内容をC構造体に代入するような仕組みは作れるだろうか。

Luaの関数でテーブルを返した場合、テーブルはスタックに積まれ値はキーをもとに取り出すことができる。

Luaで定義した関数のCのラッパーを自動生成する仕組みができた。 テーブルを返す関数に関しては、手動でラッパーを作成することにする。この形は多くはないはず。

todo

  • ○LuaからCにテーブルを返す方法
  • Cのラッパーを多様な関数に対させる
  • 開発環境のバージョンアップ
  • lua_closeをどこかで呼ぶこと ... 参考: http://karetta.jp/book-node/lua/228837
permalink
category: iPhone(22)

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をいくつか洗い出してみる
permalink
category: iPhone(22)