サイログ。

~雑多な記事置き場~

Ruby+XNAは可能か?

数日前のエントリで、「Rubyは組み込みできるので、DirectXゲームのレベルエンジンにできるんちゃうの?」と考えていたわけですが、もっと進めて「じゃあ、XNAと組み合わせるのは?」というレベルで考えるとどうなるか?

僕的には、「しんどいけど、技術的に可能」と考えています。

何故「しんどい」のか

Rubyでは、拡張ライブラリをCで書くことができるのですが、Rubyのオブジェクトは、Cでは「VALUE」という型の値を介して実装しています。

VALUE型の中身を見ると、

最上位ビットが1・・・数値(31ビットの整数。実数の場合は・・・doubleと同じと言ってるけど、どうなるんだろ? やっぱりオブジェクト構造体なんだろうか。)
最上位ビットが0・・・擬似変数(nil,true,false)+ポインタ(オブジェクト構造体へのポインタ)

Cのポインタを有効(かなぁ)活用してるので、これらの情報を把握して.NETで扱えるようにしとかなきゃならない。
現実的な解としては、VALUE型を展開して、.NET側から解りやすい値を取り出す関数をCで用意しておく方法でしょうね。

・・・うーん、パフォーマンスの面で期待できなさそうかなぁ・・・。