プログラミング

oyagame 開発中

2008年4月28日

先日、ふとしたことからpygameの存在を知り、少しばかり虜になってしまっている。

これは何かと言うと、SDL (Simple DirectMedia Layer)を、Pythonで使えるようにしたものだ。要するに、Pythonでゲームを作成するためのツールである。同様のものに、Ruby/SDLがある。

何が私を虜にさせるかというと、gameという名なのである。20年以上前になるが、GAMEというプログラミング言語があった。BASICと良く似ているが、これが流行した当時、この言語の一番の特徴は実行速度にあった。BASICと比べてとにかく速かったその理由は、コンパイルが可能であったことである。これを使って、MZ-80で、数え切れないほどのゲームを作成したものだ。

では今、pygameを使って何かゲームを作りたくなったのかと言うと、実はそうではない。この、SDLというインターフェースが、WSHで使えたらなぁと思うのである。VBScriptやJScriptで使えるし、COMとして扱えれば、PowerShellでも使えるはずだ。そう、SFC miniみたいに。SFC miniでGUIが扱えないことは無いが、お世辞にも使いやすいとはいえないので、何とかしたいというのもある。

SDL自体は、Windows用としてはSDL.dllと言うファイル名でDLLが用意されていて、ここから関数がエクスポートされている形になっている。なので、SFC miniを用いれば、そのままWSHで利用可能のはずだ。しかし、いくら『mini』だといっても、SFC miniを利用してしまっては、スピードや携帯性に難が出る可能性は高い。先のGAME言語が流行したのと同じで、スピードはゲームの命である。

なので当然、SFC miniなど使わずに、独立してSDLをWSHで使えるようにするほうが望ましい(…自分としては、はじめから結論ありき…)。実装するものは、

1)SDL.dllからエクスポートされている関数群の呼び出し
2)構造体の扱い
3)定数の登録

で良いはずだ。1)は、SFC miniのDynaCall部分のコードがそのまま使えるはずで、ここは簡単な構造。3)は、VBScript/JScriptのコードを文字列として出力し、スクリプトの側でevalするだけの簡単なものでよいはず。2)が一番厄介だが、これができればほぼできたと思ってよいだろう。

現在の様子は以下のとおり。

記念撮影
MsgBoxに表示されている数字は、SDL_Surface構造体のポインタ

実際には、構造体周りのコードもほぼ書き上げている。8割がた完成というところ。

oyagame(Object of Yet Another SDL interface for GAME)と名づけた。これが完成すれば、同じ構造でGTK+インターフェースも作成するかもしれない。また、SFC mini ver 2.0 の骨格部分にすることで、SFC mini の安定化にも寄与する可能性がある。

コメント

コメントはありません

コメント送信