DXRubyFrameworkプロトタイプのはなし

とりあえず、簡単なものは動くようになった。
xとyの差分を設定して、毎フレームそのぶんずつ移動して、描画する。
矩形範囲を設定しておくと、その範囲内であれば何もしないが範囲外に出たらoutメソッドが呼ばれるようにしたから、画面外で消滅とか、画面端で跳ね返りとかも自由にできる。
ついでにカウントを設定するとカウントダウンされて、0になったときにupdateメソッドが呼ばれるようにしてあって、これで一定距離移動して向きを変えるとかもできる。
いまのとこxとyの差分だけだが、角度とスピードとか、回転速度・加速度みたいなのを設定して、自動で向きや速度を変更していけるような仕組みを作ってもいいだろう。
現時点での動作速度は、いつものRubyの絵を動かすやつをRuby1.9.1で動かして、30fps40000個となった。
かなり処理を省いているからおそらくここが限界速で、これから遅くなる一方だと思うから、いらん期待をさせないよーに画像は載せないでおく。


こういうことをやっていると、どうしても実行速度が気になる。
機能を増やす方向じゃなく、いかにして速度を稼ぐか。
その次に、速度を落とさずに機能を追加することを考える。
しかし、例えばRubyとCの速度差が100倍あったとして、RubyのプログラムをCで置き換える場合に、1割をRubyで残したら合計の速度差は10倍未満になる。
Cで書く拡張ライブラリであれば、Rubyインタプリタを呼ぶような処理はRubyのコードと似たようなもんだ。
狙うは100倍!とか言っていると、とんでもなく難しいことになるわけで、できるなら2倍や3倍ぐらいで満足するような感じでいたほうがよい。
意外にRubyだけでもそこそこの速度で動くし、DXRubyFrameworkが無いとまともにゲームが作れない!ってことは無いだろうと思う。
じゃあ、俺はいった何をやりたいのか。


うーん・・・。
俺がやりたいのは「このゲームはRubyで動いています」って言って胸を張れるゲームを作ること。
どっちかというと、そういうゲームが作れる環境を作ること。
「ふーん、結構すごいじゃん」って言われるようなレベルではなくて。
「ありえねー」って言わせたい。
その手段はいろいろあるだろうが、俺の得意分野としてまずは簡単な動きを高速に実行するフレームワークとなった。
あくまでも簡単な動きだけだから用途もシンプルに弾幕STGなど。
例えば高度なエフェクトとか、疑似3Dとかでも「ありえねー」の目的達成には近づけそうだ。
そっちはDXRuby本体を拡張するとか、また別の手段で。
手を変え品を変え、いろんな方向でRubyの限界を引き上げていきたい。
と思う。


まあ、思いつきで行動するタイプですから・・・。