くまりゅう日記

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

2014-01-07

日記

気付いたら年越えてた。いや年越えてたのは知ってたな。日記書いてなかっただけだ。

年末年始の休みはどうせ何もしないうちに終わるんだろうと期待していなかったので、何もしてなくても予想通りだ!

TRPGやろうとして準備してみたものの告知が急だったのでプレイヤー集まらなかったり、本を取り込んだりしてたり、ちょろっとコミケ2日目行ってRTA本とか買って帰ってきてから……何してたっけ?あと3日目で技術関係の本とゲームと音楽CD買ってきてピアキャス飲みに出掛けて帰ってきて配信しながら年越したり。元日は起きたら午後でピアキャス見てたら一日終わって、翌朝は早くから帰省した。

帰省してからはだらだらしてて、猫写真撮りまくったりたまにプログラム書いてたくらいにして、5日の朝の電車で戻ってきた。朝早い電車だと早起きするだけで午前中に家まで着いて楽だな。 あとは一山ほど本取り込んでちょこっとプログラム書いて休み終わり。

列挙してみると言う程何もしてないわけじゃないっていうね。あれもこれもやりたいとか無理なことさえ考えなければ何かしらやってるものだ。欲を言えば本取り込みはもっと進めたかったが。

全然関係ないけど、最近近くの本屋にTRPGのルールブックやRole&Rollがぼちぼち入るようになってきて助かる。攻略本コーナーにeb!の新刊が置かれるようになったなーと思ってるるいえとらべらーずを買ってみたが、しばらくしたらゲーム雑誌コーナーにRole&Rollが紛れ込むようになって、もしやと思ったらゲーム攻略本コーナーにブラッドムーンが入ってたので確保してきた。 文庫のリプレイがせいぜいだったところが単行本のルールブック(しかも新紀元社)とはやるようになったな。最近流行りっぽいラノベ系?の単行本小説のおかげかもしれん。

[TRPG] どどんとふいじり

28日にはインセインをオンラインでやろうかと思って準備をしていたんだが上手いことプレイヤーが集まらずお流れに。一週間前の深夜にちょろっと告知しただけなのでそりゃ厳しい。 シナリオの準備も足りてなかったし再度告知して年明けてからやることにした。

準備している時に、どどんとふでインセインをやるのはどうすればいいのか試していたんだが、出来はするもののどうにも使い勝手がよろしくないことがわかった。恐怖や使命/秘密なんかをカードとして扱うんだが、裏表の見える状態管理があまり自在にはできなくて、意図せずにみんなに公開しちゃったり、特定の人だけ見えるようになんていうのが簡単にはできなくてちょっと難しい。あとシナリオ用に自前の使命/秘密カード作ったりがかなりめんどくさい。なんとかしたいなぁ。

というわけでセッションが流れた勢いでどどんとふそのものをいじることにした。 オープンソースだとこういうことができて便利ですよね。みんなもオープンソースしよう。

環境としてはサーバ側がRubyで、クライアント側がFlash……というかFlex SDKでビルドできる。へー、サーバ側はRubyだったんだ。

Flex SDKは最新のがFlash Player 11以降用らしいので、Flash Player 10用にビルドするらしいどどんとふは一つ前のでないとビルドできない。その罠を乗り越えるとビルドは簡単にできた。 しかしサーバが動かん。どうもString#eachがねーよ的なエラーが出てるんだが、これRuby 2.0じゃ動かないのでは。 1.8.7を使うと動くようになった。うーむ、String#eachの廃止って1.9系じゃなかったっけ?1.9系対応してないのはどうかと思うな……。まあ今はこれでいいや。

ビルドして動かすことはできるようになったので何かいじってみよう。 ActionScript3はさっぱりと言っていいほどわからんけど、ぱっと見た感じではそう難しくはなさそうなのでちょこっといじるくらいなら出来るだろう。

まずカードを伏せることができるようにしたい。 伏せてるカード(裏面・使命/秘密で言えば使命だけが見えてる状態)を右クリックすると「全員に公開」と「自分だけ表を見る」のメニューが出てくるが、自分だけ見えてる状態になったカードを右クリックした場合は「全員に公開」しかできない。自分だけ表を見て再度裏を見ようとすると一旦全員に公開を経由しないといけなくなっている。裏面に情報がないカードなら再度裏面見たいとかないのでいいんだけど、使命/秘密は両面に見たい情報があるのでこれでは困る。自分だけが表を見られる状態から、裏面を見られる状態に戻せるようにしたい。

これはまあ簡単だろうと想像していたが実際簡単だった。メニュー表示状態制御しているところがあったんでここをいじろう。自分だけ見えている状態(内部的には閉じも開いてもいない状態として表現されていた)の時に伏せるメニューが非表示になっていたので、こいつを表示するようにしてあげただけ。ついでに公開状態から自分だけが見る状態に戻るのもできるようにしておいた。これはあんまり使わないだろうが、まあ対称性を考えるとあった方が自然だよね。 カードを伏せた状態にするとカードの所有者が無しになってしまうのが気になるが、あまり問題は無い気がするので見なかったことにしよう。

