だいぶ前に日記書いたのに上げ忘れたままになっていた。
メインマシンを新しく組んだWindowsマシンにしたので旧メインマシンのiMacがいらなくなった。MacはMacBookがあるし、iMacじゃないとできないような重い作業もなかったのでiMacの必要はない。なによりテカテカ液晶の24inchとか頭おかしいクソモニターのマシンを置いておく場所がない。
データのサルベージはTimeMachineでバックアップに使ってたHDDがあるのでそこからMacBook経由でNASにコピー。iMacに入ってた各種アプリはMacBookに入れておいた。まあFireworksとIllustratorくらいだが。
一応まだ何かあると困るので置いてはあるけど、ちょっと落ち着いたら売ろう。調べたら少なくとも4万くらいでは売れそうな気配はある。買った値段が20万くらいしたような気がするしメモリ8GBがさらに6万近くした気がするんで4万はちょっとアレなんだが捨てるよりマシだろう。置いておいても邪魔なだけだしなー。
ちょっと落ち着いたら売ろうとかいいつつまだ売ってない。忘れないうちに売らないと。
A8-3850のメインマシンの方はいろいろ試してみてなかなかな速度だというのが分かった。DiRT3が無料でもらえるよというのでクーポンコードをわざわざ写真で送ってやった返事が1週間以上かかって来たんだが、新しいコードを発行したんでこれでもう一回やってねとか。めんどくせぇ。と思ったが今度はすぐにダウンロードコード来たのでそれをSteamに入れてやって完了。次はSteamからどんなゲームも起動しなくて困ってたんだがSteamを管理者権限で立ち上げれば上手くいった。何故かは謎だが仕方ない。
やっとのことでDiRT3を立ち上げて初期設定のままベンチマークモードを走らせてみたら1920x1200で平均22fps、最低18fpsという感じ。数値だと低いけど見てる感じだとべつにゲームやってる分には気にならないんじゃないかくらいに見えた。1280x800だと平均、最低ともに30fps越えるけど特になめらかになったなぁという気はしない上に解像度下がってぼけ気味なのが気になってしまう。高解像度見た後だからだろうけどな。で、ベンチマークを走らせただけで終わり。DiRT3やりたかったわけでもないので。
ベンチマーク見ただけで自分でプレイしてたわけでもないからそんなに感動もないなぁとは思ったんだが、グラボのっけてもないのに1920x1200で見た目十分綺麗なゲームがまあまあ遊べる速度で動くってのはすごいんじゃないか?いやなんつーかすごさがよくわからんな。安いマシンで値段よりちょっと上のゲームが動くのはすごいと言っても微妙なのは確かだ……。
相変わらずバグ取り。
GUIがフリーズする問題はリレーツリー作るときに無限ループしてるのが原因じゃないかと思った。というか無限ループしてスタック溢れた。何事かあって上手く溢れ例外が受け取れないとか投げられないとかだとデバッガごと固まってしまうのかもしれない。 無限ループは確かにまだ起きる可能性が十分なコードだったのでちゃんと対策して、まあたぶん直ったろう。
……あれ、再現した。一度はリリースモードのビルド使ってたのでデバッグできなかったんだが、デバッグモードでビルドした物でも再現したのでアタッチして確認。どうも普通に動いているように見えるが、なぜかログが恐しい勢いで吐き出されたのを表示しようとしてGUIが固まってしまったようだ。出てるログを見てると再接続時に変な場所につなごうとして失敗して、でも次の瞬間同じ場所に接続しに行こうとして失敗して……というのを間を置かずに試行してる感じ。 上流が切れた時にじゃあ別のホストに接続に行きましょうと思ったら下流のリレーできない人しか知らなくて、そこに接続に行くんだけどリレーできない人なので接続できなくて……というのを連続していたようだ。
問題は二つ。一つはリレーできないと知ってるはずの場所に接続しに行こうとしてるところ。これは弾くのすっかり忘れてただけなので直そう。二つは接続失敗した相手に間を置かずに再接続しに行くところ。接続失敗したらしばらく無視リストに入れるつもりだったんだがなぁ。これは調べよう。みつけた時に頭痛くて調べられなかった。
自動アップデート欲しいなぁ。でもClickOnceはコード署名がどうこうというのがいまいちよくわからんので今すぐ試すにはちょっと……。一回別な何かで試してからにしてみたい。署名が必要ってのはわかるんだが正直めんどいよな。いやでも署名無しで自動アップデートってありえないでしょという気持ちもあって、うーん。まあ妥協点としては自己証明書でいいんだろうけどさ。
実際のところある程度安定はしたんで、拡張とかアクセスコントロールとかHTTPインターフェースとかいろいろやりたかったことにやっと手を出せそうだ。IPv6対応はもうちょっと先になりそうだが、IPv6普及もそう急激じゃないのであんまり急ぐ必要も無さそうなのが救いか。
相変わらず変なの作ってます。
IronRubyからOpenTK使ってGLES2をいじるのをやってたんだけど、やっとだいたいできた。普通のGLじゃなくてES2なのは作ってるマシンがクソIntelのGMA500なのでOpenGLが動かなくてANGLE使ってるから。ほんとはOpenGLも対応したいんだけど家では別な物作ってるからなぁ。
だいたい出来た結果がこれ。ああ、なんか日記に画像添付できなくなってる。リンクだけ貼っておこう。
<URL:http://dl.dropbox.com/u/3160952/images/bokkore.png>
なんかすごい描画ができた!……んじゃなくて、ちゃんと描画してくれませんでした。あーもーD3D9のドライバすらちゃんと作れないのかIntelは!もうGPU作るのやめろ!LOOX Uサイズで遅くてもいいからFusionなフルPC出ないかなー。
ReadPixelsで読み取ると普通に描けてるのがわかる。そんなもんなのか。あとデスクトップの方でもちゃんと描画してくれた。
<URL:http://dl.dropbox.com/u/3160952/images/framebuffer.png>
今のところGLES2分のバインディングしか作ってないけどまあいいかな。そんな高級な機能使う予定ないしな。
速度的に動作自体はほとんど何も呼んでないのでともかく、起動が遅いのはなんとかならんかな。IronRubyのコンパイルキャッシュを使えばいいのかもしれないがこれって本当に動くのかとても怪しい。ir.exeからは指定できなさそうだし。
さて次はどうしたものか。あ、そういえば入力を取ろうとしたけど拡張ライブラリ書くのめんどいからOpenTKでやりたいとか思ったのが始まりだったんだ。じゃあ入力かなぁ。
JRuby対応もやりたい。これはJOGLとJInputを使えばいいのかな。JOGLがめんどそう。しかしJOGLにはGL2にGLES2の皮をかぶせる層があるみたいなのがよさげ。もちろんGLES2直接使えもするみたい。
できればCRuby対応もやりたいが。以前作ってたやつのインターフェースを修正するだけで済むはずだ。めんどい。自分で拡張ライブラリ書かなくてもなんとかならないか考えてみたが、ruby-openglはGLES2には対応してないしな。自前でffiなりdlなり使って読み込んでもいいけどめんどいし、そこまでやるなら拡張ライブラリでもよくないか?でも拡張ライブラリはビルドめんどい。