2013/05/14(火) [n年前の日記]
#2 [prog] Ayame/Rubyのエラーについてメモ
Ayame/Ruby 0.0.2 を使うとocraでexe化できなかったり、Ruby 1.9.2上でスクリプトが不正終了する(というか、終了できずに固まって、Windows7が「どうする? 無理矢理終了させる?」と尋ねてくる)件。何をするとそうなるのか分かったかもしれず。Ayame#dispose を呼ぶと、起きるっぽい。そこだけコメントアウトしたら、exe化もできたし、Ruby 1.9.2上でも正常終了するようになった。
ただ、Ruby 1.9.3 上で ruby hoge.rb の形で実行する限りは、あるいは、Ayame/Ruby 0.0.1 を使った場合は、dispose を呼んでいてもexe化できるし、正常終了するわけで。なもんで、どうも釈然としない…。
dispose を呼んだ後、関連メソッドを呼ぶと例外が起きるらしいのだけど、0.0.1 使用時に例外が起きてないということは、dispose を呼んだ後、関連メソッドは呼ばれない作りになっていたはずで。であれば、dispose を呼んで不具合が起きるのは妙だなと。
まあ、何にせよ、dispose を呼ばなければエラーを回避できる模様。ということで。
気になって Ayame/Ruby付属のサンプルを眺めたら、dispose は一度も使われてなかった。となると、呼ぶこと自体が想定外というか、本来は呼ばなくても済むはずなのかなと思えてきたりもして。 ただ、そうなると、別の点が気になるわけで。dispose を一切呼ばない作りは、すなわち、読み込んだ音声ファイルを一度も解放しない作りを強制されるはずで…。
ゲーム等では、十数曲〜数十曲を順次鳴らしていく、てな場面もありそうだけど。解放しないということは、アプリ起動時にあらかじめ全曲読み込んでおいて、アプリ実行中はメモリ上にその全曲分の波形データをずっと持ちっぱなし、てな作りになるだろうと。しかしそうなると、音声ファイルは結構容量を食うので、メモリをやたらと使いそうな…。
まあ、今時のPCスペックなら、そのくらい屁でもないのかしら。メモリが少なくてヒイヒイ言ってる家庭用ゲーム機とは違うぜ、と。
よくよく考えてみたら、そもそもRuby等のLL使ってゲーム作ろうとする時点で、かなりの富豪的プログラミングだろうし。今更何言ってんだ、みたいな話かもしれん…。
あるいは、Ruby の GC が上手くやってくれることを期待した作り、なんてことも可能だったりするのだろうか。Ruby初心者なので、どうすればそれができるのか、よく分からんのだけど。
ただ、Ruby 1.9.3 上で ruby hoge.rb の形で実行する限りは、あるいは、Ayame/Ruby 0.0.1 を使った場合は、dispose を呼んでいてもexe化できるし、正常終了するわけで。なもんで、どうも釈然としない…。
dispose を呼んだ後、関連メソッドを呼ぶと例外が起きるらしいのだけど、0.0.1 使用時に例外が起きてないということは、dispose を呼んだ後、関連メソッドは呼ばれない作りになっていたはずで。であれば、dispose を呼んで不具合が起きるのは妙だなと。
まあ、何にせよ、dispose を呼ばなければエラーを回避できる模様。ということで。
気になって Ayame/Ruby付属のサンプルを眺めたら、dispose は一度も使われてなかった。となると、呼ぶこと自体が想定外というか、本来は呼ばなくても済むはずなのかなと思えてきたりもして。 ただ、そうなると、別の点が気になるわけで。dispose を一切呼ばない作りは、すなわち、読み込んだ音声ファイルを一度も解放しない作りを強制されるはずで…。
ゲーム等では、十数曲〜数十曲を順次鳴らしていく、てな場面もありそうだけど。解放しないということは、アプリ起動時にあらかじめ全曲読み込んでおいて、アプリ実行中はメモリ上にその全曲分の波形データをずっと持ちっぱなし、てな作りになるだろうと。しかしそうなると、音声ファイルは結構容量を食うので、メモリをやたらと使いそうな…。
まあ、今時のPCスペックなら、そのくらい屁でもないのかしら。メモリが少なくてヒイヒイ言ってる家庭用ゲーム機とは違うぜ、と。
よくよく考えてみたら、そもそもRuby等のLL使ってゲーム作ろうとする時点で、かなりの富豪的プログラミングだろうし。今更何言ってんだ、みたいな話かもしれん…。
あるいは、Ruby の GC が上手くやってくれることを期待した作り、なんてことも可能だったりするのだろうか。Ruby初心者なので、どうすればそれができるのか、よく分からんのだけど。
[ ツッコむ ]
以上です。