2017年1月29日日曜日

Theme Hospital + CorsixTH 0.6 ゲームテキストの和訳

誰からも望まれていませんし、例によって需要もあるとは思えませんが、Theme Hospital + CorsixTH 0.6 ゲームテキストを日本語に訳してみました。
  • 日本語化済みファイルはこちら
    クリックいたしますと、ja_JP.lua というファイルがダウンロードされます。
    ご利用にはファイルを CorsixTH/lua/language ディレクトリにコピーしてゲームを起動し、設定から日本語を選択してください。
  • 作業シートはこちら
    機械翻訳がほとんどですので、原文と比較したり自分流に訳す場合にコピーしてご利用ください。
です。よろしければご利用ください。

以上です。

以下たわごとです。

いつだったか、相当前にOriginからのプレゼントということで無料配布されていたテーマホスピタルというゲームがあったのを思い出して、先の金曜日、初めて起動してみました。

まーなんというか、さすがに古いゲームだけあって画面は小さいし文字も汚いし英語だし、ということで起動直後にそっと閉じてしまいました。

しかしながら、せめて日本語化できれば違う印象を持つかもしれないと思いまして、ざっくりgoogleで検索したところ、本体の日本語化はないようですが、こちらのMiyaoka Noteさんというサイトで紹介されている自称"re-implement the game engine of Theme Hospital"とはばかりなく言い切るCorsixTHという存在を知りました。Miyaoka Noteさんは2012年にCorsixTHの日本語化を行なっておいでで、その成果物はgithubで公開なさっておいでです。

そこで、これは渡りに船、とばかりにさっそく使用させていただいたのですが、あまりゲーム内テキストが日本語化されません。

ちょっと失礼ではありますが正直がっかりして、せっかくいただいたので言語定義体をエディタで見てみると、これって定義体というよりLua言語で書かれたプログラムで、文字列を直接の変数に突っ込んでるという強烈な仕様だということを知ってびっくりしました。
これはおそらく、言語ファイルを作成された後で参照される変数名が変わったとか、いろいろあったのでせっかくの日本語データがゲームに反映されないのかもしれません。

とは申せ、仕組みとしては変数の値を変えるだけ、という設計方針はわかりましたので、それなら変数名と代入されている英文が分かれば全翻訳可能という理屈になります。単純明快です。

そこで、毒を食らわば皿まで、ではありませんが、土曜日にちょっとやってみようと思い立ちました。

で、そうなると、今度はどうやって訳元の英文データを入手すればいいのかを調べてみますと、公式で解説されていましたので、さっそく生成してみますと、Luaではテーブルというようですが、表現形式としてはC言語でいう構造体のような感じで定義されており、一つ一つ構造体名とメンバ名にバラすのもまとめるのも簡単なスクリプトを書けばすぐできるということが分かりました。

なぜバラバラにしようとするかというと、私がこれまで行ってきたゲームなどの翻訳シートと同一の形式にし、かつ訳文と原文をいつでも対比できる形式に変換したいからです。

この形式のメリットは、原文と訳文が一対一で参照や再翻訳がしやすく、しかも原文を複数行、まとめてgoogle翻訳さんやWeblio翻訳さんなどにコピーすれば、訳文がたちまち得られ、しかも翻訳結果は加工しなくてもそのままシートにキッチリ再ペーストできるという点にあります。
それに、ソースを直接いじるよりもはるかに作業がしやすい。いちいちソース単位でコミットしなくてもセル単位で更新履歴が残ります。これはきわめて大きなメリットです。

翻訳結果があまりにも頓珍漢だったら多少は手を入れますが、原則として一度シート化してしまえば、この通り私はせいぜいコピーとペーストしかすることがありません。

結果として土曜日中にluaソースから英文と変数名が対になったTSVファイルを作って、またluaソースへと戻す2本のスクリプトを書き、あとはただコピー&ペーストを繰り返すだけで完了し、日曜日にはある程度プレイして確かめることも含めて「概ねできました、よければどうぞ」などと言えてしまう寸法です。
本当にgoogle翻訳さんをはじめ、機械翻訳を使わせてくださる各社には感謝に堪えません。

折角Miyaoka Noteさんがおつくりになられたデータが現にあるのだから擦り合わせて取り込もうとも思ったのですが、どのバージョン用のデータかわからない、ほとんどゲームをやっておらずどの文章がどこで表示されるべきとされていたのか調べてすり合わせるよりgoogle翻訳にコピペしたほうが早い、といった理由で現時点では反映しておりません。
著作権の問題もありますし、公開するデータとして使用するには適さないということもあります。

ところで、CorsixTH側の問題なのですが、表示したい文字列が長すぎると、ゲームがクラッシュします

正確には、クラッシュというよりは間抜けにも64bitアプリなので際限なくメモリをどんどん食いつぶしていって、最後にはスラッシングを起こしてOSを巻き込んでくれます。

原因は単純で、すぐにわかりました。

横文字文化圏の人には単語ごとに空白を入れない言語があるということを知らないのでラインブレーク処理が完全に抜け落ちていて、できるわけがないのにどうにかしてワードラップできないかと延々処理を続けるからです。まあ、世の中にはマルチバイト文字があるということすら想定していないスバラシイ人たちも大勢いるわけで、この程度はどうというこたあありませんわね。Capitalism Labもそいつで苦労しましたし。

そんなわけで、訳文を自前で修正なさる方は表示される領域の大きさに合わせて自前でホワイトスペースを入れ、CorsixTHがラッピングできるようにしてやらなければなりません。

