PC ゲーム Syberia 3 で日本語を表示する方法
PC ゲーム Syberia 3 で日本語を表示する手順を確立することができましたので、そのやり方を説明します。なお、日本語でゲームをプレイするためには別途日本語への翻訳作業が必要です。
PC ゲーム Syberia 3 テキスト・フォント解析基本情報
PC ゲーム Syberia 3 で日本語フォントの追加とテキストファイルの翻訳方法は、2021年1月に ブリッツさんのブログ記事 ですでに解析済みで日本語フォントの作成およびテキスト翻訳の成功例があります。
ただ、テキストファイル(.xml 形式)は問題ありませんが、ビットマップ(画像)フォントを日本語フォントに置き換えるために FontMBMaker(Internet Archive)を使用した際に、Syberia 3 には対応しておらずそのまま使えないため 一部データの修正が必要なこと、修正後作成できたフォントデータから必要なデータの抽出と加工および調整作業 が必要で、かなりの手間を要する内容となっています。
今回この記事では ブリッツさんのブログ記事内容 を参考に、Unity ゲームエンジン からフォントを作成して Syberia 3 で使用できる日本語フォントのサンプルファイルを公開するとともに、どのような手順で日本語フォントを作成したのか、解析内容の公開とその手順を説明します。
Unity ゲームエンジン のインストールおよびフォント作成、Unity 用解析ツールの使用、バイナリエディタの使用など、各種導入から日本語フォント完成までの道のりは長いものとなっていますが、フォントの選択肢が広がること、Unity での TextMesh Pro(いわゆる 1.1.0 系ではない古いバージョンのもの)で作成されたビットマップ(画像)フォントについておおよその仕様を把握することができます。(成果物ファイルも公開します)
今回は Syberia 3 のみの内容となっていますが、同じ古い Unity ゲームエンジンのバージョンで同様なビットマップフォント(TextMesh Pro)を利用しているゲームがあれば、同じような解析方法とビットマップフォント作成手順で日本語フォント差し替えに応用できるかもしれません。
PC ゲーム Syberia 3 日本語フォントサンプルファイル公開
今回、日本語フォントの導入と日本語表示テストするためにインストールした Steam 版 および GOG 版 Syberia 3 です。今回のテストではどちらの配信プラットフォームでも日本語表示を確認しています。
Steam 版 Syberia 3 でインストール先フォルダを開きたい場合、Steam ライブラリからプロパティ画面を開き、ローカルファイルにある 「参照...」 ボタンをクリックすることでインストール先フォルダにすぐにアクセスできます。
または、Steam ライブラリでタイトルを右クリック → 管理 → ローカルファイルを閲覧、をクリックすることでインストール先フォルダを開くこともできます。
次の項目 から Unity ゲームエンジン で作成した日本語フォントサンプルファイルを Syberia 3 に導入する方法を説明します。
また、今回の日本語フォントを導入するために行った解析方法については こちら で、Unity ゲームエンジン を使った日本語フォント作成方法は こちら、翻訳対象のテキストファイルについては こちら で説明します。
Syberia 3 日本語フォントサンプルファイルインストール方法
私が作成した Syberia 3 日本語フォントサンプル 2021年4月18日版 Syberia3-Sample-JPMod-20210418.7z を公開します。
この日本語フォントサンプルファイルは ブリッツさんのブログ記事内容 を参考にして作成したもので、繁体中文(Traditional Chinese)を日本語に置き換えて日本語を表示するようにします。
Syberia 3 日本語フォントサンプル 2021年4月18日版 Syberia3-Sample-JPMod-20210418.7z をダウンロードして展開・解凍します。
Unity_Assets_Files フォルダがあるのでこれをコピーします。
ゲームインストール先 Syberia3_Data フォルダに、コピーした Syberia 3 日本語フォントサンプル 2021年4月18日版 Syberia3-Sample-JPMod-20210418.7z の Unity_Assets_Files フォルダを配置します。
UnityEX をダウンロードして、同じようにゲームインストール先 Syberia3_Data フォルダに UnityEX.exe を配置して実行します。
UnityEX 画面内にある Open archive から Syberia3_Data フォルダにある resources.assets ファイルを開きます。(ドラッグアンドドロップでも可)
resources.assets ファイルを開いたら UnityEX 画面上部にある Import files ボタンをクリックすると Unity_Assets_Files フォルダにあるファイルをインポートします。
これで日本語フォントの入れ替えが完了して、日本語に翻訳されたテキストがあれば日本語で表示できるようになります。
この日本語サンプルファイルでは繁体字テキストファイルから英語テキストファイルに入れ替えているので、翻訳していないところは英語テキストで表示されます。
ゲームを起動して OPTIONS → GAME にある TEXT LANGUAGE を ENGLISH から 日本語(Traditional Chinese から書き換え)に変更します。今回使用した日本語フォントは ペン字版 Y.OzFont(TTC パック) です。
以下、システムとシーンの一部を日本語に翻訳(シーンは機械翻訳)したスクリーンショットを公開します。
PC ゲーム Syberia 3 中国語(繁体字)フォント解析
ブリッツさんのブログ記事 にてある程度 Syberia 3 の中国語(繁体字)フォントの解析が済んでいますが、ここではより正確に詳細に解析する方法を紹介します。
UABE(Unity Assets Bundle Extractor 2.2 stable d) を使って Syberia3_Data フォルダにある resources.assets ファイルを開きます。
Path ID 11128 にある MonoBehaviour MSSONG_CHINSE_CUSTOM を選択して View Data をクリックします。
ちなみに Path ID 11128 の MonoBehaviour MSSONG_CHINSE_CUSTOM は繁体字(Traditional Chinese)フォント情報、Path ID 11129 の MonoBehaviour MSSONG_SCHINSE_CUSTOM は簡体字(Simplified Chinese)フォント情報と思われます。
UABE で MonoBehaviour を開いた場合、画像のように Asset View 画面が表示されるので 「はい」 を選択します。
Asset View 画面 で 「はい」 を選択した後、Open the Assembly file 画面が何度か表示されるので 「キャンセル」 を選択し続けます。
MonoBehaviour MSSONG_CHINSE_CUSTOM の Asset Data 内容が表示されました。
今回は正常に表示できていますが、UABE が対応していない(基本的に Unity 2019 バージョン以降の)ゲームデータだと、同じ操作をしても Asset Data 内容が正確に表示できない(表示される項目が極端に少ない)ことがあります。
もし、先ほどの Asset View 画面 で 「いいえ」 を選択してしまった場合は、Asset Data の内容が正しく表示されません。
その場合は、もう一度 resources.assets ファイルを開きなおして同じ操作をするか、メニューにある Tools → Get script information から Asset View 画面 を開いて 「はい」 を選択してやり直します。
MonoBehaviour MSSONG_CHINSE_CUSTOM の FaceInfo(m_fontInfo) と TMP_Glyph(m_glyphInfoList) 一部の情報内容です。
MonoBehaviour MSSONG_CHINSE_CUSTOM にある FaceInfo(m_fontInfo) の一部と TMP_Glyph(m_glyphInfoList) 全部を この後作成する日本語フォント情報 に書き換えることで、中国語(繁体字)フォントから日本語フォントに入れ替えることができます。
この Asset Data の内容をもとにバイナリエディタで書き換え対象となるデータ位置を特定します。
UnityEX を使って書き換え対象の中国語(繁体字)フォント情報ファイルをエクスポートします。
UnityEX で Syberia3_Data フォルダにある resources.assets ファイルを開きます。
# 列 11128 にある resources_00017.-2 を右クリックから Export with convert or Raw をクリックします。Syberia3_Data\Unity_Assets_Files\resources
フォルダに resources_00017.-2 ファイルがエクスポートされます。
この resources_00017.-2 ファイルは UABE で開いた Path ID 11128 の MonoBehaviour MSSONG_CHINSE_CUSTOM と同じです。
エクスポートした resources_00017.-2 ファイルを バイナリエディタ FavBinEdit で開き、MonoBehaviour MSSONG_CHINSE_CUSTOM の Asset Data 内容 をもとにウォッチデータを作成します。
ウォッチデータを作成する方法やコツについては 過去記事 を参考にしてください。
こちらですでに作成済みウォッチデータを用意しておいたので、バイナリエディタ FavBinEdit で resources_00017.-2 ファイルを開き、FavBinEdit フォルダにあるウォッチデータファイル resources_00017.-2.FavBinEdit-W を読み込めば上の画像のように書き換え対象のアドレスを特定できるようにしています。
ちなみに TMP_Glyph(m_glyphInfoList) にある 0番の TMP_Glyph data のみ各項目特定のためウォッチデータを作成しています。
ウォッチデータの内容から TMP_Glyph data 1つ(1文字)につき 32バイト(8項目×4バイト)のデータを用意していることになります。(int や float 型宣言後に数字が記載されていない場合は基本的に 4バイト)
以降、残りの 1~2451番の TMP_Glyph data は数が多いため、ここでは一つのウォッチデータ(最後尾にある水色ウォッチデータ remain TMP_Glyph data)にまとめています。
TMP_Glyph(m_glyphInfoList) の TMP_Glyph data データ終端アドレスは、0 データが連続して続くところがあるので、それを目安にすることで見つけられます。
TMP_Glyph(m_glyphInfoList) の TMP_Glyph data データ終端にある float xAdvance = 53.000000
は 16進数で 0x42540000
で、リトルエンディアンで 00 00 54 42
となり、画像のウォッチデータ終端にある 4バイトのバイナリデータ と一致します。
PC ゲーム Syberia 3 用 TextMesh Pro 日本語フォント作成方法
ここでは synctam さんの記事内容 を参考に Unity ゲームエンジンのインストール と TextMesh Pro を使って日本語フォントを作成 します。
TextMesh Pro で作成した日本語フォント の 解析 と データ抽出および加工 をして、そのデータを 中国語(繁体字)フォント情報ファイルに反映 します。
一部を除きこのセクションでの成果物はすべて Syberia 3 解析データと日本語フォントデータ(Unity 2018.4.34f1 - TextMesh Pro 1.2.2) Unity2018_4_34f1-TextMesh-Pro-1_2_2-YOzRSP-PoE2JoFont_mp2pr-Font-Data.7z ファイルにまとめて公開しておきます。
同じ手順で日本語フォントを作成した時のチェック用や、データ内容を確認したい場合、データを再利用したい時などにお使いください。
別のゲームですが ブリッツ氏によるテキストデータでエクスポートした MonoBehaviour を書き換える方法 が公開されています。この方法であれば以下に説明するバイナリエディタや正規表現を使わずテキストエディタでの作業で完結できます。
ゲームエンジン Unity 2018.4.34f1(LTS)インストール
UnityEX を使ってアセット(.assets)ファイルを読み込むことで、そのゲームで使われている Unity ゲームエンジン のバージョンがわかるようになっています。
Syberia 3 では Unity ゲームエンジン Version 5.4.3p3 であることがわかりました。
Unity ゲームエンジン をインストールするにあたり同じバージョンでそろえたほうが良いかと思いましたが、今回作成するフォントは TextMesh Pro が必要で、Unity 2018 から TextMesh Pro が標準実装 されています。
それより前の Unity バージョンでは別途 TextMesh Pro のインストールが必要なため、今回は Unity 2018 をインストールして最初から実装されている TextMesh Pro で日本語フォントを作成することにします。
Unity ゲームエンジン をインストールする方法は Unity Hub を使ってインストールする方法と、Unity Hub を介さない アーカイブサイト から直接インストーラーファイルをダウンロードしてインストールする方法があるようです。
今回は Unity アカウント作成済みでログインした状態で Unity Hub を使いインストールすることにします。詳細な手順については Unity 公式サイト より確認してください。
Unity Hub を起動したら画面右上にある 「インストール」 ボタンをクリックします。
Unity バージョンを加える画面が表示されるので、正式版にある Unity 2018.4.34f1(LTS) を選択して次へをクリックします。(Unity 2018 の最終バージョンのようです。バージョン履歴は アーカイブサイト から確認できます)
画面が切り替わるので、実行ボタンをクリックするとインストールが始まります。
Unity 2018.4.34f1(LTS)のインストールが完了しました。
Unity 2018.4.34f1(LTS)インストール後、プロジェクトに移動して 「新規作成」 ボタンをクリックします。
プロジェクトの 「新規作成」 ボタンをクリックすると、インストールした Unity バージョン 「2018.4.34f1」 が表示されるので、これをクリックします。
テンプレート画面で 「3D」 を選択して、プロジェクト名と保存先を指定したら 「作成」 ボタンをクリックすると、いろいろと処理が流れた後に Unity 開発環境画面が表示されます。
TextMesh Pro 1.2.2 日本語フォント作成
ここでは synctam さんの記事内容 にそって日本語フォントを作成していきます。
Unity 2018.4.34.f1 メインメニューから Window → Package Manager をクリックして TextMesh Pro を開きます。Unity 2018.4.34.f1 では TextMesh Pro バージョン 1.4.1 がデフォルト設定となっています。
Package Manager 画面から TextMesh Pro のバージョンを変更することができます。
今回はバージョン 1.2.2 に変更してバージョン表記横にある Update to ボタンをクリックします。
TextMesh Pro の各バージョンの主な違いについては こちらの記事 を参考にしてください。
TextMesh Pro Version 1.2.2 にバージョン変更できました。
Unity 2018.4.34.f1 メインメニューから Window → TextMeshPro → Import TMP Essential Resources をクリックします。
Import Unity Package 画面で Import ボタンをクリックします。
Unity 2018.4.34.f1 のメインメニューから Assets → Import New Asset... をクリックして、日本語フォントファイルと文字一覧テキストファイルを Unity にインポートします。画面下の Project タブにある Assets フォルダへ直接ドラッグアンドドロップでもインポートできます。
今回インポートしたのは ペン字版 Y.OzFont(TTC パック)の YOzRSP.ttf フォントファイル と PoE2JoFont_mp2pr.txt です。
上の画像では一部 YOzRSP90(YOzRSP90.ttf ファイルをインポートした時のもの) と表示されていますが、これはいろいろテストしていた時に保存した時のスクリーンショットのもので、実際使用したフォントは YOzRSP(YOzRSP.ttf)です。
これで日本語フォントを作成する準備が整いましたので、Unity 2018.4.34.f1 のメインメニューから Window → TextMeshPro → Font Asset Creator をクリックします。
Font Settings で以下の設定をしたら Generate Font Atlas ボタンをクリックしてフォント生成を開始します。
- Font Source - YOzRSP → インポートした YOzRSP.ttf ファイルを指定
- Font Size - Custom Size 53 → 今回は Syberia 3 中国語(繁体字)フォントサイズ にあわせて同じ数値に設定
- Atlas Resolution - 4096(Width)、8192(Height) → フォントサイズと文字数ファイルに応じて調整
- Character Set - Characters from File → 登録したい文字をファイルから選択
- Character File - PoE2JoFont_mp2pr → インポートした PoE2JoFont_mp2pr.txt 文字一覧ファイルを指定
- それ以外はデフォルト値
上の設定内容は一例です。ここで設定した値を中国語(繁体字)フォント情報ファイルに反映させる形になります。
Generate Font Atlas ボタンクリック後、フォント生成が完了すると上のような画像が表示されます。私の PC 環境(CPU は AMD Ryzen 7 3700X、メモリ 64GB)では約 5分ほどの処理時間がかかりました。
フォント生成の結果は画面左中央に表示されます。今回は 7,110 文字生成できました。生成できる文字数はフォントファイルに収録している文字と指定した文字内容に依存します。
フォントの生成時間は Font Settings 内容に影響します。文字数が多ければ多いほど比例して時間がかかるようになりますが、Font Size を Auto Sizing にするとさらに時間がかかるようになります。
問題なければ Save TextMeshPro Font Asset ボタンをクリックして保存します。ファイル名は Syberia 3 中国語(繁体字)フォント名にあわせて 「MSSONG_CHINESE_CUSTOM」 にして保存します。
Unity プロジェクトフォルダの Assets フォルダに保存した MSSONG_CHINESE_CUSTOM.asset ファイルです。
ちなみに Font Asset Creator でフォントを生成した際に、フォントファイルにはない文字がテキストファイルに含まれている場合では、Glyph Report.txt ファイルに生成できなかった文字としてログ出力されます。
生成できなかったフォントのログは、Unity プロジェクトフォルダの Assets フォルダに Glyph Report.txt ファイルが出力されます。
Font Asset Creator でフォント生成後、Project タブにある Assets フォルダに格納されます。MSSONG_CHINESE_CUSTOM を選択すると、画面右側に TextMesh Pro Font Asset 情報が表示されます。
TextMesh Pro Font Asset 情報の各項目内容は UABE で MonoBehaviour を開いた時の Asset Data 項目内容 とほぼ一致します。(完全には一致しません)
Unity 2018.4.34.f1 のメインメニューから GameObject → 3D Object → TextMeshPro - Text をクリックします。
FONT SETTINGS の Font Asset に生成した MSSONG_CHINESE_CUSTOM を設定します。
詳しいことはわかりませんが、これをやらないとこのあと行うビルドしたファイルから、生成した目的の日本語フォント情報ファイルとビットマップフォントファイルを抽出することができません。
Unity 2018.4.34.f1 のメインメインメニューから Build Settings... をクリックして Build ボタンをクリックします。
保存先を聞かれるので適当なフォルダを用意して、そのフォルダを選択するとビルドを開始します。
ビルド完了後、選択したフォルダ内にビルドされた実行ファイルやアセットファイルなどが生成されます。
TextMesh Pro で生成した日本語フォントは sharedassets0_assets(フォント情報) と sharedassets0.assets.resS(フォント画像ファイル)に含まれてますので、これを 解析 して データ抽出および加工 を行い、中国語(繁体字)フォント情報ファイルに反映 させます。
TextMesh Pro 1.2.2 作成日本語フォント解析
TextMesh Pro で作成した日本語フォントを含む、ビルドした Unity プロジェクトのアセットファイル sharedassets0_assets を解析するため UABE で開きます。
Path ID 8 の MonoBehaviour MSSONG_CHINSE_CUSTOM を選択して View Data をクリックします。途中でメッセージが表示されますが対処法については こちら の内容の通りに進めます。
TextMesh Pro 1.2.2 で作成した日本語フォント MonoBehaviour MSSONG_CHINSE_CUSTOM の Asset Data 内容です。
中国語(繁体字)フォント MonoBehaviour MSSONG_CHINSE_CUSTOM の Asset Data 内容 と比べると若干異なる構成となっています。
日本語フォント MonoBehaviour MSSONG_CHINSE_CUSTOM の FaceInfo(m_fontInfo) と TMP_Glyph(m_glyphInfoList) 一部の情報内容です。この情報をもとに日本語フォントのウォッチデータを作成します。
ブリッツさんのブログ ですでに言及されてますが、TMP_Glyph data の各項目の最後にある float scale = 1.000000
が Syberia 3 では不要なデータとなっています。
ちなみにこの float scale = 1.000000
は TextMesh Pro でフォント作成後の TextMesh Pro Font Asset 情報の Glyph Table にある SF:1 が該当する項目と値だと思われます。
TextMesh Pro で作成した日本語フォントを含む、ビルドした Unity プロジェクトのアセットファイル sharedassets0_assets を UnityEX で開きます。
MSSONG_CHINESE_CUSTOM Atlas.tex(フォント画像ファイル)と sharedassets0_00001.114(フォント情報ファイル)をエクスポートします。(成果物は Unity2018_4_34f1-TextMesh-Pro-1_2_2-YOzRSP-PoE2JoFont_mp2pr-Font-Data.7z の Unity_Assets_Files フォルダに含まれています)
エクスポートした sharedassets0_00001.114 ファイルを バイナリエディタ FavBinEdit で開き、日本語フォント MonoBehaviour MSSONG_CHINSE_CUSTOM の Asset Data 内容 をもとにウォッチデータを作成します。
ウォッチデータを作成する方法については 過去記事 を参考にしてください。
こちらですでに作成済みウォッチデータを用意しておいたので、バイナリエディタ FavBinEdit で sharedassets0_00001.114 ファイルを開き、FavBinEdit フォルダにあるウォッチデータ sharedassets0_00001.114.FavBinEdit-W を読み込めば、上の画像のように日本語フォントに必要なデータのアドレスを特定できるようにしています。
次に TMP_Glyph data 部分をすべて抽出して float scale = 1.000000
のみ削除 します。
TextMesh Pro 1.2.2 作成日本語フォントデータ修正
日本語フォント MonoBehaviour MSSONG_CHINSE_CUSTOM(sharedassets0_00001.114 ファイル) の TMP_Glyph data 各項目にある float scale = 1.000000 を削除して、PC ゲーム Syberia 3 で使えるように修正します。
ここでは テキストエディタ 秀丸エディタ の置換機能を使います。
sharedassets0_00001.114 ファイルから TMP_Glyph data の先頭から終端までのデータを抽出してバイナリファイルを作成します。
TMP_Glyph data の先頭データ から 終端データ まで抽出したファイルは成果物として bin フォルダに sharedassets0_00001.114-TMP_Glyph-m_glyphInfoList-TMP_Glyph-data.bin ファイルとして公開しておきます。
sharedassets0_00001.114 ファイルから TMP_Glyph data の先頭データ から 終端データ まで抽出したデータが正しいかどうか、サイズからチェックすることができます。
今回の場合だと、7,110文字(TMP_Glyph(m_glyphInfoList) の size)×36バイト(TMP_Glyph data 情報 1文字あたりの合計バイト数、9項目×4バイト) = 255,960バイトとなるので、sharedassets0_00001.114 ファイルから抽出した sharedassets0_00001.114-TMP_Glyph-m_glyphInfoList-TMP_Glyph-data.bin (成果物)のデータサイズと一致します。
TMP_Glyph data バイナリデータを バイナリエディタ FavBinEdit でコピーしてテキストファイルに貼り付けて、先頭の空白を削除します。
成果物は txt フォルダに sharedassets0_00001.114-TMP_Glyph-m_glyphInfoList-TMP_Glyph-data.bin.txt ファイルとして公開しておきます。
MonoBehaviour MSSONG_CHINSE_CUSTOM(sharedassets0_00001.114 ファイル) の TMP_Glyph data 各項目にある float scale = 1.000000 部分に該当するテキストデータ(00 00 80 3F
)終端に改行を入れます。
秀丸エディタ の置換機能で 「正規表現」 にチェックマークを入れ、検索に 「(.{108})
」、置換に 「\1\n
」 にして実行します。
これは指定文字数ごとに改行を入れる正規表現で ここ と ここ を参考にして、秀丸エディタ の正規表現で使えるようにしたものです。置換機能で正規表現が使えるテキストエディタであれば、同様なことはおそらく可能でしょう。
区切り文字数 108 の求め方ですが、 36 バイト単位で区切りたいので (2文字(1バイト)+スペース 1文字)×36 = 108 としています。
秀丸エディタ の置換機能で正規表現を使い、テキストデータ TMP_Glyph data を 36バイト単位で改行することができました。
最終行が 7,110行となっているので、文字数 7,110文字と一致します。
置換結果を成果物 txt フォルダに sharedassets0_00001.114-TMP_Glyph-m_glyphInfoList-TMP_Glyph-data-CR-scale.bin.txt ファイルとして公開しておきます。
TMP_Glyph data の float scale = 1.000000 を削除するため置換機能で 「00 00 80 3F (改行)
」 を改行のみに置換します。(データ最後尾の 00 00 80 3F
のみスペース+改行がないので事前に改行を入れておくか手動で削除)
36 バイト単位区切り後に正規表現で置換するなら、検索欄を 「(00 00 80 3F \n|00 00 80 3F$)
」 にして置換欄を 「\n
」 にすればまとめて置換できます。
置換対象を、改行を除外した 「00 00 80 3F
」 だけにしないのは、途中 float scale = 1.000000 以外の 00 00 80 3F
バイナリデータが含まれており、誤って置換されないようにするためです。
置換結果を成果物 txt フォルダに sharedassets0_00001.114-TMP_Glyph-m_glyphInfoList-TMP_Glyph-data-CR-scale-Del-scale.bin.txt ファイルとして公開しておきます。
TMP_Glyph data テキストデータ から 00 00 80 3F
(float scale = 1.000000 相当) を削除したテキストデータをコピーして バイナリエディタ FavBinEdit に貼り付けて保存します。
保存したバイナリデータを成果物 bin フォルダに sharedassets0_00001.114-TMP_Glyph-m_glyphInfoList-TMP_Glyph-data-Del-scale.bin ファイルとして公開しておきます。
TMP_Glyph data から float scale = 1.000000
(00 00 80 3F
)を削除したバイナリデータのサイズは 227,520バイト となりましたが、このサイズが正しいかどうか確認してみます。
この場合だと、7,110文字(TMP_Glyph(m_glyphInfoList) の size)×32バイト(TMP_Glyph data 情報 1文字あたりの合計バイト数、8項目(float scale = 1.000000
削除のため 9 → 8 項目)×4バイト) = 227,520バイトという計算結果となるので一致することが確認できます。
これで PC ゲーム Syberia 3 用日本語フォントの TMP_Glyph data が完成しました。このデータを使って 中国語(簡体字)フォントを日本語フォントに反映 します。
Syberia 3 中国語(繁体字)フォントデータ → 日本語フォントデータ書き換え
TextMesh Pro 日本語フォント用の ビットマップフォントファイル と フォント情報ファイル を用意できたので、中国語(繁体字)フォントデータを日本語フォントデータに書き換えます。
UnityEX で Syberia3_Data フォルダにある resources.assets ファイルからエクスポートした resources_00017.-2(中国語(繁体字)フォント情報) を バイナリエディタ FavBinEdit で開き、FavBinEdit フォルダにあるウォッチデータ resources_00017.-2.FavBinEdit-W を読み込みます。
画像のように TMP_Glyph data に相当するウォッチデータの部分をすべて削除します。
削除した TMP_Glyph data アドレス(ウォッチデータ TMP_Glyph int size がある次のアドレス)に、日本語フォントの float scale = 1.000000 を削除した TMP_Glyph data バイナリデータ(成果物 sharedassets0_00001.114-TMP_Glyph-m_glyphInfoList-TMP_Glyph-data-Del-scale.bin)をすべてコピーして追加します。
ウォッチデータ TMP_Glyph int size 94 09 00 00
(2452) を TextMesh Pro で作成 した日本語フォント文字数に書き換えます。
文字数 7,110 の場合(TMP_Glyph int size = 7110) 16進数で 0x1BC6
、リトルエンディアンで C6 1B 00 00
となります。
ウォッチデータ float Padding 00 00 00 00
(0)、float AtlasWidth 00 00 00 45
(2048.0)、float AtlasHeight 00 00 80 45
(4096.0) を TextMesh Pro で作成 した FaceInfo(m_fontInfo)内容 に書き換えます。
- float Padding 5.0 - 16進数
0x40A00000
リトルエンディアンで00 00 A0 40
- float AtlasWidth 4096.0 - 16進数
0x45800000
リトルエンディアンで00 00 80 45
- float AtlasHeight 8192.0 - 16進数
0x46000000
リトルエンディアンで00 00 00 46
ウォッチデータ int CharacterCount 94 09 00 00
(2452) を TextMesh Pro で作成 した日本語フォント文字数に書き換えます。
文字数 7,110 の場合(FaceInfo int CharacterCount = 7110) 16進数で 0x1BC6
、リトルエンディアンで C6 1B 00 00
となります。これはウォッチデータ TMP_Glyph int size 書き換え内容と同じものです。
以上で resources_00017.-2(中国語(繁体字)フォント情報) の日本語フォント情報書き換えは完了です。
ここまでの作業で 日本語フォントサンプルファイル Syberia 3 日本語フォントサンプル 2021年4月18日版 Syberia3-Sample-JPMod-20210418.7z に含まれる resources_00017.-2 ファイルと MSSONG_CHINESE_CUSTOM Atlas.tex ファイルと同じものが完成することになります。
以下、中国語(簡体字)フォントからペン字版 Y.OzFont フォントに書き換えた状態で、ゲーム内言語を簡体中文に変更したときのスクリーンショットを公開します。一部 □ が表示されていますが、おそらくフォントに含まれていない文字かと思われます。
比較用にデフォルトの中国語(簡体字)フォントのスクリーンショットを以下公開します。
PC ゲーム Syberia 3 言語ファイル 中国語版 → 英語版差し替え方法
PC ゲーム Syberia 3 を翻訳したい場合は各言語ごとにある 2種類ある xml ファイルを翻訳すればいいようです。
中国語(繁体字)フォントを利用して日本語フォントに変更しているため、そのままだと中国語(繁体字)テキストを翻訳することになりますが、英語版テキストをエクスポートしてファイル名を中国語(繁体字)に変更後インポートする形にすれば、英語 → 日本語翻訳で対応できます。
やり方は UnityEX で Syberia3_Data フォルダにある resources.assets ファイルを開き、en.xml と en_00001.xml ファイルをエクスポートしてファイル名を以下のように変更します。
- en.xml → ch_00001.xml にリネーム(名前変更)
- en_00001.xml → ch.xml にリネーム(名前変更)
上のリネーム内容は間違っておらず、このようにしないとゲームで正しく表示できません。英語と中国語(簡体字)の xml ファイルを比べてもらえればわかりますが、双方のファイル名と xml ファイル内容はちょうど入れ替わっている構成となっています。
ファイル名変更後 UnityEX でインポートして言語設定を中国語(簡体字)にすれば、英語(日本語フォントに書き換えてテキストも日本語に翻訳してあれば日本語)で表示されるようになります。
以下、中国語(簡体字)フォントからペン字版 Y.OzFont フォントに書き換え、中国語(簡体字)テキスト xml ファイルから英語テキスト xml ファイルに入れ替えて、ゲーム内言語を簡体中文に変更したときのスクリーンショットを公開します。
比較用にゲーム内言語 - 英語(フォント・テキスト共にデフォルト)のスクリーンショットを以下公開します。
Steam コミュニティガイド Syberia 3 非公式日本語化ファイル公開
2022年12月に Steam コミュニティガイドで Syberia 3 の非公式日本語化ファイルが公開 されました。
Steam 版 Syberia 3 専用非公式日本語化ファイルですが、日本語化した Steam 版 Syberia 3 から 日本語化ファイルを抽出・エクスポート して インポート すれば、GOG 版 Syberia 3 でも日本語化することができます。
Steam 版 Syberia 3 非公式日本語化ファイル - インストール方法
Steam コミュニティガイドで公開された Syberia 3 非公式日本語化ファイル を使って Steam 版 Syberia 3 を日本語化する方法です。
Steam コミュニティガイド から syberia3_ja.exe ファイルをダウンロードして実行します。
Syberia 3 アップデータ(Syberia 3 → Syberia 3 日本語化)画面が表示されるので「はい」ボタンをクリックして進めます。
差分適用フォルダ入力画面で Steam 版のインストール先 ~\Syberia3\Syberia3_Data
フォルダを入力して OK ボタンをクリックするとインストールを開始します。
日本語化更新処理が正常に完了すると、Syberia3_Data フォルダにある resources.assets ファイルに日本語化ファイルが適用されます。
ゲームを起動して(英語版であれば)OPTIONS → GAME にある TEXT LANGUAGE を「日本語」に変更することで日本語で表示されるようになります。
ちなみに言語選択時に日本語があったところの元データは韓国語です。非公式日本語化では韓国語フォント・テキストファイルを日本語フォント・テキストファイルに入れ替えています。
Steam 版 Syberia 3 非公式日本語化ファイル - フォント・テキストデータ抽出・バックアップ方法
非公式日本語化した Steam 版 Syberia 3 から日本語化ファイルのフォント・テキストデータを抽出してバックアップする方法です。
日本語化に必要なファイルを抽出できれば syberia3_ja.exe を実行することなく、Unity ツールを使ってインポート することで日本語化ができるようになります。
GOG 版 Syberia 3 ではここでエクスポートしたファイルを使って日本語化することができます。
syberia3_ja.exe で日本語化した Steam 版 Syberia 3 の Syberia3\Syberia3_Data
フォルダにある resources.assets ファイルを UnityEX で開きます。
# 列 1307 にある EUNJIN_KOREAN_CUSTOM Atlas.tex をエクスポートします。
UnityEX を使って resources.assets ファイルから Syberia3\Syberia3_Data\Unity_Assets_Files\resources\Textures
フォルダへエクスポートされた EUNJIN_KOREAN_CUSTOM Atlas.tex.dds フォントファイルです。
ファイル内容は韓国語フォントから日本語フォントに差し替えられたものとなっています。
続けて # 列 1682 にある kr.xml ファイルをエクスポートします。
最後に # 列 1723 にある kr_00001.xml ファイルをエクスポートします。
UnityEX を使って resources.assets ファイルから Syberia3\Syberia3_Data\Unity_Assets_Files\resources
フォルダへエクスポートされた kr.xml と kr_00001.xml ファイルです。
ファイル内容は韓国語から日本語に翻訳されたものとなっています。
次に UABEAvalonia(fourth release) を使ってフォントグリフファイルをエクスポートします。
UABEAvalonia(fifth release) で resources.assets ファイルを開くとツールが落ちるので、一つ前のバージョンを使います。
Syberia3\Syberia3_Data
フォルダにある日本語化された resources.assets ファイルを UABEAvalonia(fourth release) で開きます。
PathID 列 11127 にある MonoBehaviour _EUNJIN_KOREAN_CUSTOM を選択して Export Dump をクリック、エクスポート先を聞かれるので任意の場所にファイル名はそのままエクスポートします。
UABEAvalonia(fourth release) を使って日本語化された resources.assets ファイルから エクスポートされた _EUNJIN_KOREAN_CUSTOM-resources.assets-11127.txt フォントグリフファイルです。
以上のエクスポートしたフォント・テキストファイルがあれば Steam 版および GOG 版 Syberia 3 を Unity ツールを使って日本語化 することができます。
GOG 版 Syberia 3 へ非公式日本語化ファイルをインポートする方法
日本語化した resources.assets ファイルからエクスポートしたフォント・テキストファイル を、Steam 版 および GOG 版 Syberia 3 へインポートして日本語化する方法です。
ここでは GOG 版 Syberia 3 を使って日本語化する方法を説明します。
Syberia3\Syberia3_Data
フォルダに、日本語化した resources.assets ファイルからエクスポートしたフォント・テキストファイルを含む Unity_Assets_Files フォルダ を配置します。
Syberia3\Syberia3_Data
フォルダにある resources.assets ファイルを UnityEX を開きます。
Import files ボタンをクリックして Unity_Assets_Files フォルダにあるフォント・テキストファイルを resources.assets ファイルへインポートします。
次に UABEAvalonia(fourth release) で Syberia3\Syberia3_Data
フォルダにある resources.assets ファイルを開きます。
PathID 列 11127 にある EUNJIN_KOREAN_CUSTOM を選択して、Impot Dump で 日本語化した resources.assets ファイルからエクスポートされた _EUNJIN_KOREAN_CUSTOM-resources.assets-11127.txt フォントグリフファイル をインポートします。
Import Dump 後 Modfied 列に * マークが付加されます。
メニュー File → Save を選択して resources.assets ファイルを保存します。
UABEAvalonia(fourth release) では開いている assets ファイルを上書き保存ができないため、別名でいったん保存するか別フォルダで resources.assets で保存します。
保存した resources.assets ファイル(別名で保存した場合は resources.assets にリネーム)を Syberia3\Syberia3_Data
にある同名ファイルと差し替えて日本語化完了です。