ここしばらくひっそりやってたネタが終わりました。
成果はここでは無いどこかにひっそり上がってますが、別にプログラムかいたわけじゃなくドキュメントだけですのでここには晒しません。
知らない人が見ても何やってるか分からん内容なので。
これでいろいろとやりたかったことに手が出せるなぁ。
とりあえずMacの画面をキャプチャーして別マシンに送って表示するアプリを作ってた。
取り込み・描画と送受信を別スレッドにしてやってレイテンシは大きくなるもののfpsが上げられないかとやってたんだが、どうにも上がらない。
なんか帯域喰い潰すはずが全然使われないのでおかしいなと思ったら、MacでN810用につけてたインターネット共有が悪さしてた。
natdとやらがいちいちどこ向けのパケットか判別してた様だ。
共有切ったらGbEなのに60%帯域使いやがったよ!やったね!
まあまあ速くはなってくれたので圧縮してどうなるか様子見たいな。
本当はフレーム間差分とかまじめに圧縮したいんだがとても難しいっぽいのでとりあえずはzlibで圧縮。うーん、情けない。
先日までやっていた一件もあって、ゲーム用のGRikoがある程度強化された感じ。
しかし手抜きな部分もいっぱいあるからなぁ。
次はどこに手を入れていくべきか。
ちょっと気になっているのがglfw。OpenGL専用のSDLみたいなので、サウンドは無いがウィンドウ表示からキー入力やゲームパッドはちゃんと使えるみたい。
これがSDLより良い点は、
てな感じ。
ライセンスの方は完全に好みだわ。別にLGPLでも問題ないし。
ウィンドウのリサイズもSDLでも出来るんだけど、WindowsではリサイズしたときにOpenGLのコンテキストを作りなおしちゃうぜ、ってドキュメントに書いてあって実際にそうなっている。
なんでそうなってるのかは知らないが、実際なっちゃってるしなぁ。
glfwはべつにコンテキストを作りなおしたりしないようなので普通にリサイズもできるね。試してないけど、フルスクリーンのON/OFFも出来そうだ。
SDLに劣る点は、動作環境が少ないのと、サウンドの扱いが無い、tga読み込みしかないぐらいか。
動作環境は少ないといえ、主要な環境は抑えてあるので大丈夫だろう。もしHaikuOSで動かしたいと思っても移植も簡単そうだ。
サウンドはもとからOpenAL使ってるのであんまり関係ない。画像も自前で読んでいるので大丈夫。
そんなわけでglfwを使うことにしたい。 といってもSDLを使う部分を外す必要は無いから両対応だけど。
ruby-glfwというのもあるからrubyから使うにも簡単だろう。問題はこのruby-glfwの野郎がgemしかないってことだ。 おのれ俺がgem嫌いと知っての狼藉か。
自前で作ってもいいんだがめんどいだけで利点もないんで、なんならバンドルしておけばいいだろう。 べつにgem解くのは簡単だし。
しかし、glfwとか些細なところはどうでもいいんだった。 夏ぐらいまでに前回プレビュー版しか作れなかったゲームを正式版にしたいな。
手始めにテクスチャ読み込みの整理とモデルコンバータの整理だ。
テクスチャ読み込みは以前から考えてたように、テクスチャデータオブジェクトを作るだけ。これ簡単。しかしめんどいだけ。
モデルコンバータは悩むんだが、理想はobjとmtlとbvhからCOLLADA作って変換かなぁ。いや、本当の理想はCOLLADA読み込みだが、ちゃんと書き出せるアプリが微妙。
そのためにBlenderでも実装された自動骨入れアルゴリズムを実装したいんだよな。
objとmtlとbvhからスキンつきマテリアル付きジオメトリが入ったCOLLADA書き出せたら便利じゃね? え、COLLADAが便利じゃないですかそうですか。
しかし、それはいまのところ理想だからな。技術的には全然問題ないと思うが、自分で使う分には正しいCOLLADAを吐き出せるアプリがあればいいだけだし。
Blenderのexporterを自分で書き起こすのも悪くないけどな。
いやいや、妄想膨らますのもいいが、現実的には正しいCOLLADAを読み込めるようにする方が先なんだがね。
CgとかGLSLエフェクトを読み込むのって使うだろうか…。
ああ、そうそう。Rikoもそろそろ一旦リリースしようかな。なんの役に立つかかなり微妙だが。
ライセンスはBSD styleだったのをzlib/libpngスタイルに変更予定。別に大した理由では無くそっちの方が俺の考えにあってるってなだけだが。