kumaryu日記
2009-09-01 復帰
_ Snow Leopard
開発者用のドキュメントをいろいろ読んだり。
OpenGL3についてはしらんぷりしたようです。まじか。
Grand Central Dispatch辺りのおかげでC言語にRubyのブロックみたいなその名もブロックが追加されてるのが気になる。
GCD関係無い所にもブロック前提のAPIも追加されてるんだがRubyからのアクセスが不安だなぁ。
あとブロック機能は本家gccに入ったりするのかもちょっと気になるんだが。
他には別に新しい機能ってのもあんまり無かったかなぁ。OpenCLはまた今度みるよ。QuartzComposerからは簡単に使えるけどQuartzComposerではさすがにつかいみちが思い付かないよ。
ドキュメントは関係ないんだけど、標準でx86_64ターゲットなgccが立ち上がるようになってるのね(Core2で)。
これのおかげでMacPortsが全滅。一から入れ直した。
あとSDLが1.2系はビルド通らなくなってしまった。64bit化というよりdeprecatedなAPI使ってたから通らなくなったみたい。これは困る。
1.3をsvnから拾ってきたら通ったんだけど、今度はruby/sdlのビルドが通らなくなってしまう。どうしようか悩んだけどとりあえずruby/sdlを修正して回避。
主にキーボード周りのAPI変更が入ってたのでそれを対応するだけでいけた。なんかMetaキーとかのシンボルが無くなっちゃったけど、どうせそんなキー無いよ。
あとはいまのところそれほど困ることもなく。Rikoもビルドできたし動いた。Cgも64bit版込みのバイナリだったよ。
あ、そうそう、なぜかrubyをビルドすると-Wshorten-64-to-32だかなんだかというオプションがつくため、64bitの値を32bitに切り詰めたよ!という警告が超大量に出てくるようになってしまった。べつにruby本体のビルドはいいんだけど、自前の拡張ライブラリをビルドするときにもめっちゃたくさん出るので困った。エラーが見づらい。
ちゃんと調べてないんだけどどこで出てるんだろう。どうしても出るような物なら仕方ないんだが、自分のコードが悪いなら直すべきだろうな。
SDL_net入れてないから画面取り込みアプリがビルドできないんだが、SDL_netは1.3対応とか無いのかな?そのままいける?
デスクトプマスコットが立ち上がらなくなってしまった。エラーログを見るとなんかRubyCocoa内で落ちてるな。ビルドしなおせば動くかな。そうなるとまた色々ビルドし直しだからめんどいんだけど。
_ [Riko] 物理エンジンいれた
秋の連休イベントのために何か作らないと!というので散々悩んだんだけど、もうひと月しかないんじゃどうせまともなの作れないよということで諦め、適当なデモを作ってお茶を濁すことにしました。
ん?ゲーム2本作る?むりむり。むりだって。
でまあデモを作るならやりたかったことをやるかということで、物理エンジンを入れることに。スカートひらひらさせたい。
Bulletをいれることにしてビルド。ん、失敗した。64bitだとなぜかマルチスレッド用のライブラリがビルドされないんだけど、マルチスレッド用ライブラリに依存するサンプルがビルドされちゃってた。サンプルを外して回避。
Bulletはあいかわらずドキュメントが無いんだが、ソースとサンプルを見ながらさっくりと最低限の動きをさせることに成功。おー簡単過ぎる。
これこんなに簡単に動くけど、物理エンジン自体自分で作ろうとしたら発狂もんだぜ。すげー。
とりあえず動くことを目標にしたから、Ruby側からいろいろ細かいところは弄れないんだけど、まあそこはおいおい。
しかしBulletは、自前でRigidBodyとかShpaeとかConstraintの寿命管理をしてくれないのね。MotionStateまで自前で管理しないといけないのね。
これがRubyと組み合わせると難しいんだよなぁ。GCがあるからいつ死ぬかわからんし。参照カウント制にしてくれれば管理楽なのに。C++的にもそっちの方が楽じゃね?
あと完全に2D的な物理シミュレーションとか衝突判定をしようと思うとちょっと難しそう。サンプルはあったけど、ボックスだけだったので他のも必要なら自分で実装…ってめんどいな。
完全2Dなら別にBox2Dを導入する方がよさそうだ。
幸いあんまりBulletの作りをRuby側に露出させてない*1のでBox2Dのラッパを同じようなインターフェースで提供するのは出来そう。気が向いたらやるかも。
ともあれ剛体シミュレーションは簡単だった。が、SoftBodyはそうもいかん。いや使いかたは簡単そうなんですけどね。どうやってモデルと対応させるのかと。
剛体ならまあCOLLADA Physicsでなんとかなるのかなぁと。しかしCOLLADAは軟体に対応しておりませぬ。1.4.1はもちろんのこと1.5でもだ。
これを考えて詰んだ。ひと月って言っても、もう秋の連休までにはいくらも時間無いわけで、というかひと月もないしJGCとかあるから土日もあんまり無いし、スカートひらひらとか無理ゲーすぎる。いや無理ゲーすぎるとまではいわんがぎりぎり過ぎる。
というかスカートひらひらさせるためのモデル作ってる暇が無いので無理。
剛体を転がしてるだけでもそこそこ面白かったので、これでなんか適当に見栄えがするものでっちあげようかなぁ。
いやむしろモデルをちゃんと作りこんで、モデルだけ配布したほうがいいんじゃまいか。でもそれも無理だろ、うわーん。
*1 ちゃんとマッピングすると超めんどい