PC ゲーム Wasteland 3: Colorado Collection で日本語を表示する方法
PC ゲーム Wasteland 3: Colorado Collection の解析をして日本語を表示する技術的な手順を確立することができましたので、そのやり方を公開します。
本記事では日本語フォントの作成と置き換え、言語データの編集方法の内容で構成されています。日本語フォントの表示とテキストの書き換えができるようになっただけなので、翻訳作業は別途必要です。
Wasteland 3 では Unity ゲームエンジンの TextMesh Pro フォントが使われています。以前公開した PC ゲーム Syberia 3 で日本語を表示する方法 でも TextMesh Pro フォントが使われており、フォント作成・置き換えに関する内容もほぼ同じものとなっています。
ただ、PC ゲーム Syberia 3 日本語表示方法 ではフォント置き換え方法にバイナリエディタを使った編集方法を紹介していたため、手間がかかりめんどくさい内容でした。
今回の記事ではバイナリエディタを使わず、代わりにテキストエディタとテキスト置換ソフトで完結できる内容となっています。
今回の TextMesh Pro フォントに関する解析方法および日本語フォント入れ替え方法により、Unity ゲームでの TextMesh Pro フォントが原因で日本語化ができなかったゲームが、本記事の内容を活用することで日本語化を実現できる可能性が高くなるでしょう。
PC ゲーム Wasteland 3: Colorado Collection 基本情報
Wasteland 3 は 2016年に クラウドファンディング Fig にて Wasteland 3 の投資キャンペーンがスタート し、無事目標金額を達成して 2020年に各プラットフォームで発売されました。
上の画像は Wasteland 2 Collector's Edition Premium Boxed Version に続き、投資特典として受け取った Wasteland 3 Collector's Edition Box です。
その後 2021年に計画されていた 2つの DLC(TThe Battle of Steeltown と Cult of the Holy Detonation)がリリース、ゲーム本体と 2つの DLC を含む Wasteland 3 Colorado Collection のリリースをもって Wasteland 3 の開発は終了 となっています。
ローカライズについては 前作 Wasteland 2 では PS4 版のみ公式日本語版が発売 されていましたが、2022年6月時点では Wasteland 3 の公式日本語版は発売されていません。仮に国内で発売する場合、ゲーム序盤でいきなりグロ(欠損)シーンがあるので、これが規制できないと日本の審査機関で通すのは難しい感じがします。
Wasteland 2 では奇跡的に有志日本語化ファイルが公開 されましたが、Wasteland 3 は特にそのような活動しているという情報は 2022年6月時点では見つかっていません。
上の画像は 2020~2021年にかけてゲーム本編と Wasteland 3 中文化ファイル(ALI213 版) の解析を行い(この時解析で判明した仕様の一部)試行錯誤の末、DLC リリース前 Wasteland 3 バージョン 1.3.3.268169 で日本語フォントの実装に成功した時のスクリーンショットです。
当時、日本語フォントを作成した時の環境は Unity ゲームエンジン 2018.4.34f1(LTS)をインストール、デフォルトでインストールされていた TextMesh Pro Version 1.4.1 を利用しました。
スクリーンショットのテキストのほとんどは英語のままですが、フォントはこちらで作成した日本語フォントのものに置き換わっています。当初テキストデータのアンパックがうまくいかず書き換えることができませんでしたが、2021年に登場 した Unity 解析ツール UABEA とリバースエンジニアリングツール Il2CppDumper を使うことでテキストデータの書き換えにも成功しています。
この時点で TextMesh Pro 日本語フォント実装・bundle テキストデータ書き換えの解析・解説記事を作成しようといろいろと準備をしていましたが、2021年は Wasteland 3 が頻繁にアップデートしていたことと、上記の DLC 計画がアナウンスされたことにより、せっかくまとめた情報が古くなって使えなくなるのと、今後公開した記事内容の大幅な加筆修正が発生する可能性を考えて公開を控えていました。
2022年に Wasteland 3 のアップデートが落ち着いたところを見計らって、今回の Wasteland 3 日本語フォント実装・テキスト書き換え記事を新たに作成・公開という流れとなっています。
ちなみにこのゲームの解析実績のおかげで同じ TextMesh Pro フォントを採用している PC ゲーム Syberia 3 で日本語フォントの解析・実装がスムーズに成功、PC ゲーム Syberia 3 の日本語フォント実装解説記事 が先に公開できた形となっています。
PC ゲーム Wasteland 3: Colorado Collection 日本語表示テスト環境
今回、日本語フォントの導入と日本語表示テストするためにインストールした Steam 版 および GOG 版 Wasteland 3: Colorado Collection です。どちらの配信プラットフォームでも このあと紹介する日本語フォントファイルを導入 することで、日本語が表示できることを確認しています。
Steam 版 Wasteland 3 でインストール先フォルダを開きたい場合、Steam ライブラリからプロパティ画面を開き、ローカルファイルにある 「参照...」 ボタンをクリックすることでインストール先フォルダにすぐにアクセスできます。
または、Steam ライブラリでタイトルを右クリック → 管理 → ローカルファイルを閲覧、をクリックすることでインストール先フォルダを開くこともできます。
Wasteland 3: Colorado Collection 用日本語フォントサンプルファイル公開&インストール方法
TextMesh Pro フォントは以下参考サイトで公開されているフォントを使って作成しました。TextMesh Pro フォントはゲーム内で複数使われていますが、どのフォントがゲーム内で利用されているかわからないため、一応文字の違いがわかりやすいと思われるものを選んで作成しています。
Steam 版 および GOG 版 Wasteland 3: Colorado Collection のバージョン 1.6.9.420.309496 で日本語フォントが表示されるのを確認しています。
翻訳ファイルは含めていません。言語データのエクスポート方法については こちら、インポート方法は こちら で説明します。
フォントを作成したい方にはフォント解析情報を こちら と こちら と こちら で、TextMesh Pro フォントの作成方法は こちら で説明します。
Wasteland 3 ゲームインストール先 WL3_Data フォルダにある resources.assets・sharedassets1.assets・sharedassets2.assets ファイルに日本語フォントファイルを取り込むことで日本語表示を実現しています。あとで元のデータに戻したい場合は事前に 3つの assets ファイルをバックアップしておくか、ゲームの整合性チェック機能(Steam 版、GOG Galaxy 版)を使うことで元に戻せます。
Unity_Assets_Files フォルダがあるので、ゲームインストール先 WL3_Data フォルダに配置します。
以下、日本語フォントのインストール方法です。2種類のインストール方法があるのでいずれかの方法を実行します。1番目の方法はマウス操作で完結しますが、いくつか手順を踏む必要があります。2番目の方法はバッチファイル(.bat)作成・実行するので、一気にインストールできます。
Wasteland 3: Colorado Collection 用日本語フォントインストール方法その 1。
WL3_Data フォルダにある resources.assets ファイルを UnityEX で開きます。
UnityEX で resources.assets ファイルを開いたら Import files ボタンをクリックしてインポートします。
続けて同じように WL3_Data フォルダにある sharedassets1.assets ファイルを UnityEX で開きます。
UnityEX で sharedassets1.assets ファイルを開いたら Import files ボタンをクリックしてインポートします。
最後に WL3_Data フォルダにある sharedassets2.assets ファイルを UnityEX で開きます。
UnityEX で sharedassets2.assets ファイルを開いたら Import files ボタンをクリックしてインポートして完了です。
Wasteland 3: Colorado Collection 用日本語フォントインストール方法その 2。
WL3_Data フォルダに UnityEX.exe ファイルと空の bat ファイル(ファイル名は任意)を新規作成して配置します。
bat ファイルには以下のバッチスクリプトをコピー&ペーストして保存後、bat ファイルを(PC 環境によっては管理者権限で)実行して Unity_Assets_Files フォルダにあるファイルをまとめてインポートします。
UnityEX.exe import resources.assets
UnityEX.exe import sharedassets1.assets
UnityEX.exe import sharedassets2.assets
pause
複数あるオリジナルの TextMesh Pro フォントデータから、文字数が多い日本語フォントデータに差し替えているため、ファイルサイズが大きくなっています。これによりゲーム中のメモリ使用量が増えてしまう点に注意してください。
以下、PC ゲーム Wasteland 3: Colorado Collection - UnityEX インポート用 TextMesh Pro 日本語フォントと MonoBehaviour ファイルと Material ファイル(PC-Wasteland3-Colorado-Collection-1_6_9_420_309496-Unity2019_4_4-TextMeshPro-JPFont-UnityEX-Import-assets-20220513.7z) インポート後のスクリーンショット(55枚)を公開します。翻訳していないため字幕テキストは英語のままです。ゲーム内テキストの編集方法については こちら で説明します。
ゲーム内に登場するレンジャー名を日本語化する PC ゲーム Wasteland 3: Colorado Collection - UnityEX インポート用レンジャー名日本語化(PC-Wasteland3-Colorado-Collection-1_6_9_420_309496-RangerName-UnityEX-Import-assets-20220529.7z) を公開します。
上記の TextMesh Pro 日本語フォントを導入している必要があります。レンジャー名に関しては 言語ファイル とは別に管理されている点に注意してください。
インポート方法は TextMesh Pro フォントと同じでダウンロードしたファイルを展開・解凍後、WL3_Data フォルダに Unity_Assets_Files を配置します。
すでに TextMesh Pro 日本語フォントインポート用の Unity_Assets_Files フォルダが存在している場合、そのままフォルダを上書きして問題ありません。上書きするのはフォルダのみでファイルの上書きはありません。
WL3_Data フォルダにある sharedassets1.assets ファイルを UnityEX で開きます。
UnityEX で sharedassets1.assets ファイルを開いたら Import files ボタンをクリックしてインポートしてレンジャー名の日本語化完了です。
レンジャー名の編集方法については こちら で説明します。
以下、レンジャー名を日本語化したスクリーンショットを公開します。
PC ゲーム Wasteland 3: Colorado Collection フォント解析・言語データ情報
ここでは Wasteland 3 で解析・エクスポート・インポートに必要な一部のファイルを用意する方法と、TextMesh Pro フォントの解析および言語ファイルとレンジャー名を編集する方法を解説します。
ちなみに別の PC ゲームですが 5ch の Solasta: Crown of the Magister スレ に匿名の方が作成した TextMesh Pro 日本語フォントが公開されています。このゲームは所持していないためオリジナルとの比較はできませんが、ファイル名を見る限りおそらく今回解析した内容と作成した TextMesh Pro 日本語フォントと共通する点があるかと思います。
Il2CppDumper でアセットファイルの解析・エクスポート・インポートに必要な dll ファイルを生成(UABEA fifth release 以降は不要)
UABEA fifth release(2022/11/19)から Il2Cpp をサポートしたため、最新版 UABEA を使う場合は Il2CppDumper を使った dll ファイル生成は不要となりました。
Il2Cpp をサポートしていない AssetStudio や UABE 2.2 stable d を使う場合は引き続き Il2CppDumper で dll ファイルの生成・配置が必要です。
Unity ゲームを解析したりアセットファイル(MonoBehaviour や Material)をエクスポート・インポートするには、~_Data フォルダに dll ファイルが含まれている Managed フォルダが配置してある必要があります。
ですが一部のゲームでは Managed フォルダではなく、代わりに il2cpp_data フォルダが配置されていることがあります。この状態では AssetStudio や UABE 2.2 stable d および UABEA を使った解析ができないうえに、アセットファイルのエクスポート・インポートが正常に処理できません。(参考情報)
この問題を解決するには Il2CppDumper というリバースエンジニアリングツールを使います。
Il2CppDumper で解析に必要な dll ファイルを生成して Managed フォルダに dll ファイルを配置することにより、AssetStudio・UABE 2.2 stable d・UABEA を使って解析およびアセットファイルのエクスポート・インポートできるようにします。
以上のことから(2022年6月時点では)il2cpp_data フォルダがある Unity ゲームでは、アセットファイル(MonoBehaviour や Material)の解析・エクスポート・インポートするためには、Il2CppDumper による dll ファイル生成・配置作業は必須となっています。
Il2CppDumper をダウンロードして適当な場所に展開・解凍します。
複数のバージョン(net5、net6、表記なし)がありますが今回は Il2CppDumper-v6.7.19.zip を使用しました。基本的に最新版で問題ないかと思います。
Il2CppDumper.exe ファイルがあるので実行して次の開く画面で dll 生成に必要なファイルを指定します。
最初の開く画面では Il2Cpp binary file を指定します。
これはゲームインストール先フォルダにある GameAssembly.dll ファイルを選択して開きます。
次に開く画面では global-metadata.dat ファイルを指定します。
WL3_Data\il2cpp_data\Metadata
フォルダに global-metadata.dat ファイルがあるのでこれを選択して開きます。
コマンドプロンプト画面が開き dll ファイル生成処理を開始します。
しばらく時間が経過すると処理が完了するのでキーボードのキーを押すか×ボタンをクリックして画面を閉じます。
DummyDll フォルダに生成された dll ファイルが格納されています。
DummyDll フォルダを Managed フォルダにリネーム(名前変更)します。
ゲームインストール先 WL3_Data フォルダに、Il2CppDumper で dll ファイルを生成・格納した Managed フォルダを配置して完了です。
AssetStudio を使ってアセットファイルを開き、解析できるかどうか確認します。
ここでは Asset List タブを開き SDF で検索し、TextMesh Pro の MonoBehaviour ファイルを選択してみます。
Select Assembly Folder 画面が開くので WL3_Data フォルダに配置した Managed フォルダを開き、フォルダーの選択ボタンをクリックします。
画面右側の Preview タブに MonoBehaviour の内容が問題なく表示されることが確認できます。
Select Assembly Folder 画面でManaged フォルダを選択しなかった(キャンセルした)場合は 10行程度しか表示されません。
Managed フォルダがあれば UABE 2.2 stable d でも解析・エクスポート・インポートが可能ですが、アセットファイルを開くたびに Get script information の実行が必要です。Get script information 実行後の開いたダイアログ画面で都度キャンセルボタンを押す必要があります。Wasteland 3 の場合キャンセルボタンは十数回押す必要がありますが、これはゲームによってキャンセルする回数が異なります。
2021年の解析時は UABE 2.2 stable d を使っていましたが、UABEA の登場により Get script information の実行が不要となって使いやすくなっています。
そのためこの記事では UABEA を使った解析・エクスポート・インポート方法で説明します。
UnityEX で TextMesh Pro フォントテクスチャ(dds)エクスポート方法
UnityEX で TextMesh Pro フォントテクスチャファイル(dds)をエクスポートしてみます。
エクスポートした dds ファイルは使うことはありませんが、作成した TextMesh Pro 日本語フォント を UnityEX でインポートする際に必要なフォルダ生成と dds ファイル名を取得するためで、ゼロから解析する場合には必要な作業となります。
UnityEX インポート用 TextMesh Pro フォントサンプル はこの作業を行うことで UnityEX でインポートできるようにしてあります。
Wasteland 3 の TextMesh Pro フォントテクスチャファイル(dds)は AssetStudio でアセットファイルを開き、Asset List タブで SDF で検索することで見つかる Type 列の Texture2D ファイルが該当します。
WL3_Data フォルダにある resources.assets ファイルを UnityEX で開きます。
#615 LiberationSans SDF Atlas.tex・#616 FiraSans-Medium SDF Atlas.tex を選択して右クリックで Export with convert or Raw を選択します。
WL3_Data\Unity_Assets_Files\resources\Textures\res_resources
フォルダにエクスポートされた LiberationSans SDF Atlas.tex.dds ファイルと FiraSans-Medium SDF Atlas.tex.dds ファイルです。
WL3_Data フォルダにある sharedassets1.assets ファイルを UnityEX で開きます。
#239 authority-regular SDF Atlas.tex・#240 Oswald-Medium SDF Atlas.tex・#562 FiraSans-Medium SDF Atlas.tex・#563 tolyerno4-medium SDF Atlas.tex を選択して右クリックで Export with convert or Raw を選択します。
Unity_Assets_Files\sharedassets1\Textures
フォルダにエクスポートされた authority-regular SDF Atlas.tex.dds ファイルと Oswald-Medium SDF Atlas.tex.dds ファイルです。
WL3_Data\Unity_Assets_Files\sharedassets1\Textures\res_sharedassets1
フォルダにエクスポートされた FiraSans-Medium SDF Atlas.tex.dds ファイルと tolyerno4-medium SDF Atlas.tex.dds ファイルです。
WL3_Data フォルダにある sharedassets2.assets ファイルを UnityEX で開きます。
#175 Roboto-Regular SDF Atlas.tex・#176 FiraSans-Regular SDF Atlas.tex を選択して右クリックで Export with convert or Raw を選択します。
#177 MACHINE REGULAR SDF Atlas.tex がありますが、対応する MonoBehaviour ファイルが見つからなかったのでおそらく使われていないフォントだと思われます。
Unity_Assets_Files\sharedassets2\Textures\res_sharedassets2
フォルダにエクスポートされた FiraSans-Regular SDF Atlas.tex.dds ファイルと Roboto-Regular SDF Atlas.tex.dds ファイルがエクスポートされます。
以下、Wasteland 3: Colorado Collection バージョン 1.6.9.420.309496 で使用されている TextMesh Pro テクスチャフォント(dds)をリストにまとめました。
- resources.assets
- (UABEA: Path ID、UnityEX: #)615 - LiberationSans SDF Atlas.tex
- TextMesh Pro フォントテクスチャ縦横サイズ - W1024xH1024
- (UABEA: Path ID、UnityEX: #)616 - FiraSans-Medium SDF Atlas.tex
- TextMesh Pro フォントテクスチャ縦横サイズ - W1024xH1024
- (UABEA: Path ID、UnityEX: #)615 - LiberationSans SDF Atlas.tex
- sharedassets1.assets
- (UABEA: Path ID、UnityEX: #)239 - authority-regular SDF Atlas.tex
- TextMesh Pro フォントテクスチャ縦横サイズ - W1024xH1024
- (UABEA: Path ID、UnityEX: #)240 - Oswald-Medium SDF Atlas.tex
- TextMesh Pro フォントテクスチャ縦横サイズ - W512xH512
- (UABEA: Path ID、UnityEX: #)562 - FiraSans-Medium SDF Atlas.tex
- TextMesh Pro フォントテクスチャ縦横サイズ - W2048xH1024
- (UABEA: Path ID、UnityEX: #)563 - tolyerno4-medium SDF Atlas.tex
- TextMesh Pro フォントテクスチャ縦横サイズ - W1024xH1024
- (UABEA: Path ID、UnityEX: #)239 - authority-regular SDF Atlas.tex
- sharedassets2.assets
- (UABEA: Path ID、UnityEX: #)175 - Roboto-Regular SDF Atlas.tex
- TextMesh Pro フォントテクスチャ縦横サイズ - W1024xH1024
- (UABEA: Path ID、UnityEX: #)176 - FiraSans-Regular SDF Atlas.tex
- TextMesh Pro フォントテクスチャ縦横サイズ - W2048xH1024
- (UABEA: Path ID、UnityEX: #)177 - MACHINE REGULAR SDF Atlas.tex
- MonoBehaviour ファイルが見つからないためおそらく未使用フォント?
- TextMesh Pro フォントテクスチャ縦横サイズ - W1024xH1024
- (UABEA: Path ID、UnityEX: #)175 - Roboto-Regular SDF Atlas.tex
UABEA で TextMesh Pro の MonoBehaviour、Material テキストデータエクスポート方法
UABEA で TextMesh Pro の MonoBehaviour と Material データをテキストデータとしてエクスポートしてみます。
Wasteland 3 の TextMesh Pro の MonoBehaviour と Material ファイルは AssetStudio でアセットファイルを開き、Asset List タブで SDF で検索することで見つかる Type 列の MonoBehaviour と Material ファイルが該当します。
ちなみにファイル名が SDF Material となっている Material ファイルのエクスポート不要です。(後述)
UABEA を使用する場合、WL3_Data フォルダに Il2CppDumper で生成した dll ファイルを格納した Managed フォルダを配置 してある必要があります。
WL3_Data フォルダにある resources.assets ファイルを UABEA で開きます。
PathID 3 と PathID 4、PathID 4186 と PathID 4190 を選択して Export Dump ボタンをクリックします。
Export Dump ボタンクリック後 Select export directory 画面が開くので、任意のエクスポート先フォルダを選択します。
続けて Select dump type 画面が開くので、UABE text dump が表示されている状態で OK ボタンをクリックするとエクスポートを開始します。
resources.assets ファイルから任意のフォルダにエクスポートされた MonoBehaviour と Material テキストデータファイルです。
以下、残りのアセットファイルから同じように MonoBehaviour と Material データをテキストファイルとしてエクスポートします。
WL3_Data フォルダにある sharedassets1.assets ファイルを UABEA で開きます。
PathID 226~231、PathID 8348~8351 を選択して Export Dump ボタンをクリックします。
sharedassets1.assets ファイルから任意のフォルダにエクスポートされた MonoBehaviour と Material テキストデータファイルです。
WL3_Data フォルダにある sharedassets2.assets ファイルを UABEA で開きます。
PathID 78 と PathID 80~83、PathID 30837 と PathID 30838 を選択して Export Dump ボタンをクリックします。
sharedassets2.assets ファイルから任意のフォルダにエクスポートされた MonoBehaviour と Material テキストデータファイルです。
以下、Wasteland 3: Colorado Collection バージョン 1.6.9.420.309496 で使用されている TextMesh Pro の MonoBehaviour と Material ファイルをリストにまとめました。
MonoBehaviour ファイルの PointSize および Padding は FontAssetCreationSettings m_CreationSettings セクションに記述されている数値で、TextMesh Pro 日本語フォントを作成 するときに原則この数値をそのまま使います。
ただし、PointSize が非常に大きいため日本語 7,000 文字を収録しようとすると 1つのフォントテクスチャファイルには収まりきらないことがあります。PointSize か Padding を調整することになりますが、今回は Padding の数値を下げて調整することにしています。
ちなみに MonoBehaviour ファイルでフォントサイズを調整する場合は、FaceInfo m_FaceInfo セクションにある int m_PointSize の数値を増減することで変更可能です。中文化(ALI213)ファイル はこの方法で文字サイズを調整しています。
また、FaceInfo m_FaceInfo セクションにある int m_PointSize は、FontAssetCreationSettings m_CreationSettings セクションにある PointSize と同じ値になっています。
- resources.assets
- (UABEA: Path ID)4186 - LiberationSans SDF
- PointSize = 86
- Padding = 9
- AtlasWidth = 1024
- AtlasHeight = 1024
- (UABEA: Path ID)4190 - FiraSans-Medium Default SDF
- PointSize = 61
- Padding = 12
- AtlasWidth = 1024
- AtlasHeight = 1024
- (UABEA: Path ID)4186 - LiberationSans SDF
- sharedassets1.assets
- (UABEA: Path ID)8348 - FiraSans-Medium SDF
- PointSize = 76
- Padding = 20
- AtlasWidth = 2048
- AtlasHeight = 1024
- (UABEA: Path ID)8349 - Oswald-Medium SDF
- PointSize = 32
- Padding = 5
- AtlasWidth = 512
- AtlasHeight = 512
- (UABEA: Path ID)8350 - authority-regular SDF
- PointSize = 62
- Padding = 20
- AtlasWidth = 1024
- AtlasHeight = 1024
- (UABEA: Path ID)8351 - tolyerno4-medium SDF
- PointSize = 44
- Padding = 24
- AtlasWidth = 1024
- AtlasHeight = 1024
- (UABEA: Path ID)8348 - FiraSans-Medium SDF
- sharedassets2.assets
- (UABEA: Path ID)30837 - FiraSans-Regular SDF
- PointSize = 79
- Padding = 20
- AtlasWidth = 2048
- AtlasHeight = 1024
- (UABEA: Path ID)30838 - Roboto-Regular SDF
- PointSize = 76
- Padding = 8
- AtlasWidth = 1024
- AtlasHeight = 1024
- (UABEA: Path ID)30837 - FiraSans-Regular SDF
以下の Material ファイルには同名の TextMesh Pro フォントの縦横テクスチャサイズが指定されています。(UABEA でエクスポートした場合 _TextureHeight と _TextureWidth)
通常既存の TextMesh Pro フォントを新しく作成したフォントに差し替えても Material ファイルを編集する必要はないので、エクスポートする必要はありません。(Wasteland 3 の場合ファイル名がフォント名+SDF Material は編集不要)
ただ Wasteland 3 の場合、文字へのドロップシャドウなどの Shader が有効になっており、これにより各 Shader に対応する Material ファイル(TMP_FontMaterial_フォント名 SDF_Underlay~など複数)が別途存在しています。(参考情報 1、参考情報 2)
新しく作成・置き換えた TextMesh Pro 日本語フォントのテクスチャサイズと、各 Shader の Material ファイルで指定されている縦横テクスチャサイズが一致していない場合、文字周辺にゴミのようなものが描画されてしまいます。
Shader が正しく描画できるようにするためには、各 Shader に対応する Material ファイルにある縦横テクスチャサイズを、新しく置き換えた TextMesh Pro の縦横テクスチャサイズに書き換えて一致させておく必要があります。
- resources.assets
- (UABEA: Path ID)3 - LiberationSans SDF - Drop Shadow
- _TextureHeight = 1024
- _TextureWidth = 1024
- (UABEA: Path ID)4 - LiberationSans SDF - Outline
- _TextureHeight = 1024
- _TextureWidth = 1024
- (UABEA: Path ID)3 - LiberationSans SDF - Drop Shadow
- sharedassets1.assets
- (UABEA: Path ID)226 - TMP_FontMaterial_FiraSans-Medium SDF_Underlay
- _TextureHeight = 1024
- _TextureWidth = 2048
- (UABEA: Path ID)227 - TMP_FontMaterial_Oswald-Medium SDF_Underlay
- _TextureHeight = 512
- _TextureWidth = 512
- (UABEA: Path ID)228 - TMP_FontMaterial_authority-regular SDF_Underlay
- _TextureHeight = 1024
- _TextureWidth = 1024
- (UABEA: Path ID)229 - TMP_FontMaterial_authority-regular SDF_Underlay_FloatingText
- _TextureHeight = 1024
- _TextureWidth = 1024
- (UABEA: Path ID)230 - TMP_FontMaterial_tolyerno4-medium SDF_Underlay
- _TextureHeight = 1024
- _TextureWidth = 1024
- (UABEA: Path ID)231 - TMP_FontMaterial_tolyerno4-medium SDF_Underlay_FloatingText
- _TextureHeight = 1024
- _TextureWidth = 1024
- (UABEA: Path ID)226 - TMP_FontMaterial_FiraSans-Medium SDF_Underlay
- sharedassets2.assets
- (UABEA: Path ID)78 - TMP_FontMaterial_FiraSans-Regular SDF_Underlay
- _TextureHeight = 1024
- _TextureWidth = 2048
- (UABEA: Path ID)79 - TMP_FontMaterial_MachineRegular_Underlay
- MonoBehaviour ファイルが見つからないためおそらく未使用
- _TextureHeight = 512
- _TextureWidth = 1024
- (UABEA: Path ID)80 - TMP_FontMaterial_Oswald-Medium SDF_Underlay
- _TextureHeight = 512
- _TextureWidth = 512
- (UABEA: Path ID)81 - TMP_FontMaterial_Roboto-Regular_Underlay
- _TextureHeight = 1024
- _TextureWidth = 1024
- (UABEA: Path ID)82 - TMP_FontMaterial_authority-regular SDF_EpilogueTitle
- _TextureHeight = 1024
- _TextureWidth = 1024
- (UABEA: Path ID)83 - TMP_FontMaterial_tolyerno4-medium SDF_Underlay_Barks_Titl
- _TextureHeight = 1024
- _TextureWidth = 1024
- (UABEA: Path ID)78 - TMP_FontMaterial_FiraSans-Regular SDF_Underlay
UABEA で言語データエクスポート方法
UABEA を使って StreamingAssets フォルダにある言語データをエクスポートします。
UABEA を使用する際には Il2CppDumper で dll ファイルを生成してゲームインストール先フォルダに配置 しておく必要があります。
UABEA fifth release(2022/11/19)から Il2Cpp をサポートしたため、Il2CppDumper を使った dll ファイル生成は不要になりました。
言語データは assets ファイルではなく StreamingAssets フォルダにある bundle ファイルに含まれています。本編と DLC 1、DLC 2 の 3つに言語データが分かれており、翻訳する場合はそれぞれの bundle ファイルからエクスポートする必要があります。
ちなみに UABE 2.2 stable d では対応していないためか、bundle ファイルを開く際に途中でフリーズするため使えません。
WL3_Data\StreamingAssets\aa\StandaloneWindows64
フォルダにある oei_assets_stringtabledata_english_e4607_53e66ff883d71916e61d183a34eab7aa.bundle が英語版本編言語ファイルです。ファイル名に english のほか各言語名のファイルがあることから言語データだと判断できます。
UABEA で oei_assets_stringtabledata_english_e4607_53e66ff883d71916e61d183a34eab7aa.bundle ファイルを開きます。
ファイルが圧縮(Compress)されているため「Note This bundle is compressed. Decompress to file or memory? Size: 5.82MB」というメッセージが表示されます。Memory ボタンをクリックして処理を続行します。
通常は Memory ボタンで問題ないと思いますが、ファイルサイズが大きいものだとエラー落ちすることがあります。その場合は File ボタンをクリックしてファイルを解凍(Decompress)して保存(上書き保存はできないため同フォルダ内に保存する場合は別名で保存)することで続行できます。
oei_assets_stringtabledata_english_e4607_53e66ff883d71916e61d183a34eab7aa.bundle ファイルが開くので Info ボタンをクリックしてファイル中身を確認します。
StringTableData_English がゲーム本編の言語データ(英語)です。クリックして選択状態にしたら Export Dump ボタンをクリックしてテキストデータとしてエクスポートします。
oei_assets_stringtabledata_english_e4607_53e66ff883d71916e61d183a34eab7aa.bundle ファイルからエクスポートしたゲーム本編言語データ(英語)StringTableData_English-CAB-83ff0546f42d84e747fefe7ae7126de0--1617434765046421955.txt テキストファイルです。
テキストエディタ(文字コード UTF-8)で書き換えることで本編のゲーム内テキストを変更できます。
以下、同じ手順で各 DLC の言語データをエクスポートします。
WL3_Data\StreamingAssets\aa\StandaloneWindows64\DLC1
フォルダにある oei_dlc1_assets_all.bundle ファイルに DLC The Battle of Steeltown の言語データが格納されています。
UABEA で oei_dlc1_assets_all.bundle ファイルを開きます。
ファイルが圧縮(Compress)されているので Memory ボタンをクリックして処理を続行します。
oei_dlc1_assets_all.bundle ファイルが開くので Info ボタンをクリックしてファイル中身を確認します。
StringTableData_English が DLC The Battle of Steeltown の言語データ(英語)です。クリックして選択状態にしたら Export Dump ボタンをクリックしてテキストデータとしてエクスポートします。
oei_dlc1_assets_all.bundle ファイルからエクスポートした DLC 1 言語データ(英語)StringTableData_English-CAB-01cf4ea31238681a8e1bd9559c0f3f3e--5815625736905989241.txt テキストファイルです。
テキストエディタ(文字コード UTF-8)で書き換えることで DLC The Battle of Steeltown のゲーム内テキストを変更できます。
WL3_Data\StreamingAssets\aa\StandaloneWindows64\DLC2
フォルダにある oei_dlc2_assets_all.bundle ファイルに DLC Cult of the Holy Detonation の言語データが格納されています。
UABEA で oei_dlc2_assets_all.bundle ファイルを開きます。
ファイルが圧縮(Compress)されているので Memory ボタンをクリックして処理を続行します。
oei_dlc2_assets_all.bundle ファイルが開くので Info ボタンをクリックしてファイル中身を確認します。
StringTableData_English が DLC Cult of the Holy Detonation の言語データ(英語)です。クリックして選択状態にしたら Export Dump ボタンをクリックしてテキストデータとしてエクスポートします。
oei_dlc2_assets_all.bundle ファイルからエクスポートした DLC 2 言語データ(英語)StringTableData_English-CAB-6a212d8a4482b263f057ec8756825864-4193932453415687559.txt テキストファイルです。
テキストエディタ(文字コード UTF-8)で書き換えることで DLC Cult of the Holy Detonation のゲーム内テキストを変更できます。
UABEA で言語データインポート方法
UABEA でエクスポートした言語データ をインポートして変更したテキストをゲームに反映する方法です。
UABEA を使用する際には Il2CppDumper で dll ファイルを生成してゲームインストール先フォルダに配置 しておく必要があります。
UABEA fifth release(2022/11/19)から Il2Cpp をサポートしたため、Il2CppDumper を使った dll ファイル生成は不要になりました。
以下、例としてゲーム本編の言語データをインポートしてみます。DLC でもインポート方法は同じです。
インポート先である WL3_Data\StreamingAssets\aa\StandaloneWindows64
フォルダにある oei_assets_stringtabledata_english_e4607_53e66ff883d71916e61d183a34eab7aa.bundle ファイルを UABEA で開きます。開き方は 言語データエクスポート方法 と同じです。
StringTableData_English を選択状態にして Import Dump ボタンをクリックします。
Open 画面が開くので、エクスポートして編集した StringTableData_English-CAB-83ff0546f42d84e747fefe7ae7126de0--1617434765046421955.txt ファイルを選択して開くボタンをクリックしてインポートします。
インポート後、Modified 列に * マークが表示されていることを確認して、メニュー File → Save をクリックして画面右上にある×ボタンで閉じます。この時点ではまだファイルは保存されていません。
oei_assets_stringtabledata_english_e4607_53e66ff883d71916e61d183a34eab7aa.bundle ファイルオープン時の UABEA 画面に戻るので、メニュー File → Save をクリックします。
Save as 画面が開くので任意の場所にインポート先のファイル名 oei_assets_stringtabledata_english_e4607_53e66ff883d71916e61d183a34eab7aa.bundle を入力して保存します。UABEA の仕様上、元の bundle ファイルがあった場所に直接上書き保存できないため注意。
WL3_Data\StreamingAssets\aa\StandaloneWindows64
フォルダに、インポートして保存した bundle ファイルを(オリジナルの oei_assets_stringtabledata_english_e4607_53e66ff883d71916e61d183a34eab7aa.bundle ファイルから差し替える形で)配置して完了です。
インポートしたテキストファイルのサイズが大して変わらないのに bundle ファイルのサイズがオリジナルより大きい(2,336KB → 5,957KB)のはインポート後のファイル圧縮をしていないためです。
UABEA では圧縮(メニュー File → Compress)は可能ですが、圧縮をしなくてもインポートした bundle ファイルはゲームで問題なく読み込みできます。(ファイル圧縮有無によるゲームへの影響は不明ですが、パフォーマンスの違いはある ようです)
以下、日本語フォントをインストール した状態で日本語テキスト(一部字幕内容はゲームとは関係ないテキスト)に書き換えたスクリーンショットを公開します。
レンジャー名テキストデータエクスポート・編集方法
UABEA を使ってレンジャー名 MonoBehaviour ファイルをテキストデータとしてエクスポートして編集する方法です。
UABEA を使用する際には Il2CppDumper で dll ファイルを生成してゲームインストール先フォルダに配置 しておく必要があります。
UABEA fifth release(2022/11/19)から Il2Cpp をサポートしたため、Il2CppDumper を使った dll ファイル生成は不要になりました。
このレンジャー名ファイルは Wasteland 3 中文化ファイル(ALI213 版) 解析時に見つけたもので、言語データから独立している形で存在しています。
WL3_Data フォルダにある sharedassets1.assets ファイルを UABEA で開きます。
PathID 12590~12618 を選択して Export Dump ボタンをクリックします。
Export Dump ボタンクリック後 Select export directory 画面が開くので、任意のエクスポート先フォルダを選択します。
Select dump type 画面 が開くので、UABE text dump が表示されている状態で OK ボタンをクリックしてエクスポートします。
任意のフォルダにエクスポートされたレンジャー名テキストファイルです。全部で 29ファイルあります。各ファイルに登録されているレンジャー名は以下の通りです。
- sharedassets1.assets
- (UABEA: Path ID)12590 - Axle
- (UABEA: Path ID)12591 - Banshee
- (UABEA: Path ID)12592 - Bison Bill
- (UABEA: Path ID)12593 - Blackeye Betty
- (UABEA: Path ID)12594 - Butterfly
- (UABEA: Path ID)12595 - Crash
- (UABEA: Path ID)12596 - Danny Smiles
- (UABEA: Path ID)12597 - Devlin
- (UABEA: Path ID)12598 - Doc Nails
- (UABEA: Path ID)12599 - Ice
- (UABEA: Path ID)12600 - Preacher
- (UABEA: Path ID)12601 - Prof. Higgs
- (UABEA: Path ID)12602 - Sasquatch
- (UABEA: Path ID)12603 - Shellshock
- (UABEA: Path ID)12604 - Thunder
- (UABEA: Path ID)12605 - Wolf
- (UABEA: Path ID)12606 - Zeus
- (UABEA: Path ID)12607 - Coyote(CustomCharacter)
- (UABEA: Path ID)12608 - Hawk(CustomCharacterFemale)
- (UABEA: Path ID)12609 - Bronco
- (UABEA: Path ID)12610 - Chris
- (UABEA: Path ID)12611 - Dusty
- (UABEA: Path ID)12612 - Kickboy
- (UABEA: Path ID)12613 - Kris
- (UABEA: Path ID)12614 - Li-Tsing
- (UABEA: Path ID)12615 - Marie
- (UABEA: Path ID)12616 - Spence
- (UABEA: Path ID)12617 - William
- (UABEA: Path ID)12618 - Yuri
エクスポートされたレンジャー名テキストファイルをテキストエディタ(文字コード UTF-8)で開きます。
string characterName に記述されているのがゲーム内で表示されるレンジャー名です。これを書き換えることで別の名前に変更できます。
成果物として MonoBehaviour テキストデータのレンジャー名を日本語名にした PC ゲーム Wasteland 3: Colorado Collection - UABEA インポート用レンジャー名日本語化(PC-Wasteland3-Colorado-Collection-1_6_9_420_309496-RangerName-UABEA-Import-Dump-20220529.7z) を公開します。
UnityEX インポート用レンジャー名日本語化ファイル と同じレンジャー名となっていますので、どちらのファイルでインポートしても同じレンジャー名になります。
レンジャー名のインポート方法はエクスポート方法とほぼ同じ流れです。
WL3_Data フォルダにある sharedassets1.assets ファイルを UABEA で開き、PathID 12590~12618 を選択して Import Dump ボタンをクリックします。
Import Dump ボタンクリック後 Select export directory 画面が開くので、インポートしたいレンジャー名テキストファイルが格納されているフォルダを選択します。
続けて Batch Import 画面(上記画像)が開きます。
画面左側にインポート先のレンジャー名一覧が表示、画面右側には画面左側で選択したレンジャー名に対応するインポート元のレンジャー名テキストファイルが表示されます。
Batch Import 画面で OK ボタンをクリックしてインポートすると PathID 12590~12618 の Modified 列に * マークが表示されます。メニュー File → Save をクリックすると Save as 画面が表示されるのでファイル名を sharedassets1.assets になっていることを確認して任意の場所にファイルを保存します。
保存した sharedassets1.assets ファイルを WL3_Data フォルダにある同名の sharedassets1.assets ファイルから差し替える形で配置して完了です。
レンジャー名は日本語フォントがないと表示できません。オリジナルの sharedassets1.assets ファイルにレンジャー名をインポートした場合は 日本語フォントのインストールを実行 してください。
ちなみに UnityEX インポート用レンジャー名日本語化ファイル は、UABEA で日本語レンジャー名テキストファイルをインポートして保存した sharedassets1.assets ファイルを UnityEX で開き、# 列 12590~12618 の sharedassets1_00001.-156 ~ sharedassets1_00029.-156 をエクスポートしたものとなっています。
UnityEX でエクスポートした sharedassets1_00001.-156 ~ sharedassets1_00029.-156 はバイナリエディタでもレンジャー名の編集は可能です。
やり方は以前公開した Shadowgate(2014)日本語表示方法 の記事より確認してください。ただバイナリエディタでの編集は面倒となっています。
PC ゲーム Wasteland 3: Colorado Collection 用 TextMesh Pro 日本語フォント作成・適用方法
Unity ゲームエンジンの TextMesh Pro を使って日本語フォントの作成と Wasteland 3 へインポートできるようにするためのデータ加工方法を説明します。基本的な流れは PC ゲーム Syberia 3 の TextMesh Pro 日本語フォント作成方法 と同じです。
このセクション内容通りに TextMesh Pro 日本語フォントを作成すれば、PC ゲーム Wasteland 3: Colorado Collection - UnityEX インポート用 TextMesh Pro 日本語フォントと MonoBehaviour ファイルと Material ファイル(PC-Wasteland3-Colorado-Collection-1_6_9_420_309496-Unity2019_4_4-TextMeshPro-JPFont-UnityEX-Import-assets-20220513.7z) とまったく同じものが作成できます。
Unity ゲームエンジンインストール・TextMesh Pro 環境設定
Unity ゲームエンジンのインストールと TextMesh Pro 環境設定をします。Unity ゲームエンジンの基本的なインストール方法については Unity 公式サイト より確認してください。
Unity download archive から Unity 2019.4.38f1(LTS)をインストールします。
Wasteland 3 の Unity バージョンは Unity 2019.4.4 なので、今回このバージョンにあわせる(近づける)形で Unity 2019 の LTS バージョンを選んでいるだけとなっています。
TextMesh Pro フォントを作成する際の Unity ゲームエンジンのバージョンは、基本的に TextMesh Pro がプリインストールされているとされる Unity 2018 以降にします。
注意点として最新の Unity ゲームエンジンバージョンでは解析ツールが対応していないことがあり、アセットファイルが開けなかったりエクスポートができないことがあるため、Unity 解析ツールが対応しているゲームエンジンのバージョンまでにとどめたほうがよいでしょう。
TextMesh Pro にも複数のバージョンがありますが、Unity ゲームエンジン内である程度のバージョンにダウングレードが可能です。ただ、新しい Unity ゲームエンジンだとかなり前の古い TextMesh Pro バージョンにダウングレードできないことがあるので、複数の Unity ゲームエンジンを用意して使い分けるようにしたほうがいいかもしれません。
画面左側にあるプロジェクトをクリックして、画面右側にある新しいプロジェクトボタンをクリックします。
テンプレートは 3D(コア)を選択、任意のプロジェクト名と保存場所を設定してプロジェクト作成ボタンをクリックします。
Unity が起動したら TextMesh Pro のバージョン確認とフォント作成の準備を行います。
まずはメニュー Windows → Package Manager を選択して TextMesh Pro のバージョンを確認します。
TextMesh Pro Version 2.1.6 がインストールされていることが確認できます。
次にメニュー Windows → TextMeshPro → Import TMP Essential Resources を選択します。
Import Unity Package 画面が表示され、その下に TMP Essential Resources という文字とインポートするファイル一覧が表示されます。すべてチェックマークがついた状態で画面右下の Import ボタンをクリックしてインポートします。
Project タブにある Assets フォルダ内に TextMesh Pro フォルダが生成されたら、TextMesh Pro フォント作成の準備完了です。
TextMesh Pro フォントアセット生成とビルド
TextMesh Pro の環境設定 が終わったら TextMesh Pro 日本語フォントの作成に入ります。
Project タブにある Assets フォルダ内に、TextMesh Pro 日本語フォント作成に必要な ttf 日本語フォントファイルと、表示したい日本語文字一覧テキストファイルをドラッグアンドドロップで追加します。
今回追加したフォントは以下の参考サイトから ttf フォント 8ファイル、日本語文字一覧テキストファイルは synctam 氏が公開している JpFontText_utf-8.txt を使用しています。
ttf フォントファイルと日本語文字一覧テキストファイルを追加したら、メニュー Window → TextMeshPro → Font Asset Creator を選択して TextMesh Pro フォントを生成します。
Font Asset Creator 画面が開くので フォント解析時に判明した各フォントの MonoBehaviour ファイル PointSize と Padding 数値 を使ってゲーム内で使用されていると思われる 8種類のフォントを作成します。
PointSize と Padding の数値をそのまま使うと日本語文字 7,000文字が 1つのファイルに収まりきらないことがあるので、PointSize か Padding どちらかの数値を下げて調整する必要があります。今回は Padding の数値を下げて調整することにしています。以下 Padding の()内数値に調整前 Padding 数値を表記しておきます。
各フォントを生成するのにあたり Font Asset Creator 画面での共通設定は Packing Method - Fast、Character Set - Characters from File、Character File - JpFontText_utf-8、Render Mode - SDFAA となっています。
すべてのフォントがゲーム内で使用されているのかどうか確認していません。もし使われている場合を想定してすべての TextMesh Pro フォントを置き換える形で作成しています。
JF ドット Kappa20-0213(JF-Dot-Kappa20-0213.ttf) を使って PointSize 86、Padding 6(9)、Atlas Resolution 8192x8192 の LiberationSans SDF フォントを作成します。
BIZ UDPMincho Regular(BIZUDPMincho-Regular.ttf) を使って PointSize 61、Padding 12、Atlas Resolution 8192x8192 の FiraSans-Medium Default SDF フォントを作成します。
源暎エムゴ(GenEi M Gothic)Ver 2.0 ボールド(GenEiMGothic2-Bold.ttf) を使って PointSize 76、Padding 12(20)、Atlas Resolution 8192x8192 の FiraSans-Medium SDF フォントを作成します。
しっぽり明朝セミボールド(ShipporiMincho-SemiBold.ttf) を使って PointSize 32、Padding 5、Atlas Resolution 4096x4096 の Oswald-Medium SDF フォントを作成します。
このフォントのみ Atlas Resolution を 4096x4096 にしています。
Rounded Mgen+ 1pp ボールド(rounded-x-mgenplus-1pp-bold.ttf) を使って PointSize 62、Padding 19(20)、Atlas Resolution 8192x8192 の authority-regular SDF フォントを作成します。
鉄瓶ゴシック(tetsubin-gothic.ttf) を使って PointSize 44、Padding 24、Atlas Resolution 8192x8192 の tolyerno4-medium SDF を作成します。
モッチーポップ One Regular(MochiyPopOne-Regular.ttf) を使って PointSize 79、Padding 11(20)、Atlas Resolution 8192x8192 の FiraSans-Regular SDF を作成します。
さつき源代明朝(SatsukiGendaiMincho-M.ttf) を使って PointSize 76、Padding 8、Atlas Resolution 8192x8192 の Roboto-Regular SDF を作成します。
Font Asset Creator でフォント作成後、Assets フォルダ内に ttf フォントファイル名の後に SDF が付加された、アイコンに [F] が表示されたファイルが生成されます。
次に メニュー GameObject → 3D Object → Text - TextMeshPro をクリックして生成したフォントを割り当てます。
Hierarchy タブに Text(TMP)が追加されます。
追加された Text(TMP)が選択された状態で、Inspector タブの Main Settings にある Font Asset を生成したフォントに変更します。
Main Settings の Font Asset 欄右端にある 〇 アイコンをクリックします。
Select TMP_FontAsset 画面が表示されるので生成した TextMesh Pro 日本語フォントを選択します。
Main Settings の Font Asset 欄のフォントが変更できました。
あとは生成した TextMesh Pro フォント分の 3D Object を作成して、各 Font Asset に TextMesh Pro 日本語フォントに変更して割り当てます。
各 3D Object への TextMesh Pro 日本語フォントの割り当てが終わったら、メニュー File → Build Settings ... を選択してビルドします。
Build Settings 画面が開くのでデフォルト設定のまま Build ボタンをクリックします。
Build Windows 画面が開くのでビルドしたファイルを保存場所を選択します。
注意点として Unity プロジェクトフォルダ内にそのままビルドして保存することはできないようです。Unity プロジェクトフォルダ内に保存したい場合は上の画像のように任意のフォルダを作成(ここでは build フォルダを作成)して選択することでビルドできます。
ビルド後に指定したフォルダ内に生成されたファイルやフォルダ群です。
Unity 解析ツールを使って TextMesh Pro のフォントテクスチャと MonoBehaviour ファイルをアセットファイルからエクスポート・ファイルリネーム します。
ビルドしたアセットファイルから TextMesh Pro フォントテクスチャと MonoBehaviour テキストデータエクスポート・ファイルリネーム
Unity ゲームエンジンで TextMesh Pro 日本語フォント作成後ビルドしたアセットファイル から、Wasteland 3 の日本語表示に必要な TextMesh Pro フォントテクスチャと MonoBehaviour テキストデータファイルを解析ツールを使ってエクスポート・ファイルリネームします。
プロジェクト名_Data フォルダ(ここでは WL3CE-TMP-JPFONT_Data フォルダ)にある sharedassets0.assets ファイルに TextMesh Pro フォントテクスチャと MonoBehaviour テキストデータが格納されています。
この sharedassets0.assets ファイルから UnityEX と UABEA を使ってデータをエクスポートします。
UnityEX で sharedassets0.assets ファイルを開きます。
Type 列 Texture2D をすべて選択して右クリックで Export with convert or Raw を選択してエクスポートします。
sharedassets0.assets ファイルから UnityEX でエクスポートされた dds フォントテクスチャファイルです。
今度は UABEA で sharedassets0.assets ファイルを開きます。
Type 列 MonoBehaviour をすべて選択状態にして Export Dump ボタンをクリックします。
Export Dump ボタンクリック後 Select export directory 画面が開くので、任意のエクスポート先フォルダを選択します。
続けて Select dump type 画面 が開くので、UABE text dump が表示されている状態で OK ボタンをクリックしてエクスポートします。
sharedassets0.assets ファイルから UABEA でエクスポートされた MonoBehaviour テキストデータファイルです。
エクスポートした TextMesh Pro フォントテクスチャファイルと MonoBehaviour テキストデータファイルを、Wasteland 3 にインポートできるようにするため、以下のリストにまとめたオリジナルのファイル名にリネーム(名前変更)しておきます。(成果物ファイルにはリネーム後のファイルは含めていません)
エクスポートした MonoBehaviour テキストデータファイルについてそのままインポートしても使えないため、Wasteland 3 用に使えるように MonoBehaviour テキスト内容の一部を置換処理 します。
- BIZUDPMincho-Regular SDF Atlas.tex.dds → FiraSans-Medium SDF Atlas.tex.dds(※)
- GenEiMGothic2-Bold SDF Atlas.tex.dds → FiraSans-Medium SDF Atlas.tex.dds(※)
- JF-Dot-Kappa20-0213 SDF Atlas.tex.dds → LiberationSans SDF Atlas.tex.dds
- MochiyPopOne-Regular SDF Atlas.tex.dds → FiraSans-Regular SDF Atlas.tex.dds
- rounded-x-mgenplus-1pp-bold SDF Atlas.tex.dds → authority-regular SDF Atlas.tex
- SatsukiGendaiMincho-M SDF Atlas.tex.dds → Roboto-Regular SDF Atlas.tex.dds
- ShipporiMincho-SemiBold SDF Atlas.tex.dds → Oswald-Medium SDF Atlas.tex.dds
- tetsubin-gothic SDF Atlas.tex.dds → tolyerno4-medium SDF Atlas.tex.dds
- ※ ・・・ 同じファイル名への変更のため同一フォルダ内でのリネームはできません。UnityEX でインポートするときに エクスポート時に生成されたフォルダ に配置してからインポートすることになるため、対象フォルダにファイル配置後にリネームするなどで対応します
- BIZUDPMincho-Regular SDF-sharedassets0.assets-22.txt → FiraSans-Medium Default SDF-resources.assets-4190.txt
- GenEiMGothic2-Bold SDF-sharedassets0.assets-23.txt → FiraSans-Medium SDF-sharedassets1.assets-8348.txt
- JF-Dot-Kappa20-0213 SDF-sharedassets0.assets-24.txt → LiberationSans SDF-resources.assets-4186.txt
- MochiyPopOne-Regular SDF-sharedassets0.assets-25.txt → FiraSans-Regular SDF-sharedassets2.assets-30837.txt
- rounded-x-mgenplus-1pp-bold SDF-sharedassets0.assets-28.txt → authority-regular SDF-sharedassets1.assets-8350.txt
- SatsukiGendaiMincho-M SDF-sharedassets0.assets-26.txt → Roboto-Regular SDF-sharedassets2.assets-30838.txt
- ShipporiMincho-SemiBold SDF-sharedassets0.assets-27.txt → Oswald-Medium SDF-sharedassets1.assets-8349.txt
- tetsubin-gothic SDF-sharedassets0.assets-29.txt → tolyerno4-medium SDF-sharedassets1.assets-8351.txt
- MonoBehaviour テキストデータファイル名末尾の数字(~SDF-sharedassets0.assets-数字.txt)は、Unity ゲームエンジンでの TextMesh Pro フォント作成するタイミングによって変化することがあります
MonoBehaviour テキストデータをテキスト置換ソフト MultiReplace で Wasteland 3 用データに変換
Unity ゲームエンジンで TextMesh Pro 日本語フォント作成後ビルドしたアセットファイル から、解析ツール UABEA を使って Wasteland 3 の日本語表示に必要な MonoBehaviour テキストデータファイルをエクスポート・リネーム しましたが、そのまま Wasteland 3 にインポートしても使えません。
テキスト置換ソフト MultiReplace を使って一部のテキストを置換して書き換えます。
こちらで作成した Wasteland 3: Colorado Collection バージョン 1.6.9.420.309496 - TextMesh Pro - UABEA インポート用 MonoBehaviour テキストデータファイル MultiReplace 置換設定ファイル PC-Wasteland3-Colorado-Collection-1_6_9_420_309496-Unity2019_4_38-Build-assets-UABEA-Export-MonoBehaviour-MultiReplace-mrp-20220513.7z を公開します。
MultiReplace の MultiReplace.exe ファイルがあるフォルダ内に、拡張子 mrp 置換設定ファイル(MultiReplace-Wasteland3-Replace-TextMeshPro-MonoBehaviour-TMP_FontMaterial-RangerName.mrp)を配置します。それ以外の場所に mrp ファイルを配置すると読み込めないため注意。
MultiReplace を起動してメニュー オプション → 設定読み込みを選択します。
MultiReplace.exe ファイルがあるフォルダ内に配置した mrp 置換設定ファイルを開きます。
mrp 置換設定ファイルを開くと上の画像のように、画面左側に置換リストが、画面右側に複数のタブ名が表示されていることを確認します。以下、使い方と置換リスト内容について解説します。
画面右側のタブ名はデフォルトはアルファベット名(A、B、C ...)のみだったので用途別にタブ名を設定しています。タブ名はメニュー オプション → タブページ見出しから変更できます。
タブ名「A MonoBehaviour」には 8種類の MonoBehaviour テキストデータファイル用置換リストを登録しています。
置換内容は Wasteland 3 オリジナル MonoBehaviour に含まれている FileID と PathID、フォント情報(FaceInfo)、その他各項目固有の数値や文字列に書き換えて Wasteland 3 で使えるようにします。これをやらないとゲームが起動できません。テキストエディタでコピペや手動で入力して書き換えることもできますが手間がかかるので、置換ソフトで一気に置換するようにしています。
ただ、検索文字列すべてを置換する必要があるかどうかまでは調べていません。もしかしたら書き換え不要の項目があるかもしれませんが、調べるときりがないため関係がありそうなところを片っ端から、Wasteland 3 オリジナル MonoBehaviour データにそのまま書き換えるようにしています。(参考情報)
置換リストの先頭行に置換対象のファイル名を記述しています。対応する MonoBehaviour テキストデータファイルを MultiReplace 画面上側にある「ここにドロップ」にドラッグアンドドロップして登録します。
置換ボタンをクリックすると置換処理が始まり、置換処理終了後 MonoBehaviour テキストデータファイルと同じフォルダ内に(置換済)フォルダが生成されて、その中に置換済み MonoBehaviour テキストデータファイルが保存されます。
置換後のファイル保存方法については、メニュー オプション → 置換後のファイル名からデフォルトの「文字列を付加する」から「サブフォルダに保存する」に変更しています。
PC ゲーム Wasteland 3: Colorado Collection バージョン 1.6.9.420.309496 - TextMesh Pro - UABEA インポート用 MonoBehaviour テキストデータファイル MultiReplace 置換設定ファイル(PC-Wasteland3-Colorado-Collection-1_6_9_420_309496-Unity2019_4_38-Build-assets-UABEA-Export-MonoBehaviour-MultiReplace-mrp-20220513.7z) に含まれる MultiReplace-Memo.txt ファイルには、一応メンテナンスできるように各 MonoBehaviour 置換リストの検索文字列+区切り文字(デフォルトの /
)と置換文字列に分けた内容で記述してあります。
MultiReplace-Memo.txt ファイルにある MonoBehaviour テキストファイル名(~.txt)セクションには、置換対象文字列が正常に置換できた時の処理結果内容です。置換処理をしなくてもこの内容を該当箇所に手動で差し替えるだけで置換処理と同じ内容になります。
区切り文字はデフォルトの /
を使用、区切り文字を 2つ連続して入力(//
)するとコメント文扱いになります。
複数行を検索・置換できるようにするために、タブ名「A MonoBehaviour」では「正規表現を使用する」に設定しています。
置換リストの検索文字列では固有の値や文字列に対して \d+
(数字列)と .*
(任意の文字列)を使って検索して、=
以降の値や文字列を正規表現で引っかかるようにしています。これにより Unity ゲームエンジンで様々な TextMesh Pro フォントを作成しても、値や文字列内容に関係なく必ず検索で引っかかるようになります。
検索文字列での (\r\n)
は複数行を一行の正規表現で検索できるように改行として使っています。改行を丸括弧 ()
でくくっているのは置換文字列で改行する際に、正規表現で $1
の記述で済むようにしているためです。($1
は検索文字列の丸括弧 ()
で 1番目にマッチした部分の意味)
置換文字列は Wasteland 3 オリジナル MonoBehaviour テキストデータファイルからもってきた内容を整形したものです。値や文字列はそのまま、改行部分を削除してすべて $1
に置き換えています。
仮にゲーム側のアップデートでオリジナル TextMesh Pro の MonoBehaviour 内容に変更があった場合、数値や文字列の変更程度なら置換対象の差分を調べて該当する置換文字列を書き換えるだけで済みます。
タブ名「B TMP_FontMaterial」には Wasteland 3 のアセットファイルから UABEA でエクスポートした TextMesh Pro の Material テキストデータファイル の縦横テクスチャサイズ項目 _TextureHeight と _TextureWidth の数値置換リストを登録しています。タブ名「A MonoBehaviour」と同じく正規表現を使用しています。
Wasteland 3 の場合、TextMesh Pro の Material ファイル(TMP_FontMaterial_フォント名 SDF_Underlay~など複数)には文字のドロップシャドウなど Shader が有効になっています。
新しく作成した TextMesh Pro 日本語フォントに置き換える場合、縦横テクスチャサイズ(Unity ゲームエンジンの TextMesh Pro で作成した Atlas Resolution)と各 Shader の Material ファイルで指定されている縦横テクスチャサイズ(_TextureHeight と _TextureWidth)が一致していないと、文字周辺にゴミのようなものが描画されてしまいます。
文字周辺ゴミ描画防止のため Material ファイルの縦横テクスチャサイズは作成した TextMesh Pro の縦横テクスチャサイズに更新する必要があります。
上の 2つの画像は書き換えた _TextureHeight と _TextureWidth 数値箇所です。上 2つの画像のように TMP_FontMaterial(Shader 内容)によっては項目位置(行数)が異なります。
書き換え個所は 2か所だけ(_TextureHeight と _TextureWidth)なのでテキストエディタで検索して直接書き換えでも可能ですが、MultiReplace でも置換処理できるようにしておきました。
ただ、書き換える縦横テクスチャサイズはフォントによって異なるため、タブ内にある該当するプリセットを手動で選択して置換処理することになります。
今回は作成した TextMesh Pro 日本語フォントは Oswald-Medium SDF のみ Atlas Resolution 4096x4096 でそれ以外は 8192x8192 となっています。Oswald-Medium SDF の Material ファイルは 2番目のプリセットで、それ以外の Material ファイルは 1番目のプリセットで Material ファイルを置換処理できます。
それ以外の縦横テクスチャサイズの場合は 3番目と 4番目のプリセットに該当すればそちらを使い、該当しない場合は新しく置換プリセットを作成することになります。
作成方法はプリセットに登録してある置換リスト内容をコピーして新しいプリセットに貼り付け、置換文字列にあるテクスチャサイズ数値(4096 や 8192)を置換したい数値に書き換えるだけです。
タブ名「C Ranger Name」には Wasteland 3 のアセットファイルから UABEA でエクスポートしたレンジャー名テキストデータファイル を日本語名にする置換リストを登録しています。複雑な検索・置換条件はないため正規表現は使用していません。
一つの置換プリセットで複数のレンジャー名テキストファイルを一括置換できるので、わざわざテキストエディタを開いてレンジャー名を編集する必要がなくなるようにしたのですが、置換処理後のテキストファイルの文字コードが UTF-8 から Shift-JIS に勝手に変わってしまうことがわかりました。
文字コード Shift-JIS のままインポートすると文字化けしてしまうため、レンジャー名変更置換リストは使えません。空の UTF-8 テキストファイルを作成して Shift-JIS からコピペで移す方法もできなくもないですが、複数あるレンジャー名テキストファイルでその作業をやるのは逆に手間となります。
バグか仕様かわかりませんが私の環境でこの置換リストは使えませんでした。検索したレンジャー名を日本語名に置換するだけですが、せっかく作成したものなので残しておくことにします。
PowerShell を使うことで複数のファイルの文字コードを変換することができます。(参考情報 1、参考情報 2)
Wasteland 3 アセットデータに TextMesh Pro フォントテクスチャと MonoBehaviour、Material インポート
Unity ゲームエンジンで TextMesh Pro 日本語フォント作成後ビルドしたアセットファイル から、解析ツール UABEA を使って Wasteland 3 の日本語表示に必要な MonoBehaviour テキストデータファイルをエクスポート・ファイルリネーム、インポート用に テキスト置換ツール MultiReplace を使って TextMesh Pro で作成した MonoBehaviour とオリジナルの Material テキストデータを置換処理 までを行いました。
最後に Wasteland 3 へインポートを行い日本語フォントを表示できるようにします。
UABEA を使用する際には Il2CppDumper で dll ファイルを生成してゲームインストール先フォルダに配置 しておく必要があります。
UABEA fifth release(2022/11/19)から Il2Cpp をサポートしたため、Il2CppDumper を使った dll ファイル生成は不要になりました。
リネーム後の TextMesh Pro - dds フォントテクスチャファイル は UnityEX でエクスポートした Unity_Assets_Files フォルダ にある各アセットフォルダにある同名ファイルと差し替えて配置して、インポート先 assets ファイルを UnityEX で開き Import files ボタンをクリックすればインポートします。
PC ゲーム Wasteland 3: Colorado Collection - UnityEX インポート用 TextMesh Pro 日本語フォントと MonoBehaviour ファイルと Material ファイル(PC-Wasteland3-Colorado-Collection-1_6_9_420_309496-Unity2019_4_4-TextMeshPro-JPFont-UnityEX-Import-assets-20220513.7z) に含まれる Unity_Assets_Files フォルダにある dds ファイルが配置先の見本となっています。
以下、UABEA を使って MonoBehaviour・Material ファイルをインポート方法するです。基本的には UABEA でのエクスポート(Export Dump) と同じ手順内容となっています。
WL3_Data フォルダにある resources.assets ファイルを UABEA で開きます。
PathID 3 と PathID 4、PathID 4186 と PathID 4190 を選択して Import Dump ボタンをクリックします。
Import Dump ボタンクリック後 Select import directory 画面が開くので、編集(置換)済み MonoBehaviour・Material テキストデータファイル があるフォルダを選択します。
続けて Select dump type 画面が開くので、UABE text dump が表示されている状態で OK ボタンをクリックします。(エクスポート時に選択した UABE text dump と合わせる)
Batch import 画面が開きます。
画面左側には選択したインポート先の MonoBehaviour・Material が表示、画面右側には画面左側で選択した MonoBehaviour・Material へインポートするテキストデータファイル名が表示されます。
インポート元のファイル・フォルダ指定が間違っていると画面右側には何も表示されません。
OK ボタンをクリックするとインポート処理を開始します。
Import Dump 処理完了後インポート先の MonoBehaviour・Material の Modified 列にアスタリスク(*)マークが表示されます。
メニュー File → Save をクリックして resources.assets ファイルを保存します。
UABEA では開いているアセットファイルへの上書き保存ができないため別のフォルダにいったん保存して、UABEA を終了後、WL3_Data フォルダにあるオリジナルのアセットファイルを差し替えるといった手順となります。
以下、同様の手順で sharedassets1.assets・sharedassets2.assets ファイルでもインポートします。
WL3_Data フォルダにある sharedassets1.assets ファイルを UABEA を開き、PathID 226~231、PathID 8348~8351 へ MonoBehaviour・Material テキストデータファイルをインポートします。
インポート後保存した sharedassets1.assets ファイルを、WL3_Data フォルダにあるオリジナルの sharedassets1.assets ファイルと差し替えます。
WL3_Data フォルダにある sharedassets2.assets ファイルを UABEA を開き、PathID 78 と PathID 80~83、PathID 30837 と PathID 30838 へ MonoBehaviour・Material テキストデータファイルをインポートします。
インポート後保存した sharedassets2.assets ファイルを、WL3_Data フォルダにあるオリジナルの sharedassets2.assets ファイルと差し替えます。
ゲームがクラッシュすることなく起動できて、フォントが変更されていたら成功です。
PC ゲーム Wasteland 3: Colorado Collection - 動画ファイル解析・差し替え方法
ここでは Wasteland 3 のアセットファイルに含まれる動画ファイルを差し替える方法を解説します。
Unity 解析ツールを使うため Il2CppDumper で dll ファイルを生成してゲームインストール先フォルダに配置 してある必要があります。
UABEA fifth release(2022/11/19)から Il2Cpp をサポートしたため、Il2CppDumper を使った dll ファイル生成は不要になりました。
Wasteland 3 動画ファイル解析
上の画像はゲーム開始時に文字が表示されるシーンです。英語の文字が表示されていますが、言語データにはこの文字は含まれていません。
解析時からこの文字が含まれているファイルを見つけることができなかったのですが、解析ツールで偶然見つけた動画ファイルを再生したところ、この文字が表示されるシーンがあることが判明しました。
そのため、このシーンに字幕を表示させるようにするためには、字幕を追加した動画を作成してオリジナルの動画ファイルを差し替えることになります。
AssetStudio で WL3_Data フォルダを読み込み、Asset List タブで WL3_Ambushintro_ で検索した結果です。
検索結果では Type 列 VideoClip に WL3_Ambushintro_1080p と WL3_Ambushintro_4K がそれぞれ 3つヒットしています。
検索で見つかった WL3_Ambushintro_1080p と WL3_Ambushintro_4K をエクスポートしてみます。
エクスポートしたフォルダ名から WL3_Data フォルダにある sharedassets2.assets ファイル、StreamingAssets\DLC1 フォルダにある scenes_dlc1_scenes_all.bundle ファイル、StreamingAssets\DLC2 フォルダにある scenes_dlc2_scenes_all.bundle ファイルに、WL3_Ambushintro_1080p.m4v と WL3_Ambushintro_4K.m4v 動画ファイルが含まれていることがわかりました。
再生してみたところいずれの動画ファイルも同じ内容でした。この後説明しますが最終的に sharedassets2.assets ファイルに含まれる動画のみ差し替えたところ、ゲーム内で変更した動画を再生することができたので、動画ファイルの差し替え対象は sharedassets2.assets ファイルのみでいいようです。
次に UABEA を使って動画ファイルがどのようにアセットファイルに格納されているのか解析します。
WL3_Data フォルダにある sharedassets2.assets ファイルを UABEA で開きます。
PathID 901 にある WL3_Ambushintro_1080p を選択して View Data をクリックします。
sharedassets2.assets ファイルの WL3_Ambushintro_1080p(PathID 901) の View Data 内容です。
StreamedResource m_ExternalResources 以下にある内容が動画ファイルが格納されているファイルとアドレス(オフセット)情報となっています。
まず先頭 VideoClip Base 以下 string m_OriginalPath にある ~/WL3_Ambushintor_1080p.m4v が動画ファイル名で、WL3_Ambushintor_1080p.m4v であることがわかります。これは AssetStudio でエクスポートした動画ファイル名と同じです。
StreamedResource m_ExternalResources 以下の string m_Source には動画ファイルが格納されているファイル名を示しています。ここでは sharedassets2.resource ファイルとなっています。
これは WL3_Data フォルダにある sharedassets2.resource ファイルに動画ファイルが格納されていることになり、assets ファイルには動画ファイルが格納されていないことになります。
assets ファイルにある WL3_Ambushintor_1080p の Size が 198(バイト?) しかなく、その内容が View Data で表示された内容だけということです。
UInt64 m_Offset は動画ファイルのバイナリデータでの開始アドレス(オフセット)を 10進数で示しています。0 となっているため sharedassets2.resource ファイルのバイナリデータの先頭アドレスからファイルが格納されていることになります。
UInt64 m_size は動画ファイルのサイズを 10進数のバイト数で示しています。184213034 となっているため sharedassets2.resource ファイルの先頭アドレスからファイルサイズ 184213034 を加えたアドレス 0x0AFADE2A
までが、sharedassets2.resource ファイルに格納されている WL3_Ambushintor_1080p.m4v ファイルということになります。
バイナリエディタで上記アドレス範囲内のバイナリデータを残す形で、以降の残りのバイナリデータを削除することで、ファイル名を WL3_Ambushintor_1080p.m4v として保存すれば解析ツールを使わなくても動画ファイルを抽出できるということになります。
上の画像は AssetStudio で sharedassets2.assets ファイルを読み込み、PathID 901 にある WL3_Ambushintro_1080p をエクスポートした時の WL3_Ambushintro_1080p.m4v ファイルのプロパティ情報です。
ファイルサイズが 184,213,034 バイトとなっており UABEA での WL3_Ambushintro_1080p(PathID 901) の View Data 内容にあった UInt64 m_size の10進数バイト数 184213034 と一致します。
同じように UABEA で開いた sharedassets2.assets ファイルの PathID 904 にある WL3_Ambushintro_4K を選択して View Data をクリックして確認してみます。
StreamedResource m_ExternalResources 以下の string m_Source も sharedassets2.resource となっており、WL3_Ambushintor_1080p と同様 assets ファイルではなく同じ resource ファイルに動画ファイルが格納されていることになります。
UInt64 m_Offset は動画ファイルのバイナリデータでの開始アドレス(オフセット)は 10進数で 1773395896。動画ファイルサイズの UInt64 m_size は 735076754(10進数バイト数)となっていて、開始アドレス(オフセット)がかなりとんだ位置から始まっています。
これは先頭アドレスからある WL3_Ambushintor_1080p との間に別の動画ファイル WL3_OpeningMovie_1080p(PathID 902)と WL3_OpeningMovie_4K(PathID 903)が同じ resource ファイルに含まれているため、これらのファイルがバイナリデータとして結合されてデータ後方にある WL3_Ambushintro_4K の開始アドレス(オフセット)が 1773395896 からとなっています。
上の画像は AssetStudio で sharedassets2.assets ファイルを読み込み、PathID 904 にある WL3_Ambushintro_4K をエクスポートした時の WL3_Ambushintro_4K.m4v ファイルのプロパティ情報です。
ファイルサイズが 735,076,754 バイトとなっており UABEA での WL3_Ambushintro_4K(PathID 904) の View Data 内容にあった UInt64 m_size の10進数バイト数 735076754 と一致 していることが確認できます。
上の画像は WL3_Data フォルダにある sharedassets2.resource ファイルのプロパティ情報です。ファイルサイズは 2,508,472,650 バイトとなっています。
これは sharedassets2.assets の PathID 901~904 までの動画ファイル WL3_Ambushintro_1080p.m4v と WL3_Ambushintro_4K.m4v および WL3_OpeningMovie_1080p.m4v と WL3_OpeningMovie_4K.m4v 合計ファイルサイズとなっています。
上の画像は sharedassets2.assets ファイル PathID 904 の WL3_Ambushintro_4K のバイナリデータ開始アドレス(オフセット)UInt64 m_Offset 1773395896 と、動画ファイルサイズの UInt64 m_size 735076754 を Windows の電卓で合算した結果です。
計算結果は 2,508,472,650 となり sharedassets2.resource ファイルサイズと同じ結果となりました。
以上の内容から resource ファイルにはサイズの大きい複数のファイルがまとめられて、その情報が同名の assets ファイルでファイル名・バイナリデータ開始アドレス(オフセット)・ファイルサイズが管理されていることがわかりました。
1つの resource ファイルに複数のファイルが単純に結合されているだけなので、アドレス範囲を特定することができればバイナリエディタで手動で動画ファイルを保存することができることになります。
Wasteland 3 動画ファイル差し替え方法
Wasteland 3 の 動画ファイルの解析内容 から、オリジナルの動画ファイルを別の動画ファイルに差し替える方法を説明します。
UnityEX や UABEA では動画ファイルをそのままインポートすることができなかったため、別のやり方で動画ファイルを読み込めるようにします。
以下説明する内容は以前公開した PC ゲーム Gabriel Knight: Sins of the Fathers 20th Anniversary Edition 日本語化メモ 記事にある、(再配布)ガブリエルナイト日本語化ファイル ver.h.0.23 ver.2.x 系対応版(ja0543.zip) の日本語化方法に使われているフォントテクスチャファイルの指定方法を参考にしたものとなっています。
AssetStudio からエクスポートしたオリジナルの動画ファイル WL3_AmbushIntro_1080p.m4v と WL3_AmbushIntro_4K.m4v を使って字幕入り動画ファイルを用意します。
字幕が挿入できる動画編集ソフトなら何でもいいと思いますが、今回は Shotcut を使っています。字幕動画の作成方法については割愛しますが、以下の Youtube の動画内容を参考に作成しました。
字幕編集後 m4v 形式に保存できなかったので、拡張子 mp4(H.264)で保存した WL3_AmbushIntro_1080p.mp4 と WL3_AmbushIntro_4K.mp4 ファイルを用意しました。
作成した動画ファイルを WL3_Data フォルダ以下の任意の場所に配置します。ここでは上の画像のように WL3_Data フォルダに Intro フォルダを作成して WL3_AmbushIntro_1080p.mp4 と WL3_AmbushIntro_4K.mp4 ファイルを配置した例で話を進めます。ファイルを配置したフォルダ名とファイル名は後で指定するときに必要なためメモしておきます。
作成した字幕入り動画ファイルのプロパティ画面を開き、それぞれのファイルサイズ(バイト数)をメモしておきます。
今回は WL3_AmbushIntro_1080p.mp4 ファイルが 126940925バイト、WL3_AmbushIntro_4K.mp4 ファイルが 439560227バイトとなっています。(ファイルサイズは動画編集ソフトや設定によって変わります)
UABEA で sharedassets2.assets ファイルを開き、PathID 901 の WL3_AmbushIntro_1080p と PathID 904 の WL3_AmbushIntro_4K を選択して Export Dump をクリックして(Select dump type は UABE text dump のまま)エクスポートします。
UABEA で sharedassets2.assets ファイルからエクスポートした WL3_AmbushIntro_1080p-sharedassets2.assets-901.txt と WL3_AmbushIntro_4K-sharedassets2.assets-904.txt ファイルをテキストエディタで開きます。
StreamedResource m_ExternalResources 以下 3つの項目を用意した字幕入り動画ファイル用に修正します。
string m_Source には sharedassets2.resource から動画ファイルが置いてあるパス名とファイル名に書き換えます。(今回の例では Intro/WL3_AmbushIntro_1080p.mp4
、Intro/WL3_AmbushIntro_4K.mp4
)
UInt64 m_Offset は 0 にします。これは複数の動画ファイルをバイナリデータで結合していない動画ファイル単体を直接指定しているため、開始アドレス(オフセット)は必ず 0 からとなるためです。
UInt64 m_Size は動画ファイルのファイルサイズ(バイト数)に書き換えます。
編集した WL3_AmbushIntro_1080p-sharedassets2.assets-901.txt と WL3_AmbushIntro_4K-sharedassets2.assets-904.txt ファイルを UABEA でインポートします。
UABEA で sharedassets2.assets ファイルを開き、PathID 901 の WL3_AmbushIntro_1080p と PathID 904 の WL3_AmbushIntro_4K を選択して Import Dump をクリックします。
Import Dump ボタンクリック後 Select import directory 画面が開くので、編集した WL3_AmbushIntro_1080p-sharedassets2.assets-901.txt と WL3_AmbushIntro_4K-sharedassets2.assets-904.txt ファイルがあるフォルダを選択します。
Batch Import 画面(上記画像)で OK ボタンをクリックしてインポートします。
こちらの画像は Import Dump でインポート後の PathID 901 の WL3_AmbushIntro_1080p と PathID 904 の WL3_AmbushIntro_4K の View Data 内容です。
StreamedResource m_ExternalResources 以下 3つの項目 string m_Source、UInt64 m_Offset、UInt64 m_Size が編集した内容に置き換わっているのが確認できます。
Import Dump でのインポート後 PathID 901 の WL3_AmbushIntro_1080p と PathID 904 の WL3_AmbushIntro_4K の Modified 列に * マークが表示されます。
メニュー File → Save をクリックすると Save as 画面が表示されるのでファイル名を sharedassets2.assets になっていることを確認して任意の場所にファイルを保存します。
保存した sharedassets2.assets ファイルを WL3_Data フォルダにある同名の sharedassets2.assets ファイルから差し替える形で配置して完了です。
ゲームを起動して新規ゲーム開始時に字幕入り動画が再生させることが確認できたら動画ファイルの差し替えは成功です。
画像ではどちらの動画ファイルが再生されたかどうか確認できるように字幕の最後に解像度の字幕を入れています。ゲーム解像度はフル HD で起動しているため WL3_AmbushIntro_1080p.mp4 ファイルが再生されていることになります。
4K モニターは所持していないため確認できませんが、おそらく 4K 解像度なら WL3_AmbushIntro_4K.mp4 ファイルが再生されるものと思われます。
Wasteland 3 DLC 動画ファイル解析
今回は sharedassets2.assets ファイルの情報を書き換えることで動画ファイルを差し替えることに成功したので、DLC ファイルについては触る必要はありませんでしたが、ここでは同じファイルがある DLC ファイルにどのように動画ファイルが格納されて管理しているのか確認してみます。
Wasteland 3 でリリースされている 2つの DLC を導入している場合、WL3_Data\StreamingAssets\aa\StandaloneWindows64\DLC1
フォルダにある scenes_dlc1_scenes_all.bundle ファイルおよび WL3_Data\StreamingAssets\aa\StandaloneWindows64\DLC2
フォルダにある scenes_dlc2_scenes_all.bundle ファイルにゲーム開始時に再生される動画が含まれます。
どちらもファイル容量の大きさから bundle ファイルに動画ファイルが含まれていることが想像できます。
以下、DLC1 の scenes_dlc1_scenes_all.bundle ファイルを例に動画ファイルを探してみます。
UABEA で scenes_dlc1_scenes_all.bundle ファイルを開くとメッセージ「Note This bundle is compressed. Decompress to file or memory? Size: 3.18GB」が表示されました。
これは bundle ファイルが圧縮(Compress)されており、解凍(Decompress)するのに別名でファイルとして保存して開くか、メモリに展開して開くかの選択ができます。
通常は Memory ボタンをクリックして作業を続ける形で問題ないのですが、bundle ファイルのサイズが大きい場合エラーで落ちることがあります。
今回 Memory 選択後エラー落ちして作業が続けられなかったため、File を選択して任意のファイル名で保存して作業を続けます。同じ bundle ファイル名へ上書き保存はできない点に注意。
UABEA で File ボタンをクリックして任意のファイル名で解凍・ファイル保存後、scenes_dlc1_scenes_all.bundle ファイルを開くことができました。
上の画像は UABEA の File ボタンで bundle ファイルがあるフォルダ内に、別名でファイルを保存した scenes_dlc1_scenes_all.bundle.temp ファイルです。
この時点での保存したファイルは 0 KB 表記のままとなっています。
UABEA 終了後、scenes_dlc1_scenes_all.bundle ファイルを解凍して保存した scenes_dlc1_scenes_all.bundle.temp ファイルのファイルサイズが反映されます。
scenes_dlc1_scenes_all.bundle ファイルを解凍して保存した scenes_dlc1_scenes_all.bundle.temp ファイルからであれば、UABEA で解凍することなくすぐ開くことができます。
UABEA で scenes_dlc1_scenes_all.bundle ファイルが開けたら info ボタンをクリックすると Asset Info 画面を表示します。
Type 列をクリックしてソートし、VideoClip にある PathID 952 に WL3_AmbushIntro_1080p が、PathID 953 に WL3_AmbushIntro_4K の動画ファイルが確認できます。それぞれ View Data をクリックして内容を確認してみます。
scenes_dlc1_scenes_all.bundle ファイルの WL3_AmbushIntro_1080p(PathID 952)と WL3_AmbushIntro_4K(PathID 953)の View Data 内容です。
双方とも string m_Source に ~\CAB-b1fd2f503f2569cd7ad3dc87c8cae75d.resource
とあることから、CAB-b1fd2f503f2569cd7ad3dc87c8cae75d.resource ファイルに動画ファイルが格納されていることがわかります。
CAB-b1fd2f503f2569cd7ad3dc87c8cae75d.resource ファイルの見つけ方ですが、Asset Info 画面を閉じて scenes_dlc1_scenes_all.bundle ファイルを開いた直後の画面まで戻ります。
画面中央にあるドロップダウンリストをクリックすると CAB-b1fd2f503f2569cd7ad3dc87c8cae75d.resource が見つかるので、選択して Export ボタンでファイルをエクスポートします。
scenes_dlc1_scenes_all.bundle ファイルから UABEA でエクスポートした CAB-b1fd2f503f2569cd7ad3dc87c8cae75d.resource ファイルです。
CAB-b1fd2f503f2569cd7ad3dc87c8cae75d.resource ファイルのプロパティ情報です。ファイルサイズは 919,289,788バイトです。
上の画像は scenes_dlc1_scenes_all.bundle ファイルの PathID 952 の WL3_AmbushIntro_1080p のファイルサイズ UInt64 m_size = 184,213,034 と、PathID 953 の WL3_AmbushIntro_4K のファイルサイズ UInt64 m_size 735,076,754 を Windows の電卓で合算した結果です。
計算結果は 919,289,788 となり CAB-b1fd2f503f2569cd7ad3dc87c8cae75d.resource ファイルサイズと同じ結果となりました。
WL3_AmbushIntro_4K のアドレス開始(オフセット)が 184213034 と WL3_AmbushIntro_1080p のファイルサイズ(Uint64 m_Size = 184,213,034) と同じことから、CAB-b1fd2f503f2569cd7ad3dc87c8cae75d.resource ファイルは WL3_AmbushIntro_1080p と WL3_AmbushIntro_4K の 2つの動画ファイルが、バイナリデータとしてそのまま結合された resource ファイルということになります。
PC ゲーム Wasteland 3: Colorado Collection 中文化(ALI213)解析情報
ALI213 版 Wasteland 3: Colorado Collection 中文化ファイルの解析と日本語フォント作成手順を解説します。
Unity 解析ツールを使うため Il2CppDumper で dll ファイルを生成してゲームインストール先フォルダに配置 してある必要があります。
UABEA fifth release(2022/11/19)から Il2Cpp をサポートしたため、Il2CppDumper を使った dll ファイル生成は不要になりました。
これは 2021年に ALI213 版 Wasteland 3 中文化ファイルを解析して差分を特定し、Wasteland 3 の TextMesh Pro 日本語フォントを実装した時の内容 を、ゲーム側のアップデートにあわせて一緒に更新された ALI213 版 Wasteland 3: Colorado Collection 中文化ファイルを再度解析して内容を整理したものになります。
これまで説明してきた Wasteland 3: Colorado Collection - TextMesh Pro 日本語フォントの作成手順 と共通点はありますが、一部の内容が異なる部分があります。
これから説明する ALI213 版中文化ファイル準拠の方法での TextMesh Pro 日本語フォントの表示を確認していますが、成果物ファイルの公開はしません。ALI213 版中文化ファイル準拠による TextMesh Pro 日本語フォント作成方法として記録を残しておきます。
ちなみに ALI213 版とは別に 3DM 版中文化ファイルも存在します。こちらも解析対象にしていましたが Microsoft Security Essentials が反応してしまいます。どの程度危険なのかわからないため、3DM 版は解析していません。
中文化ファイル(Wasteland.3.CHS.PATCH.V4.0-ALI213.exe)展開方法
ALI213 版 中文化ファイル Wasteland.3.CHS.PATCH.V4.0-ALI213.exe を展開して解析に必要な Unity アセットファイルを取得する方法です。
中文化ファイルの exe ファイルには悪意のあるソフトウェアが含まれている可能性があります。これから説明する内容については安全性を保証する内容ではありません。心配な場合はテスト環境など用意して内容を理解した上で実行してください。
exe 中文化ファイルのインストールに抵抗がある場合、展開ツールを使うことで exe ファイルに含まれるファイルを手に入れることができます。
展開できるかどうかは展開ツールと exe ファイルに依存します。すべての exe ファイルが展開できるとは限らない点に注意してください。
ネットからダウンロードして入手した ALI213 版 Wasteland 3: Colorado Collection 中文化ファイル Wasteland.3.CHS.PATCH.V4.0-ALI213.exe です。
Universal Extractor 2(UniExtract2) をダウンロード・展開して UniExtract.exe ファイルを起動します。
起動後ウィンドウ内に Wasteland.3.CHS.PATCH.V4.0-ALI213.exe ファイルをドラッグアンドドロップして、OK ボタンをクリックして展開処理します。
成功すると同フォルダ内に Wasteland.3.CHS.PATCH.V4.0-ALI213 フォルダが生成され、その中に Unity のアセットファイルが展開されます。
Wasteland.3.CHS.PATCH.V4.0-ALI213\chs\WL3_Data
フォルダにある logo.resS、resources.assets、sharedassets1.assets ファイルです。
それぞれのアセットファイルに中文化のフォントファイルが含まれています。
次 にこのアセットファイルにどのようにして中国語フォントが含まれているのか確認しています。
こちらの画像は Wasteland.3.CHS.PATCH.V4.0-ALI213\chs\WL3_Data\StreamingAssets
フォルダ以下に本編・DLC1・DLC2 の中国語言語データの bundle ファイル(oei_assets_stringtabledata_english_e4607_53e66ff883d71916e61d183a34eab7aa.bundle、oei_dlc1_assets_all.bundle、oei_dlc2_assets_all.bundle)がそれぞれ含まれています。
英語版と中文化ファイル比較結果と中国語フォント内容
ALI213 版 中文化ファイル Wasteland.3.CHS.PATCH.V4.0-ALI213.exe から展開した Unity アセットファイル を解析します。
UnityEX で中文化ファイルの resources.assets と sharedassets1.assets ファイルを開きすべて選択します。右クリックから Export Raw を選択してファイルをエクスポートします。
オリジナルの同じ resources.assets と sharedassets1.assets ファイルも UnityEX で開き、同じ方法ですべてのファイルをエクスポート(Export Raw)します。
オリジナルと中文化それぞれの resources.assets と sharedassets1.assets ファイルから UnityEX でエクスポートした Unity_Assets_Files フォルダを WinMerge で比較します。
上の画像は WinMerge でのオリジナルと中文化 resources.assets と sharedassets1.assets ファイルの差分結果です。
各列にある左~(更新日時、サイズ)がオリジナルファイルで、右~が中文化ファイルです。拡張子 -156 の sharedassets1._00001.-156~sharedassets1._00029.-156 は レンジャー名ファイル です。
resources フォルダにある resources_00002.-7 ファイルサイズが大きく異なり、中文化ファイルのほうが大きくなっているのがわかります。
resources_00002.-7 ファイルは(UABEA: Path ID、UnityEX: #)4190 の FiraSans-Medium Default SDF - TextMesh Pro - MonoBehaviour ファイルです。
中文化ファイルのほうがサイズが大きいということで、漢字文字数分グリフデータが多く登録されていることになります。
反対に resources フォルダにある resources_00001.-7 ファイル、sharedassets1 フォルダにある sharedassets1_00001.-149・sharedassets1_00002.-149・sharedassets1_00003.-149・sharedassets1_00004.-149 ファイルはオリジナルのほうがファイルサイズが大きくなっています。
これらもすべて TextMesh Pro - MonoBehaviour ファイルでそれぞれ LiberationSans SDF(resources_00001.-7)、FiraSans-Medium SDF(sharedassets1_00001.-149)・Oswald-Medium SDF(sharedassets1_00002.-149)・authority-regular SDF(sharedassets1_00003.-149)・tolyerno4-medium SDF(sharedassets1_00004.-149)となってます。
MonoBehaviour ファイルはオリジナルのほうが大きい(中文化のほうが小さい)理由については次の通りです。
上の画像は UABEA で resources.assets ファイルを開き、PathID 4186 TextMesh Pro - MonoBehaviour LiberationSans SDF(resources_00001.-7)の View Data の内容です。画像左側がオリジナル版、右側が中文化版です。
ハイライト個所にある m_GlyphTable とその下にある m_CharacterTable のみ Size が違うため、これがファイルサイズの大きさにそのまま直結しています。
右側の中文化版ですが Size 0 とある通り中身をすべて削除していることになっています。ほかのオリジナルよりファイルサイズが小さい TextMesh Pro - MonoBehaviour ファイルも同じく中文化ファイルは Size 0 の内容となっています。
なぜこういうことしているのか当初はわからなかったのですが、おそらく m_GlyphTable と m_CharacterTable の中身をすべて削除することで強制的にフォールバックを行い、別のフォントを参照させているのではないかと思われます。
中文化版では中国語フォントは 1つしかなく(FiraSans-Medium Default SDF のみ)、1つしかない中国語フォントを読み込ませるため、残りの TextMesh Pro - MonoBehaviour ファイルにある m_GlyphTable と m_CharacterTable をすべて削除させているものと思います。
WinMerge の差分結果から中国語フォントは resources.assets ファイルに含まれる FiraSans-Medium SDF Atlas.tex ファイルであることがわかります。
中文化 resources.assets ファイルを UnityEX で開き、#616 の FiraSans-Medium SDF Atlas.tex を右クリックで Export with convert raw でエクスポートします。
Unity_Assets_Files\resources\Textures\res_logo
フォルダにエクスポートされた FiraSans-Medium SDF Atlas.tex.dds ファイルです。
エクスポート時に生成されたフォルダ名を見ると res_logo という名前のフォルダが生成されているのがわかります。
これは resources.assets ファイルからではなく、もう一つあった res_logo ファイルからテクスチャファイルがエクスポートされたことを意味します。UnityEX で開いた resources.assets ファイル #616 の FiraSans-Medium SDF Atlas.tex の Size が 96 しかない のはそれが理由となっています。
アセットファイルではどのようにフォントテクスチャを管理しているのか確認してみます。
UnityEX で中文化 resources.assets ファイルから Unity_Assets_Files\resources\Textures\res_logo
フォルダへエクスポートされた FiraSans-Medium SDF Atlas.tex.dds ファイルのプロパティ情報です。ファイルサイズは 26,214,528バイトです。
こちらは中文化 logo.resS ファイルのプロパティ情報です。ファイルサイズは 26,214,400バイトです。FiraSans-Medium SDF Atlas.tex.dds ファイルと比べて 128バイト小さいファイルサイズとなっています。
この差分の 128バイトは DDS ヘッダ 分となっており、どうやら logo.resS ファイルは FiraSans-Medium SDF Atlas.tex.dds から先頭 128バイト(DDS ヘッダ)を削除したファイルということになります。
試しにバイナリエディタで logo.resS の先頭アドレスに FiraSans-Medium SDF Atlas.tex.dds ファイルの DDS ヘッダ 128バイトを追加すると、まったく同じバイナリデータになります。
上の画像は UABEA で resources.assets ファイルを開き、PathID 616 FiraSans-Medium SDF Atlas.tex の View Data の内容です。画像左側がオリジナル版、右側が中文化版です。
Texture2D Base 以下にある m_Width、m_Height、m_CompleteImageSize と、StreamingInfo m_StreamData 以下にある offset、size、path が logo.resS ファイルの内容に書き換えられているのが確認できます。
このように TextMesh Pro フォントテクスチャについてはアセットファイルにわざわざインポートしなくても、適当な場所にフォントテクスチャファイルを配置してアセットファイルの内容もそれあわせて書き換え、その情報だけアセットファイルへインポートするだけでフォントテクスチャを差し替えることができます。
このやり方は 動画ファイル差し替え方法 と同じです。
中文化(ALI213)方式による TextMesh Pro - MonoBehaviour テキストデータ書き換え方法
オリジナル版と中文化版の TextMesh Pro - MonoBehaviour ファイル(FiraSans-Medium Default SDF)の差分情報を調べ、MonoBehaviour ファイルを中文化版に準拠した内容に書き換えて日本語フォントが表示できるようにしてみます。
上の画像は UABEA で resources.assets ファイルを開き、PathID 4186 TextMesh Pro - MonoBehaviour LiberationSans SDF(resources_00001.-7)の View Data 内容です。画像左側がオリジナル版、右側が中文化版です。
双方の差分箇所を確認します。
FaceInfo m_Faceinfo 以下にある PointSize の数値が異なります。ここの PointSize は数値を増減することによりゲーム内フォントサイズを調整できます。この数値は中国語フォント導入後の調整したフォントサイズ数値だと思います。
次に Array m_GlyphTable と Array m_CharacterTable の Size(グリフデータ数 271 と 4094)に違いがあります。ここでは Unity ゲームエンジンの TextMesh Pro で作成したフォントのアセットデータから MonoBehaviour をエクスポート、Array m_GlyphTable と Array m_CharacterTable をそのまま移植することで対応できます。
注意点としてゲームによっては Unity ゲームエンジンで作成した TextMesh Pro のグリフデータのフォーマットが若干違う可能性があります。今回 Wasteland 3 ではグリフデータのフォーマットは一致していたのでそのまま移植しても問題ありませんでしたが、内容によってはグリフデータを加工する必要があります。(関連記事 1、関連記事 2)
FaceInfo_Legacy m_fontInfo 以下および PPtr<Texture2D> atlas 以下にある AtlasWidth と AtlasHeight です。これはフォントテクスチャサイズで中国語フォントの縦横テクスチャサイズに書き換えています。
FontAssetCreationSettings m_CreationSettings 以下にある atlasWidth と atlasHeight です。こちらも同様にフォントテクスチャサイズで中国語フォントの縦横テクスチャサイズに書き換えています。
以上の差分内容から中文化ファイルの TextMesh Pro - MonoBehaviour は、オリジナルのグリフデータ(Array m_GlyphTable と Array m_CharacterTable)の書き換え(Unity ゲームエンジンで作成したグリフデータからの移植)と中国語フォントテクスチャサイズ(AtlasWidth 3か所と AtlasHeight 3か所)書き換えで中国語フォントに成功していることになります。
ちなみに本記事内にある MultiReplace を使った TextMesh Pro - MonoBehaviour データ置換処理 は Unity ゲームエンジンで作成した TextMesh Pro - MonoBehaviour データに対して、オリジナルの FileID と PathID、フォント情報(FaceInfo)、その他各項目固有の数値や文字列に置換しているため、同じフォントでも双方の MonoBehaviour データの中身(フォント表示にはおそらく影響がないパラメータ部分)は異なります。
以下、TextMesh Pro 日本語フォント作成方法 にある MultiReplace を使わないで TextMesh Pro - MonoBehaviour データを中文化準拠の内容に書き換えてみます。
UABEA を使ってオリジナルのアセットファイルからテキストデータとしてエクスポートした TextMesh Pro - MonoBehaviour ファイル(FiraSans-Medium Default SDF)をテキストエディタで開きます。
グリフデータ(Array m_GlyphTable と Array m_CharacterTable)を選択してすべて削除します。
Unity ゲームエンジンの TextMesh Pro で作成したフォントのアセットデータから FiraSans-Medium Default SDF 用 MonoBehaviour をエクスポート(Export Dump)し、グリフデータ(Array m_GlyphTable と Array m_CharacterTable)をコピーします。
上の画像のようにコピーしたグリフデータを、オリジナルの TextMesh Pro - MonoBehaviour テキストファイルへ移植します。
続けてオリジナルの TextMesh Pro - MonoBehaviour テキストファイル内にある AtlasWidth 3か所と AtlasHeight 3か所をフォントテクスチャ縦横サイズに書き換えます。
これで TextMesh Pro - MonoBehaviour テキストファイルへの日本語フォントデータの反映は完了です。
MultiReplace を使った置換リストの作成・置換処理がなくテキストエディタのみでの移植で完結するのが中文化方法のメリットです。
デメリットはグリフデータを手動で移植することになるため、フォント数が多いとそれだけ手動でのコピペ作業する手間が増えます。
PC ゲーム Wasteland 3: Colorado Collection - XUnity.AutoTranslator 情報
Wasteland 3 で 自動翻訳ツール XUnity.AutoTranslator を使った設定情報です。
2022年9月時点では Steam コミュニティの Wasteland 3 日本語レビュー と Wasteland シリーズ韓国語フォーラム にて設定方法が公開されています。
また、TeamWaldo 2(dhrgusdlrns4)による韓国語(ハングル文字)の翻訳ファイルを含む XUnity.AutoTranslator が公開 されています。
- PC ゲーム Wasteland 3: Colorado Collection で日本語を表示する方法(現在開いているページ)
- PC ゲーム Wasteland 2 Director's Cut 日本語化メモ
- PC ゲーム Syberia 3 で日本語を表示する方法
- PC ゲーム リメイク版 Shadowgate(2014)で日本語を表示する方法
- 過去に公開された PC ゲーム Pony Island の日本語化ファイルを何とかして再現する方法
- Epic 版 The Fall(Unity 2020.2.2f1)日本語化メモ
- PC ゲームが起動しない・安定しない場合に確認と設定したほうがいいかもしれないリスト
To awgsさん
教えて頂きありがとうございます!毎日少しづつ翻訳しようと思います。