Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2006-12-14

[Ruby]スライムクラスとドラゴンクラス

C++ 使ってたころは Monster クラスを継承させた Slime クラスとか Dragon クラスとか、実際そんなことしないよなーと思っていた。だって、現実問題モンスターの種類は何十、何百となるわけで、そのデータはテーブル化したい。だったら、共通の Monster クラスのオブジェクトに値を設定する形にしないと不便だから。

でも Ruby だったら、モンスター固有のパラメータとか振る舞いをクラスやモジュールとして DSL 的に定義するのもありだね。モンスター名を示す文字列やシンボルから、それぞれのクラスのインスタンスを作れるもの。

monster = Monster.create(:dragon)

うーん、この発想はなかったわ。 Ruby ぜんぜん使いこなせてないなー。

しかも、 Ruby の場合はスクリプトが設定ファイルになるから、直接 DSL 的にデータを書けばいいわけだ。まあ作業分担するとエクセルを使いたがる人が多いから、実際はエクセルをパースして Ruby スクリプトをジェネレートするとかになりそうだけど。

--

まだまだ C の呪縛に縛られすぎなんだよね。発想が。 動的なんだよ、動的。真に目覚めるのはいつの日か。