Half-Life: Bot

Half-Life: Bot というのを始めた。 Half-LifeNPC (non-player character) を作ったわけではない。 いや、そういうのも、作ろうと思えば作れるかも知れないが(最近疲れてしまってその方面は休止中)、 今回作ったのは twitterbot で、セリフは half-life 2 とか portal とか counter-strike に出てくるやつ。 もしかすると、Left 4 Dead もセリフのデータ抜き出せるのかもしれんが、 L4D は私はほとんどやらないし興味もないのでやってない。

gcfscape などを配布しているnem's tools というサイトが消滅したのかと思ったら普通に動いていた。 ともかくめでたい。

それで、Portal とか Half-Life 2 とかは gcfscape で .gcf という書庫ファイルから resource というフォルダにある closedcaption_japanese.txt とか subtitles_japanese.txt とかそういうのを抽出してくれば、 セリフのデータがまるごと入手できる。 それをちゃちゃっと Ruby かなんかで正規表現でセリフ部分だけ抜き出して、 短すぎるやつとか 140字以上の長さのは捨ててランダムに twitter でつぶやけばよい。 Ruby に Rubytter というライブラリがあるらしいんで、それをさくっと使う。 twitter で OAuth とかも昔ちらっとやったのでだいたいすぐわかった。

それはそうと twitter のすべての APIXML (RSSAtom を含む)のサポートをやめて JSON に統一するそうだ。 それは良いとしてすべての API において OAuth を必要とするようになるらしい。 めんどくさくてとても困ります。 少なくとも授業で学生にいちいち twitter のアカウント取らせて OAuth でなんとかキーとかなんとかキーとか取得させてとかって教えるのはもう勘弁って感じです。 ゼミ生でやりたいというやつがいれば教えてあげるが、そういうのは自分で勉強しても大したことではないし。

そんで話は戻るが日本語のキャプションもあって日本語の140字の方が英語の140字よりはるかに情報量が多い。 当たり前だが、しかしどうも日本語に訳した台詞には元の英語のような味がない。 わかりやすく意訳してあって意味をわかるには良いのだが、雰囲気がなかなかでない。 で、英語のBotにしたのだけど、あまりフォロワーが増えないのよねえ。

でさらに話は戻るが、 Portal 2 はなんと .gcf を使ってないんですよ。 台詞関係に関して言えば、 steamapps\common\portal 2\portal2\resources 辺りに入っている。 なんか仕様が根本的に違っているらしい。 steamapps\common\ の中には、steam以外で開発されてsteamに移植されたと思われるゲームのデータが入っていることが多いのだが、 source sdk で出来てる portal 2 や cs:go まで入っているとは意外だった。 これからは common の方に統一しようというのだろうか。 ここでは .gcf ではなく .vpk という書庫ファイルが使われている。 こいつの使い方もよくわからん。

half-life 2 以前のゲームにはそもそも closed caption とか subtitle というものがない。 字幕がないわけだ。 だからテキストファイルも存在しない。 耳で聞いて文字を起こせるほどヒアリングに自信がない。 いろんなサイトからかき集めてきているけどね。 台詞を羅列しているサイトはいくらでもあり、まあ特に著作権的にうるさく言われることはないと思われる。