このゲームの調査はリリース直後に一度試みたのですがフォントの座標情報が見つからず頓挫していました。今回、「お~るげーむず(仮)」さんから座標関連の情報を頂いたので再度調査してみたいと思います。
「お~るげーむず(仮)」
https://agk.saloon.jp/
■はじめに
Fallout Shelter は Bethesda Game Studios が開発したストラテジーゲームらしいです。英語が読めないので触りしかプレイはしていませんが・・・
■ゲームエンジン
Unity を使用していますがバージョンは不明です。
また、調査するゲームのバージョンは「1.13.8」です。
■使用ツール
1.falloutshelter_texttools
このツールの詳細については下記のフォーラムを参照ください。
「Fallout Shelter localization files - ZenHAX」
http://zenhax.com/viewtopic.php?t=2770
なお、このツールはいくつかのウィルス対策ソフトでウィルスとして認識されていますので、実行するのは危険です。
このツールの使用によって発生するいかなる損害に対しても筆者は責任を負いません。使用する場合は自己責任のもとに使用してください。
このツールにはソースコードが同梱されていますので、ソースファイルを確認後、AutoIT を使用して自分でコンパイルしてから使用するのが良いと思います。
「Home - AutoIt」
https://www.autoitscript.com/site/
■翻訳対象テキスト
ゲームバージョン(1.13.8)では「resources.assets」内の「resources_00001.-8」に翻訳対象ファイルがあります。「falloutshelter_export.exe」でテキストファイル化し翻訳、「falloutshelter_import.exe」で翻訳結果を取り込むことができます。テキストファイルの文字コードはUTF-8N(UTF-8 BOMなし)で、改行コードはCRLFでです。
■フォント
このゲームではフォントテクスチャーと座標情報を元に文字を表示しているようです。
1.フォントテクスチャーと座標情報
このゲームで使用しているフォントテクスチャーと座標情報は次のとおりです。
・monofonto_0.tex と resources_00001.-20(座標情報)[25120 bytes]
細めのフォント。これはロシア語などで使用されているキリル文字でしょうか?
細めのフォント。これはロシア語などで使用されているキリル文字でしょうか?
「キリル文字一覧 - Wikipedia」
https://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%AA%E3%83%AB%E6%96%87%E5%AD%97%E4%B8%80%E8%A6%A7
・futura_0.tex(フォント)と resources_00002.-20(座標情報)[14260 bytes]
太めのフォント。西欧で使用されている文字(Windows-1252)でしょうか?
太めのフォント。西欧で使用されている文字(Windows-1252)でしょうか?
「Windows-1252 - Wikipedia」
https://ja.wikipedia.org/wiki/Windows-1252
2.座標情報
AssetBundleExtractor (UABE) を使用し、フォントの座標情報を調べます。
UABEでは「Name」は「MonoBehaviour」になってしまい、どれがどれなのかわかりませんので、サイズをヒントに探します。今回は Size=14260 のものを探します。
「View Data」ボタンを押し、「Asset Data」画面を開きます。
前半部分 |
後半部分 |
調査結果は、Gist にアップしました。
「フォントの座標情報(futura_0.tex)」
https://gist.github.com/synctam/e0753bd5306947c473c4abba4c6b9311
3.フォントの作成
調査結果を元にフォントテクスチャーと座標情報を作成します。今回はビットマップフォント作成ツール「BMFont v1.13」を使用します。(BMFont v1.14 beta では上手く作成できなかった)
「BMFont - AngelCode.com」
http://www.angelcode.com/products/bmfont/
3.1.日本語フォントの準備
今回は M+ FONTS の「mplus-2p-regular.ttf」を使用し、使用する文字の種類は、以前作成した「PoE2JoFont_mp2pr.txt」を使用します。使用するフォントは予めWindowsにインストールしておきます。
「PoE2JoFont_mp2pr.txt」
https://gist.github.com/synctam/5c79356cc60a7ee0ba99feb0f0f5f2a0
フォントの設定
「BMFont」を起動し、「Font Settings」と「Export Options」を次のように設定します。
次に、使用する文字の種類を指定します。
メニューの [Edit]-[Clear all chars in font] で、一度、登録文字をクリアします。その後、[Select chars from file] で「PoE2JoFont_mp2pr.txt」を読み込みます。なお、読み込むファイルは文字コードが「UTF-8 BOM付き」で改行コードは「CRLF」である必要がありますので注意してください。エラーメッセージが出なければOKです。
フォントテクスチャーの確認
メニューの [Options]-[Visualize] で正しくビットマップフォントができたかを確認します。全文字が一枚の画像に収まっていればOKです。
フォントのセーブ
メニューの [Options]-[Save bitmap font as...] で名前をつけて保存します。今回は「FSJpFont」にしてみました。これで、次のようなファイルが作成されます。
- FSJpFont_0.png --- フォントテクスチャー
- FSJpFont.fnt --- フォントの座標情報
3.2.フォントテクスチャーをDDSに変換
後で UnityEX で取り込めるように、フォントテクスチャーの形式をDDS(DXT5)に変換します。今回はフリーのペイントソフト「Paint.NET」を使用し変換しました。
「Paint.NET - Free Software for Digital Photo Editing」
https://www.getpaint.net/
保存の設定は次のとおりです。
3.3.フォント座標情報の差し替えツールの作成
フォントの座標情報は大きく分けて、次のようになっています。
- フォントの各種設定情報の先頭部分(ヘッダー部)
- 各文字の座標情報(座標部)。カーニング情報を含む。
- フォントの各種設定情報の末尾部分(フッター部)
ツールの処理手順としては
- オリジナルの座標情報を読み込み、ヘッダー部分の転記と修正。
- BMFont で作成した「FSJpFont.fnt」を読み込み座標部を生成。
- オリジナルの座標情報を読み込み、フッター部分を転記。
- 結果を出力。
3.4.フォントテクスチャーと座標情報の差し替え
実際にツールを作成して、フォントテクスチャーと座標情報を差し替えてみましたが、Runtime Error が発生し、ゲームを起動できませんでした。
そこで、オリジナルの座標情報を確認してみたところ、Windows-1252 の文字以外に記号やアイコンがあり、それぞれに独自の文字コードが割り振られていました。これらの文字コードには本来は漢字コードに割り振られている部分もあり、単純に座標情報を差し替えるだけでは上手くいかないことがわかりました。
とりあえず、最低でもオリジナルで使用している文字を網羅することが最優先の課題です。
つづく・・・
日本語でプレイしたいので続き気になります。。英語だとクエストなどの会話がさっぱりわからなくてもったいないので。
返信削除NGUIはフォント画像にアトラス化した物を利用していてフォント定義体と画像以外にも修正が必要で面倒臭かったような…
返信削除ゲームで使われているフォントはFontManagerクラスが管理する物をテキスト用の部品(UILabel)が取得する処理になっていますが、FontManagerには画像フォントとアウトラインフォントの両形式が格納され、UILabelのフォント取得処理は画像フォントが無ければアウトラインフォントを利用するようになっているので、画像フォントを用意せずともFontManagerの画像フォントの定義(UIFontの配列)を消すだけで日本語の表示は出来そうに思います。
FontManagerのデータはresources.assetsの#10098ですので、未だ調べているので有ればご確認を。
現在、別のゲーム(Pillars of Eternity 2)の日本語化ツールの作成で手一杯の状態で、調査が中途半端になっています。
削除落ち着いたら調査を再開したいと思っていますが、かなり先になりそうです。
それと、NGUIに関しては全く知識がないので、頂いた情報を元に調べれたらいいな、と思っています。
情報ありがとうございました。