Unity製のPCゲームを自動翻訳しながらプレイできるXUnity.AutoTranslatorの導入と使い方を、「The Silent Age」の日本語化作業を通して説明する記事です。
導入の流れをざっくり説明すると、必要ファイルをダウンロードして、ゲームフォルダに貼り付けて、その後個別にいろいろ設定して、、、という流れです。
Unity製ゲームを自動翻訳
XUnity.AutoTranslatorは、Unityエンジン上で実行されるゲームのテキストを自動翻訳してくれるツールです。
オープンソースで公開されているため、誰でも自由に、無料で使うことができます。
仕組みとしては、ゲームのテキストデータを読み取って、オンライン翻訳サービスにかけたものをリアルタイムで置き換えて表示するという内容になっています。そのため、インターネットの接続が必須となります。
- XUnity.AutoTranslatorをダウンロード
XUnity.AutoTranslator-ReiPatcher
- フォントをダウンロード
TMP_Font_AssetBundles
- ゲームフォルダにDLしたファイルを貼る
- パッチを当てる
- Config.iniの設定
- ゲームに合わせた調整
- 翻訳テキストの編集
翻訳したいゲームがUnityか確認する
XUnity.AutoTranslatorは、Unity製のゲームのみで動作します。
対象のゲームがUnity製かどうかは、一般的にストアページで判断します。なければPCGamingWIKIか、SteamDBで確認することができます。
それでもわからない場合は、コミュニティページを利用するか、製作者本人に聞くのが確実でしょう。
必要ファイルをダウンロードする
まずは「TMP_Font_AssetBundles」と「XUnity.AutoTranslator-ReiPatcher」をダウンロードします。
ゲームフォルダにDLしたファイルを貼る
ダウンロードして解凍して出てきたファイルを、自動翻訳したいゲームの「.exe」があるフォルダに貼り付けます。
ゲームフォルダの場所が分からない場合は以下を参考にしてください。
Steamの場合
「ゲーム名を右クリック」→「管理」→「ローカルファイルを閲覧」
Epicの場合
「ライブラリ」→「…」→「管理」→「フォルダのアイコン」
パッチを当てる
SetupReiPatcherAndAutoTranslator.exeを実行しましょう。
すると同名の「Patch and Run」というファイルが出来ていると思いますので、それを再度実行します。
ゲームが起動したら、画面を閉じて、導入は完了です。
これからは普通に元のアプリケーションから起動しましょう。
導入はこれで終わりで、ここからは
Config.iniの設定
ゲームフォルダに「AutoTranslator」というフォルダができているので、そこの「Config.ini」を開きましょう。
使用するアプリはメモ帳で大丈夫です。
開いたら、以下のように書き換えてください。
[General]
Language=ja
FromLanguage=en
上は翻訳した後、下は翻訳する前の言語です。初期は逆になっているので入れ替えます。
[Behaviour]
MaxCharactersPerTranslation=2000
OverrideFontTextMeshPro=arialuni_sdf_u2019
FallbackFontTextMeshPro=arialuni_sdf_u2019
上は翻訳するテキストの最大文字数です。初期は200で最大2500まで設定できます。
下は書き換える際のテキストの日本語フォントです。今回は2019でやってますが、ダメなら2018を使ってみるなど各自工夫してください。
編集が終わったら、必ず保存してからゲームを起動します。
ゲームに合わせた調整
普通なら、これで自動翻訳が始まるのですが、「The Silent Age」の場合、翻訳されませんでした。
ゲーム画面で「ALT-0」で押してUIをみてみると、Translated(ALT+T)にチェックがついているので動作はしているはずですが、翻訳はされてませんね。
いろいろ試した結果、以下をFalseからTrueに書き換えたらうまくいきました。
[TextFrameworks]
EnableTextMesh=True
少し時間を置いてから翻訳されました!
たまに画面外までテキストが飛び出していくことがあったので、強制的に改行させる設定も途中で追加しました。
[Behaviour]
ForceSplitTextAfterCharacters=40
自分はプレイしながら30~60の間で調整していった感じです。
これで複数行で表示されるようになりましたが、動作は不安定になりました。状況によっては空欄のほうがいい時もあります。そこらへんはプレイしながら臨機応変に。
一応導入するだけならこれで完了です。
翻訳テキストの編集
翻訳されたテキストは「AutoTranslator」→「Translation」→「ja」→「Text」→「_AutoGeneratedTranslations.txt」に記録されていきます。
XUnity.AutoTranslatorのすごいところは、生成された翻訳テキストを後から手動で修正できることです。
試しに一部分変えてみましょう。
書き換えて保存したら、「ALT+R」で翻訳テキストを再読み込みしましょう。ゲーム再起動でもおkです。
うまくいきました。
DeepL翻訳の使用
このように1個1個訂正していくのも悪くないと思いますが、もっとも手っ取り早いのは、よりクオリティの高い翻訳ツールを使うことです。
デフォルトでは、以下のように、Google翻訳を使うように設定されています。
[Service]
Endpoint=GoogleTranslateV2
そこで翻訳に定評のあるDeepL翻訳を使ってみましょう。以下のように書き換えます。
[Service]
Endpoint=DeepLTranslate
ゲーム起動後、「ALT+0」でUIを開いて「DeepL」となっていたらおkです。
先程の文章を「_AutoGeneratedTranslations.txt」から削除して、イチから翻訳してもらいます!
どうでしょうか? DeepL翻訳のほうがGoogle翻訳より自然な感じがしますね。
しかしDeepLには「遅くて不安定」という欠点があります。
Google翻訳の場合は、数秒といわず2,3秒で翻訳される感じですが、DeepLの場合は、5~6秒近い待ち時間がありました。
テキストが少なかったり、動きの少ないゲームならいいのですが、今回例に挙げている「The Silent Age」は読み物ゲーで、文字も自動で引っ込む仕様なため、遅すぎる自動翻訳は使いにくいです。
DeepL APIを使う
そこで、より応答性の高いDeepL APIを使ってみます。
普通のDeepLとの比較は以下の通りです。
ポイントは無料で使えるが制限があるところです。有料オプションもありますが、個人で使う分には無料で事足りると思います。
登録はDeepL公式サイトから行います。注意点として、無料の利用であっても、本人確認のためにクレジットカードの登録が必須です。またクレジットカードならなんでもいいわけではないので、そこに関しても注意が必要です。
登録が終わったら、アカウントページ下の「DeepL APIで使用する認証キー」からキーをコピーして、Config.iniの指定箇所に貼り付けます。
Freeの欄をTrueにしておくことも忘れずに。
[DeepLLegitimate]
ExecutableLocation=空欄でおk
ApiKey=:fxで終わるキー
Free=True
また1番上の使用する翻訳サービスのところもAPI用に書き換えます。
[Service]
Endpoint=DeepLTranslateLegitimate
そしたらまたゲームを起動し、自動で翻訳されているのを確認します。
その後でDeepL公式サイトから「アカウント」→「ご利用状況」で「ご利用文字数」が増加していたらおkです。
今回導入した「The Silent Age」も、2~3秒で翻訳されるようになって、快適にプレイできるようになりました。
何か翻訳に問題があったり、テキストが読みにくいときは、「ALT+T」で翻訳オン・オフの切り替えができるので、諦めて原文を読みましょう。
今回はここまで。
海外PCゲームがより身近に
Unityで動くゲームってこんなにあるんですね!
自分の世界が広がったような気がします。日本語化がされていないために見逃したゲームもありますし、どうせ日本語化が来るまで何もできないからと見向きもしなかったゲームもたくさんあります。これからは見逃したゲームも遊べるし、積極的にゲームを探す喜びも生まれますね。いやーこれは素晴らしいものだ。
最後に、導入にあたって、特に参考になったページを紹介します。
MiyabiSFG様
ゲーマーズボックス様
お~るげーむず(仮)様
しゃるる様(技術とゲームと酒と本と)
藤依ひな様(人形は四畳半で夢を見る)
コメント
こんにちは。
質問があってコメントしました。
行程としては「パッチを当てる」の途中までは成功したのですが、Patch and Runをクリックしてゲームが起動してもAutoTranslatorが生成されません。これは対応していないゲームということでしょうか?
ゲームタイトル名「Faeland」
※(unity製と確認済み)
パッチを適用してもフォルダが生成されない問題。自分もありました。
おっしゃるとおり対応していないゲームだと思います。Unityだからといってすべてのゲームで動作するわけではありません。
自分だったら、MelonloaderとBepInExを試してみて、どちらもダメだったら諦めます。
コメントありがとうございました。