Ruby/SDL 1.0.0 リリース

http://www.kmc.gr.jp/~ohai/rubysdl.html
クロスプラットフォームな マルチメディアライブラリ」SDLrubyバインディングがリリースされた。やるなKMC。 ([ruby-list:41349]*1経由)
Windowsバイナリもちゃんと用意されている。上記サイトのHow To installに従ってインストールしてみたら、Windows XPのActiveScriptRubyでも簡単なサンプルは動いたよ。具体的には、Windowsバイナリを固めたものをダウンロードしてきて解凍して、

  • SDL.dllをSystem32以下に
  • sdl.rb、rubysdl_aliases.rbをlib/ruby/1.8以下に
  • SDL.soをlib/ruby/site_ruby/1.8/i386-msvcrt以下に

置いただけ。インストーラーがあったほうがいいに決まっているが、まあ比較的お手軽。これなら10分で何か作れるんじゃない?10分動画希望。

うう、しかしこんな面白げなものを日曜の深夜にリリースするのは勘弁してほしい…

10/25 追記

以下で書いているバグは、

  • sdl.rb、rubysdl_aliases.rbをlib/ruby/site_ruby/1.8以下に

置くことで回避できました。
ohaiさん、コメントありがとうございます。
しかし、このライブラリ、読みこみ順に依存してるのかあ。テストが大変そうだな。

さらに追記

sdl.soおよび*.rbをsite_ruby以下に置くかどうかを統一する必要がある、とのこと。しょっぱなからsdl.soをsite_ruby以下に置いてしまったのが敗因か。ああーそうか、sdl.soとsdl.rbで名前がかぶってるからですね。ようやく気がついた。なるほど。

うげー サンプルにバグがいっぱいある。

(注 上でもふれたように、ここに書いてあるのは全て僕のスクリプト配置ミスに起因するものだったわけですが、はまった記録としてそのまま残しておくことにします)

あれ同梱されているサンプルスクリプトの中で、aadraw.rbを実行すると、

aadraw.rb:7: private method `format' called for #<SDL::Screen:0x2940760> (NoMethodError)

といわれてしまう。サンプルの中には他にも同じ原因で落ちてしまうのがあるし、サイトで配布されているサンプルゲーム「GH」も同じメッセージがでて、途中で落ちてしまう。
あてずっぽうで、aadraw.rbのformatを使ってるあたりを、

#Red=screen.format.mapRGB(255,0,0)
Red=[255,0,0]

と書きかえたら動作した。むぅ。

GHのほうもformatでこけてる部分を同じように対処してみたが、今度は

./player.rb:66:in `draw': undefined method `put' for #<SDL::Screen:0x293cdb8> (NoMethodError)
	from gh.rb:91

といわれる。ここでメゲタ。やってられん。他のサンプルもざーっと試してみたが、ほとんどのサンプルが、上の二つのどちらかが原因で落ちる。とほほ。
素のrubyなエラーメッセージがでてるので、環境依存やDLLの干渉でもなさそう。リリースする時はサンプルのチェックくらいして欲しいものである。梱包ミスかなあ。

でもって、この情報をフィードバックしたいんだけども、メール出すしかないのかな。めんどい。あ、ぅぅ、BTSみつけたけど、これどうやって書きこめばいいんだ。英語じゃないと駄目なんかな。ううめんどい。ま、いいよね。試した人はみんな気がつくよね。ということで棚上げ。