書いてて思ったけど、裏面には使命だけ、表面には使命と秘密の両方書いたカードを作ればよかったんだろうか……。しかしカードもそこまで大きくないからぎゅうぎゅうに詰め込むと読むのも書くのも厳しいなぁ。あーリンク貼って秘密は外部のサイトにとばせば……ってメッセージカードのHTMLにリンク書いても反応しないはずだな。

次にやりたいことは、カードの状態を増やすか、見る権限を人毎につけたい、ってやつだったが、ソースを見ててどっちも大幅な変更が必要なのがわかった。

カードの状態を増やすのは、存在自体が見えない状態・裏面だけ見える状態・表面が見える状態の3つが作れるとシナリオであとからプライズ出したりできて助かるなと。三状態じゃなくてももっと増やせれば汎用性あるしね。 しかし実装を見るの状態は裏か表かくらいしか管理してないようなので増やすのは大幅な変更が必要そうだった。 今思ったけど、自分にしか見えない状態だけを作るのは、不可視パラメータを別に一つ追加すればなんとかなりそうだからできるかもね。

見る権限を人毎につけたいってのは、今は自分のカードを自分だけが表を見るか全員に公開かしかできないけど、特定の人だけ見ていいよってしたい。秘密や恐怖はそれを持ってるプレイヤーだけじゃなくてマスターも見たいし、情報共有が発生した他のプレイヤーも見たいよね。現状ではカードのテキストをチャット欄にコピペする機能があるので、それで見せたい人にこっそりチャット送信すればいいようだが、わかりづらいし間違いそうで使いづらい。 しかしこれもカードが持ってる状態は公開か非公開かしかないので相当な変更が必要だ。 と思ってたけど今考えると、データ的には全クライアントが両面の情報を持ってて、自分だけがカードを見る状態ってのはクライアント側で自分は見てもおっけーだなと判断して勝手に見てる状態なので、自分は見ていいかの情報を別途持てればそれでいいのかもしんない。極端なこと言うと、権限とか関係なく自分だけこっそり見るってのを自分所有のカードじゃなくてもできちゃってもいいのかもしんない。インチキできちゃうけどそこは紳士協定てことで……。

出来そうなやつとして、カードを自作する時に画像を設定できるようにしたいというのを検討した。 サーバ単位では事前定義のカードセットで画像が使えるんだが、セッション単位でそれはできないのでメッセージカードというのでカードを作る。しかしメッセージカードはテキストしか書けず、HTMLのサブセットでレイアウトもしなきゃいけないのでめんどくさい。画像を作っておいてそれを使えたら楽だなぁと。

ソースを見るにテキスト部分がURLだったら画像にできそうだというのはわかったんだが、それ以外にこれは画像カードですよとかテキストカードですよという属性も持っていた。動的にカードを作る場合にはテキストカードを作るコマンドしか用意されていないようだ。

てかHTML使えるならimg使えるんじゃね?と言われたので試してみるものの上手く表示されなかった。カードの表示はテキストをテキストボックスでレンダリングして画像にして表示しているので、おそらく画像にレンダリングする時点でimg指定した画像が読み込まれていないんじゃないかと思われる。

ていうか画像カードを動的に追加できたとしても、画像自体は同じサーバにないと参照できないし、ということは画像アップローダに上げなきゃいけないので誰が見ても見れちゃう気がするし、あんまり意味ないんじゃないかという気がしたので諦めることにした。他人にこっそり見せる機能が無い状態ではテキストコピペができないから逆にめんどくさいしね。

もう一つ、メッセージカードは一度作ると再編集できないという問題があるのでこれはなんとかしたい。シナリオ用の秘密やらなんやら作ってる時にいざカード作ったらタイプミスしてたなんてことはよくある。よくあるが、再編集はできないので一旦削除して作り直し。直接書かんでテキストエディタなりからコピペすればいいんだが、それでもちょっとした間違いを直すだけなのにめんどくさいなと。ということで再編集できるようにしたい。

これは結局やったが、意外に変更がでかかった。 というのもサーバ側のコマンドにメッセージカードの追加はあっても編集コマンドがなかったので、サーバ側もいじる必要があったのだ。あとメッセージカード追加用ウィンドウクラスには追加処理が直接書かれていたので、編集用のウィンドウをコピペして作らないといけなかったり。まあサーバ側のいじり方やUIのいじり方の勉強にもなったのでいいけど。あまり使わないとは思うがめでたく再編集できるようになったよ。

他に今考えついた要望として、カードの拡大表示ウィンドウで裏表両方同時に表示できるようにしたいってのがあるなぁ。自分に見る権利があれば(盤面上の状態にかかわらず)両面同時に見れるって感じにしたい。ソースちゃんと見ないと簡単にできるかどうかわからないけど、クライアント側だけで済むから大丈夫だと思う。

今のところやった変更はローカルにクローンしたリポジトリに入れてたけど、ローカルに置いておくのもなんだかな。github上でクローンしておいたのであとで適当なブランチ作ってぶち込んでおくか。気が向いたらpull request送れるようにしておきたいしね。


ページのトップへ | トップ «前の日記(2013-12-24) 最新 次の日記(2014-01-14)» | 編集 | kumaryu.net by kumaryu