シートから作ったTSVからのluaソース生成スクリプトにはその辺を考慮したコードが入っており、スクリプトは冒頭にリンクいたしました作業シートにて「スクリプト2」として公開しておりますので、よろしければご利用いただければ幸いです。

作業シートには、クラッシュとなる原因となる訳文を特定する方法なども記載しておりますので、そちらもよろしければご参考に供せれば幸いです。

それにしても、機械翻訳でも何でも、母国語となるとドーンと印象が変わりますねぇ。
和訳が簡単そうだからという理由で手を付けてみましたが、ゲームも実際に面白そうです。
これからちょいちょい、プレイしてみたいと思います。

以上、駄文にお付き合いいただきまして、誠にありがとうございました。

2017年1月6日金曜日

The Guild II: Renaissance 4.211 + MegaModPack 0.82 のテキストを和訳してみた

*** 2019/01/12 追記 ***
あけましておめでとうございます。
MegaModPack 0.95用のテキスト和訳をしました。こちららどうぞ
*** 追記ここまで ***

あけましておめでとうございます。

本年もこのような場末で細々と恥をさらしたりしてまいる所存でございますので、どうかお見捨てなきようお願い申し上げる次第でございます。
(表題のテキストデータがお目当ての方は以下の駄文を無視して下にどんどんスクロールしてください)

さて、数年前に確か\98だかで買ったまま放置していた The Guild II: Renaissance というゲームがあったのを再発見して、年末にやってみましたところ、結構面白い。

そこで、世間様の評価はどうなのかと思って改めてこのゲームに関して調べてみたところ、バグだらけで満足に遊べないということで完全に見捨てられている模様です。

バージョン4.21で遊んでましたが、実際のところは致命的なバグは特になく、セーブデータが破損することもなく、突然CtDすることもなく、250年くらい継続して遊べました。ゲームの開始年が1400年ですので、さすがに同一の家系で1650年までプレイしていると飽きてしまいましたので別の一族で別マップでリスタートしましたが、継続していても全く不安を感じない安定感はありました。

肝心のゲーム内容としては、free willができない中世ヨーロッパ版Simsってところでしょうか。Sims2は屋内だけなので3が近いかもしれません。都市もマップ次第ですが最大3つ用意されています。
一族の人々は自発的には何もしないので、徹頭徹尾プレイヤーが一族の繁栄のために一族の中から最大で3キャラを操作していく必要があるため、放置して眺めるというプレイはできません。また、操作キャラから外すと二度とそのキャラは操作できなくなるので一族で都市の政治ポストを牛耳るといったようなプレイの場合に工夫が必要になってきます。

個人的には別に政柄なんぞまるで握りたくもないのですが、商売を一定規模以上に拡大するには肩書が必要で、一定以上の肩書を得るには国内で名が知られている必要があるのですが、その肩書を得るための条件を満たすために市長とか王など高位の役職をこなして社会に対して責任を果たし続ける必要があるというのが面倒ながらいかにも中世ラシイ感じです。
フリーウィルができればある程度利益を出し続けるチェーンを作ってしまえば見てるだけでシムどもがやらかす騒動を楽しめるのですが・・・

今年はこのゲームの続編の The Guild 3 が発売予定のようで気になりますが、おそらく前例からすると発売から数年はバグだらけで起動すら覚束ないありさまになって客を取り込めないまま下火になって話題にすらならなくなるのが落ちではないかと思われますので、これまた\98になったら購入してみるとして、The Guild II: Renaissanceでもプレイの幅は十分広いのですから3が捨て値になるまで十分遊べると思います。

そうなると、日本語化したくなるわけです。
先人がすでに和訳を行ってくれているのでそれを導入すればいいのですが、これはほぼ機械翻訳だけという状況で更新が停止しています。
需要がないうえに文書量が膨大なのでモチベーションが湧くわけがないことはテキストデータをみてよくわかりました。むしろ機械翻訳にかけてデータを公開するだけでも相当な手間がかかったはずです。ほとほと頭が下がります。愛を感じます。

そこで、先人への手向けとして折角フォントと、機械翻訳とは言えどもver4.211で使える訳文があるのですから、それにMegaModPack 0.82用の機械翻訳を追加してみました。
追加元はこちらで公開されておいでのtg2ルネサンス用のデータRenaissance20160127.zip(2016/01/27 Renaissance用,機械翻訳・職名変更)です。むろん、ご利用の際は同サイトで公開されておいでのフォントが必要です。
なお、Text.dbtはgoogle様によって音声データとして再生されようとする場合がありますが、ただのテキストですので何も聞こえません。そのままダウンロードしてください。

作業シートはこちらです。
過去の反省により、直接の編集はご遠慮いただいております。
ご利用くださいます場合はご自分のドライブにコピーするなどしてご利用ください。

ヘッダをつけて列A,B,Dを抜き出して整形してUTF16Lに変換するとText.dbtが出来上がる寸法です。整形例は文末にスクリプトサンプルを置いておきます。

シートの背景色が赤っぽいのは4.211からMegaModPack0.82で変更があった部分、深緑っぽいのは追加された部分です。その文量、引用元(追加元)とあわせて都合およそ17300文。
まあ自然な日本語になるように精査するなんて気になるわけがないですわな。
元データを作った人はほんとにつくづくすごい偉業を成し遂げられたと思います。

ま、だれのお役に立つかどうかはわかりませんが、こんな具合に比較しやすいシート化しておけば、自分が気に入らない訳文を変更するには便利かと思いますので敢えて公開させていただき、本年の年頭の辞とさせていただきたく存じます。

以上、それでは読者の皆様におかれましても、良い一年となりますようにお祈り申し上げます。