たまには〜

なんか書こう。
個人的な日記を・・・というのはすでにちょっと違うものになってしまっているので、DXRubyネタでも。


例えば複数ウィンドウに対応する、となると、どのような仕様になるのだろう。
いまはWindowモジュールで動いているから、基本的にこの作りでは無理だ。
どうすればいいのか。


まず、ウィンドウ単位にオブジェクトを生成するように、WindowモジュールをWindowクラスにする。
そうすると、ゲーム全体の管理、フレームレートの調整とかはWindowクラスとはまた別の、Gameモジュールみたいなものを作って、そっちで提供することになる。
いまの仕様ではWindowモジュールに色々詰め込みすぎということだ。


Windowモジュールがクラスになると、また少し違うことができるようになる。
例えばウィンドウの管理を基本クラスとして作っておいて、それを継承して扱える描画系メソッドの種類を変えたクラスを提供するとか。
基本機能に絞って性能に特化したクラスや、3D描画ができるWindow3Dクラスなんかがそれで作れて、しかも複数同時に動いたりするわけだ。
今の仕様で3D対応は不可能だし、疑似3Dにしても結構無茶なことになるが(描画モード切り替えとか)、Windowクラスにすればそれもすっきりした形で提供できるようになる。


最大の問題点は互換性で、少なくとも今までのコードは動かなくなる。
互換性を保つのは極めて難しい。
やるならDXRuby2.0で大幅変更、みたいな感じか。
ウリである「簡単さ」が大きく下がるのも厳しい。


高度な概念を使えば理想的な設計を実現することもできるのだろうが、高度なものは使うのが難しくなる。
敷居を下げるのもチャレンジの一つであり、そこで妥協するのはいまいち嬉しくない。
使うのが難しくて機能が豊富なものは他の人が作って、初心者はDXRubyで、卒業したらそっち、とかできたらいいのに。