描画プリミティブ

久々に更新。
何かしてるかと言われると何もしていないのだが、止まってしまった頭を動かすのは大変なことなのだ。
例えるなら昔の船のエンジンのような。


DXRubyのWikiに、MyGameのシーン管理クラスを汎用化したscene.rbを置いてある。
MyGameは大変便利だが、狙うところがDXRubyと若干かぶりつつ実現手法が微妙に違うため、DXRuby用のMyGame(まいが〜め)を作って提供はしているものの、どちらの良さも十分には発揮しきれていない感じがする。
DXRuby用に再設計すればいいものができる可能性もあるが、それはなかなか簡単ではない。
んじゃあ発想を変えて、DXRuby単体には全く無いものを個別に提供してみるのはどうだろうと思って、とりあえずscene.rbを作ってみたのだ。
他の機能も考えてみると、たとえば音関連は必要なさそうで、DrawPrimitive系は取捨選択する感じで、イベントは後で検討するぐらいか。
MyGameにはboot.rbがあるが、ああいう機能はなんだか何も知らない子供向けに興味を持たせるための導入用って雰囲気がする。
DXRubyは興味を持ってやろうとしている人向けであって、これ自体が興味を惹くためのものではない。
Rubyも簡単ではあるが、たぶんそこまで簡単ではない。


前置きが長くなったが、いまいじっているのはMyGameのImageクラス。
名前がぶつかるのでとりあえずSpriteクラスとして、MyGameから切り出してみたところ。
まるで違う使い方にするならそもそも作り直すべきだと思うから、MyGameのImageクラスと同じ使い方ができるように、ほぼ変更なしとしてある。
DXRuby単体に無くてMyGameにある機能としては、アニメーション、hide、衝突判定だろう。
これらはDXRubyで言うところのImageクラスには当然搭載できず(Imageは画像データだから)、座標やアニメーション状態などの個別情報を持つ描画プリミティブオブジェクトが必要になる。
DXRubyが提供する機能の、もう一段上だ。
ゲームで使いそうな機能のうち、低レベルな必須の部分をサポートするのがDXRubyであり、高レベルで便利な機能をサポートするのがMyGameである。


描画プリミティブというのは、絶対必要かといわれるとそうでもないとは思うが、どのみち自分で作らないといけなくなる機能だし、それらをまとめて提供するという意味では大切だ。
DXRuby的にはDXRubyFrameworkにそれらの機能を搭載して、高速描画・自動移動・衝突判定処理などができる描画プリミティブクラスとして提供するのがよさそうに思えてきた。
MyGameを解析するのではなく、その考え方と機能を分析して、DXRubyに何が必要でどう作りこめばいいのか、ということを考えている、とでも言うか。
言い換えれば、MyGameの思想を部分的に吸収して俺流に再構築しようとしている。
なにげに結構MyGameファンです。はい。