Rubyの標準添付ライブラリFiddleでゲームプログラミングする

この記事はRuby Game Developing Advent Calendar 2016 - Adventar の12日目です。11日目は土屋つかささんのrubyゲーム開発にユニットテスト/テスティングフレームワークを導入する(2)【実践編】 - 土屋つかさの技術ブログは今か無しかでした。Ruby...ゲーム...ユニットテスト...うっ、頭が...
まあ、ゲーム関連でのユニットテストは難しい問題で、スピーカから出てくる音をマイクで拾って判定するわけにもいかないので、とりあえず全ての機能をテストすることができないのは明らかである。っていうかそもそも外部機器を扱わない部分を考えても、例えばDXRubyのSpriteで言うところのSprite#x=で設定した値がSprite#xで取得できることはテストできても、それがSprite#yで取得する値に影響を与えていないこと、などをテストし始めると現実的には不可能な量になってしまうので、つまりは全てのユニットテストにおいて取れる戦略はたった一つ、「できるテストをやる」。ああ、耳が痛い。
ちなみに高尾さんのSDLを使ったDXRuby互換ライブラリdxruby_sdlではRSpecを使ってテストを書いていて参考になる。ここではSoundは音声ファイルを読み込んで再生して例外が出ないこと、をテストしている。なるほど。

さて、今回はRubyの標準添付ライブラリFiddleでゲームプログラミングということで、WindowsDirectXを叩く方法を紹介する。DirectXはCOMインターフェイスなのでRubyからは普通の方法では呼べないが、Cインターフェイスが存在するのでそれに沿った扱い方で呼ぶことが可能である。

続きを読む