2009/04/24(金)瑞穂人狼

行ってきました。瑞穂人狼。

着いたときには 1ゲーム目の中盤だったらしい。メモの練習、と思ってメモしつつ見学するが上手いメモの取り方がわからずわやくちゃなまま終了。

2ゲーム目参加、瑞穂は夜が短いらしく人が激減。なんとか8人でスタート。
俺の役は村人。

初日にさっくりと2名死亡。どちらかは必ず狼なワケだ。
しかし、8人スタートで偽ブロもなく手がかりはさっぱり。
しかし A さんの発言が挙動不審な気がする。F さんの口数が少ないことも怪しいといえば怪しい。
投票では半分の3票が全て第一容疑者 A さんに入れられたところで、もう一人の容疑者 F さんがまさかの自分投票。ぬぅ?票を割ろうとしたのか?安直過ぎる。が、逆を突いて実は狼じゃないんだ!という逆の逆を突いて俺も容疑者 F さんに投票。何が逆で何が逆の逆なのかもわからない程混乱している模様。
最後の投票者の A さんは考えるまでもなく F さんに投票して 3対3 の決選投票。
満場一致で F さんがリンチ。

この時点でさっぱりわからねー。

2日目、指名権をいただいたのであんまり怪しくなさそうな人を同室に選ぶ。
残り 5人なので後は 3人同室になる。エー、そうならそうでもっと選びようがあったのに...。
同室した方に前日の容疑者 A さんがやはり怪しい、と力説される。
ばれる危険を冒してでも票を割って生き残りに掛けたのだろう、とのこと。
そうかも知れない...と思いつつさっぱりわからねー!

翌朝、まさかの全員生存。
D さん -> A さんへブロック発言。
T さん -> D さんへブロック発言。
A さん謎のカウンター発言。
あまりにわからないので 2日間無事故の D さんはシンプルに村サイドということにする。
T さんも2日間無事故である。
となると、決定力は否めないもののやはり前日の容疑者 A さんが怪しい。
さっぱり解らないので A さんを吊るす事に決める。

投票により A さんリンチ。

まださっぱりわからねーもののどうやら A さん F さんが狼で正解だったらしく 2日で事件解決。
役なしの俺の票がどう揺れるかがキーだったらしく、さっぱりわからねーまま正解をひき続けた俺のナイス投票が勝負を決めたらしい。

大人数の人狼は頭が混乱して難しいが、少人数の人狼は判断材料が少なすぎてやっぱり難しい。要するに人狼って難しい。
終始わやくちゃな本日の俺であった。

ちなみに危険な推理力の持ち主のマウスさんについて、「自分が狼なら他の人にばれるリスクを冒してでもマウスさんが生きているリスクを潰す」という判断はみんなの賛同を得られたようだ。



さぁ、ゲームログを残して置いたので UO Journal Fixer の出番ですよ!
と行きたい所だが、極稀に 1バイトオーバーフローする可能性があるかなーと思ってはいたけど可能性としては極僅かだからいいか、と見逃してたバグがまさに今日のログで発生。
鋭意修正中。頭使わなくていい方向で。

ここもわやくちゃ。

追記:
変換後のバイト数が変換前を超えるはずは無いという想定で作っていたのだが、どうやら大幅に増加する事がありメモリをぶっ壊していた。
なーんーでーだー、と思っていたら。
  • UO のログは Unicode で保存する オプションがついてなければ us-ascii で保存される
  • UTF-16 と us-ascii が混在、という普通じゃなさ過ぎるファイルができあがる
    • UTF-16 に 8bit の文字コードなんぞない。
俺は UTF-16 前提で作っていたので、
  • 改行コードを直して 5Bytes -> 4Bytes
  • エンコード変換の部分はサイズの増加は既に考慮済み
になってた。ここに us-ascii が入ってくると、改行コードが 2Bytes -> 4Bytes に増えるっていう...。

ていうかあれ?文字コード変換に ICU 使うのは大仰かなー、と思ってたのになんで同じくらい大仰で質は落ちる GNU iconv 使ってんだろ、何してんだ俺。しかも ICU なら MIT License で使えるのに。

そしてある日のログ:
あなたの口座から、decorative bright ~1_COLOR~ ~2_TYPE~ の代金が引き落とされました。
これは...そりゃぁ改行コードも意味不明にぶっ壊れるしローカライズもわやくちゃになるわ。どのタイミングでローカライズの変換走ってんだよ。どのタイミングでログ吐き出してんだよ。
悪い意味で超納得した。ツールを作るのが馬鹿馬鹿しいほど腐ったプログラムだ。
ユーザービリティ云々より遥か以前の問題でローカライズに反対する。
ていうかその、「昨日の俺は別人」を地で行く変数の命名でローカライズを進めるつもりなのか...救えねぇ...。それともこのあたりのコードは自動生成だというならわからんでもないか。

さらに追記:
UTF-16 対応の fgetln(3) を自力でナントカして、文字コード判定機能付きのライブラリを使うのがいいのかなぁ...。
そもそも UO が真っ当なファイル吐き出してくれれば何の問題もないんですが!