日記書いたのに上げ損ねてた。そうこうしてる間に状況が変わるので書いたものはどうしたものかと。
ここしばらく体調が良くなくてだらだらと半休にしてみたりしてたが、半休ではなかなか良くならんのでちゃんと休んでだいたい回復した。 体調が良くない時はさっさと治るまで休むべきだな。
思った以上に仕事が忙しくてオンラインセッションのテストができず。 プレイヤー募集開始はしたが、募集スレに書いといたくらいじゃ集まらんな。配信して宣伝もしないとならんか。
オンラインセッション環境はいろいろ検討したけど、ボイスチャットにMumble、支援ツールにどどんとふを使うことにしてみた。
支援ツールの炬燵というのがあってこいつはボイスチャットも標準装備なんだが、部屋を立てるには自分でサーバになる必要があるようだ。サーバ立てること自体はそう問題ないんだが、オンラインセッションに配信も同時にやるのでADSLでは上り帯域が不安。できるだけ外のサーバを使えるものにしたかった。
ボイスチャットはTeamSpeak3かMumbleあたりがメジャーなようなのでどっちにしようかなと。SkypeはPeerCastと相性悪かった覚えがあるのであまり使いたくない。説明を見てるとMumbleは普通にインスコするだけで日本語化されてるようなのでこれが楽そうだな。オープンソースなのも気分的に良い。サーバはフリーサーバがいくらかあるのでそこを使わせてもらおう。
支援ツールのほうもどどんとふだとフリーサーバがあるのでこれを使うことに。これでサーバは全部外なので帯域は自分の分+配信の分だけで済む。 今後もしょっちゅうやるようならいつもフリーサーバ借りるのも気が引けるのでVPS辺りにMumbleと支援ツールのサーバをピアキャスTRPG用として立てるのもいいかもね。
ところでボイスチャットの様子を配信しようとすると、音声はどう接続すればいいんだろうか。マイク入力をMumbleとエンコーダで同時には使えないよね?というかエンコーダにはボイチャの音全部載せないといけないからマイク入力じゃだめか。かといってステレオミックスだと自分の声が載らん。
いろいろ試してたんだが、俺はUA-4FX使ってて都合により変なつなぎ方してるのでなんとかなった。マイクはUA-4FXにつながってる。Mumbleの入力はUA-4FXを指定すればOKだ。Mumbleの出力(というかWindowsの出力)はUA-4FXに入る。このときUA-4FXのアナログ出力にはマイクとPCの出力がミックスされたものが出てる。これをPCオンボのライン入力に入れて、エンコーダ入力はPCオンボのライン入力を指定すればミックス結果をエンコできる。
PCからの出力がUA-4FXに入ってそれをまたPCに入れてるが、アナログ側はライン入力を再生しない限りはループもしない。単にMumble→マイクミックス→エンコーダになる。Mumbleの出力も入力もUA-4FXを指定している形になるが、UA-4FXはループバックモードにしない限りPCからUSBで出力されたものをUSB入力に渡さないのでこれもループしない。入力はマイク→Mumbleのみになる。
やっぱり音声入力って簡単そうだけどやってみると結構大変だよなぁ。 と思ったが、最初からマイク入力を再生有効にしつつMumbleに入れて、ステレオミックスをエンコーダに入れればいいだけじゃね。マイク入力の再生さえできれば簡単じゃねぇか……。
配信して宣伝もしたけど興味ありそうな人はいくらもいるけど参加表明までする人はいないなぁ。どどんとふのテストがてら部屋を立てたらいくらか人が来て楽しそうにいじってたので表明はないがいざとなれば3人くらいは来るのかもしれん。ぶっつけ本番いくかー?
どどんとふは便利だがキャラクターシート管理まではできないのね。Excel辺りで作ってGoogle Docsに共有でもしとけばいいか。いやGoogleはあまり好きじゃないのでまずOffice Web Appsを試そう。どっちにしろ表計算でキャラクターシート作るのめんどいんだけどなぁ。
ちょっと前にirpack 0.2.7を出しました。 念のため書いておくとirpackとはIronRubyで動くスクリプトをexeにまとめあげる物です。
変更点は、irpackコマンドが起動しなかったのとREADMEに書かれていたコマンドの例が間違っていたのを修正しただけです。 Rakeタスクしか使ってなかった人には関係ないです。
irpackコマンドが起動するかどうかのテストまでは書いてなかったんだよなぁ。書いとくべきだろうか。めんどいんだが。
irpackはここしばらくは特に強化予定はないです。バグ報告があれば対応したいくらい。機能リクエストもあれば検討するけど。
JSON-RPC部分のテスト書き進める。
しかしテスト書いてて思ったが、引数の型チェックなんかをしていちいちエラー返すのがめんどい。 普通のライブラリならちゃんとチェックしないで落ちても、あーなんか例外で落ちたーとわかるからいいんだが、 RPCだとちゃんと正常にエラーを返してあげないといけないので落ちっぱなしとか困るわけだわ。 まあ.NET側の例外をJSON化してエラー情報としてぶん投げてやってもいいんだが、そんなもの受け取ってもソースみないとよくわからんだろうからちと不親切。 引数の型チェックくらいはやっといたほうがいいね。
引数の型チェックくらいはやっといたほうがいいのはわかるんだが書くのはめんどい。 RPCMethodAttributeという属性をつくって、これがついてるメソッドはRPCに公開してるメソッドということにしてるんで、 ついでに引数の型情報とか引数の名前情報も拾って勝手にチェックするようにしようか。 Jayrockではそうなってるっぽいんだけど、結局自前で同じようなの書くはめになるのか。
結構めんどくさかったが、なんとなく書けたのでテストに通してみたら何事もなく通ってしまった。 いやまあ通ったのはいいことだけど、そうすんなり行くと思わなかったぜ。
とりあえず一通りテストは書けたっぽい。あとはクライアント側。JavaScriperにならないと。
ちょっとAPIの設計に関係するところでアクセス制御関係の機能を追加しないといけなかったので、それが出来たらクライアント側書こ。