たむらです。ruby-ext の方を連休中にチェックしてませんでした。 すみません。 # 今回まで、スレッド切ってしまいます。申し訳ない。 大林さん wrote: >>module SDL >> class Error < StandardError # SDLで生じるエラーを通知するクラス >> class Surface # 画像を描きこめるフィールド >> class Screen < Surface # ここに描きこまれた画像が表示される >> class Event # キーやマウスなどをとりあつかう >> module Key # Keysymを定義する >> module Mixer # 効果音等を使えるようにする SDL_mixerのインタフェース >> class JoyStick # ジョイスティックを取り扱う >> module WM # ウィンドウを取り扱う >> class Font >> >>基本的にSDLのCに対するインターフェースをそのままRubyに移したような設計です。 なるほど。この辺りは私のイメージもほぼ同じです。 >>SDLのAPIに近いインターフェースともっと単純なインターフェースを作る。 >>単純なほうのインタフェースはRubyで書いてもよいかもしれない。 『単純なほうの』とは Rubyから扱うという意味ですか ? >>音を出すのはSDL_mixerを使う。 pygame 同様、SDL_image/SDL_ttf/SDL_mixer(smpeg) をそれぞれ 拡張ライブラリ化することを考えてました。 # win用に、SDL_susie とかあると良さげ >>SDLのスレッドは使わない。SDL_AddTimer等に対するインタフェースも提供しない。 Thread は Rubyにもあるので私もそうするつもりでした。 # Game などの、Realtime 性を損なったりしないのかしら >>SDLだけでは線を引いたり拡大縮小をする関数がないので、これは他の >>ライブラリを使う。SGE と言うのが使えそうです。 SGE 自体を良くしらないのですが(SDL mailing list などに名前は出てきて いますね) 利用できる環境は、SDL同様たくさんのOSをサポートしてるのですか あと、SDL_ttf があるとはいえ、日本語の表示の問題や利用コストが大きいので どうかなと思ってもいます。 >>最後に、私のSDL拡張ライブラリの実装時に起きた問題について書きます。 >> >>Linux上でSDLを普通にコンパイルしてインストールしたものを使って拡張ライブラリ >>を作ると、うまくうごかなくなります。 >>具体的には、Rubyのスクリプト内でexitやraiseを使って実行を止めると、 >>きちんと止まらないというものです。 >> >>これはSDL内部でpthreadを使っていることが原因であるようです。 >>SDLのconfigureのときに --disable-pthreads というフラグをつけると、 >>この問題は生じないようです。 この問題は、気づきませんでした。 サンプルなどのコードを見ると、SDL_Init の後に、atexit(SDL_Quit) をやってることが 多いみたいですが、SDL_Quit のタイミングは、どうされたのですか ? # WIN32OLE は atexit 利用してますね。 あと、出来ればライブラリを作るときより、利用するときに、拡張ライブラリ側 から明示的に pthread を使用しない設定に出来た方がいいですよね # もちろん、調べられましたよね ... >>上記の問題が解決したため、設計を修正して上に書いたように実装してある程度の >>枠組を示せるようにして世に出そうと思っていたのですが...。 私としては、使える便利なものがあればいいのですが、拡張ライブラリの勉強 がてらと手を出してしまいました。SDLも 1.2 の声が聞こえてきますし、swig の移植作業の生産性の高さは特筆すべきものだと思います。 # ruby/qt とかの実績もあるし。福嶋さんも反応されたので一安心 上のクラス構成と、スクリプト内での raise での動作をまずは、確認して みます。 レスありがとうございます。 たむら