くまりゅう日記

もっと過去の日記
[.NET | BeOS | Blender | COLLADA | fossil | mono | monotone | NPR | OpenGL | PeerCastStation | Riko | Ruby | Silverlight | TRPG | XNA | ゲーム | ゲーム作り | プログラム | | 模型]

2014-05-13

日記

大して書くことないなー。

最近やたらと寝すぎて困る。早く起きたいんだが、全然起きらんねーよ。

[ゲーム作り] 全く進んでないゲーム作り

全く進んでない。手も出してないしね。

衝突検出が遅すぎたり不安定だったりするので、本を参考に書き直してみるがやっぱり遅い。 何が悪いって測ってはないけど、Rubyで書いてるのが悪いてのはあるわな。 さらに言えばIronRubyだし。

IronRubyでもいろいろ頑張ればそこそこな速度は出せるんじゃないかと思うけど、そんなの頑張るんだったら重い場所はC#で書いちゃえば早いし速いじゃんというのがね。まあその通りですね。その通りなんだけど負けた気分になるのがなんともね。おとなしく負けとくべきところだけどね。

C#で書くのも面白くないのでF#で書こうかなぁ。

[PeerCastStation] NAT越え

GUI変更はそこそこできたので、ポート自動開放を仕込もうと作業中。

ポート開放は以前から自分でやってくれということになっていたし、そのくらいできるようになれよという思いもあったので自動開放は入れてなかったんだが、いろいろと心境の変化があったので入れることにした。 わかってるはずの人でもめんどいから入れてくれって要望してくるのはともかく、どうせ衰退一方のピアキャスだしいまさら設定のめんどくささを障壁にせずともユーザが無駄に増えることもあるまいと思い直したのが主な理由。もし新しいユーザが入ってきた場合も、設定の障壁は低い方が全体としてリレーは安定するだろう。

UPnPで穴開ければいいんだろーと思ったけど自分で実装するのはめんどくさそうだ。ライブラリくらいあるだろと調べるとNuGetでMono.Natというのを発見した。UPnPとNAT-PMPというのに対応しているようだ。NAT-PMPてなんだろうと調べるとAirMacで使われる物のようだ。うちはAirMac Extremeだから丁度いい。

ちょっと嫌な予感がしたもののNuGetでMono.Natを入れようとすると、予想通り.NET3.5のプロジェクトには入りませんと言われてしまった。ですよねー。 しかしソースを落としてきて.NET3.5でビルドしたところ問題なくビルドできたので、自前ビルドでいこう。

使い方がわからんので組み込む前にちょっと試してみる。既に作られているポートマッピングの取得とかできるっぽい……けどNAT-PMPではその機能が無いらしく、NotSupportedExceptionが投げられた。 ポート開放を作るにも開放時間を指定しないといけなかったりするし、ポートマッピングを作ってもAirMacユーティリティ上の静的なポートマッピング一覧には表示されない。どうもNAT-PMPは必要な間だけポートを開けとくためのプロトコルで、永続的な開放はできないようだ。それならそれでいいけど、表示されないのはわかりづらいな。 ポートマッピングの削除も上手くいってるように見えないのでソースや仕様を読むと生存時間を0にしないといけないようだ。これはライブラリ側でやってほしかったですね……。

NAT-PMPでは動くようになったけど、UPnPでも試してみないと不安だな。NAT-PMPが仕様まで見ないとだめだったことを考えるとUPnPですんなり動くとは思えない。しかしAirMacはUPnP対応してないんだよなぁ。 押し入れを漁ればたぶんUPnP対応ルータは出てくるんだが、ルータ入れ替えとかめんどいよー。

UPnPはまた後で試すことにして、実際にポートが開けられたかの確認はしたい。 ポート開放チェックの機能をつけよう。 て、まあクライアント側は簡単なんだけど、サーバ側も難しくはないもののめんどくさいな……。 途中まで書いて寝る時間になったので中断して寝た。

そろそろリリースしたいけど、ポート自動開放より先にポート開放チェック入れないとな。その前にリリースしちゃってもいいんだけどさ。


ページのトップへ | トップ «前の日記(2014-05-07) 最新 次の日記(2014-05-20)» | 編集 | kumaryu.net by kumaryu