PC ゲーム AI War: Fleet Command で日本語を表示する方法

2021年04月02日
1

PC ゲーム AI War: Fleet Command で日本語を表示する手順を確立することができましたので、そのやり方を説明します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法

PC ゲーム AI War: Fleet Command 日本語フォント追加方法

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、Steam 版 AI War: Fleet Command 日本語フォント導入可能
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、Steam 版 AI War: Fleet Command 日本語フォント導入可能
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、GOG 版 AI War: Fleet Command 日本語フォント導入可能

今回、日本語フォントの導入と日本語表示テストするためにインストールした Steam 版 および GOG 版 AI War: Fleet Command +全 DLC です。

なお、ゲーム本体+DLC がすべて含まれているバージョンは Steam では AI War Bundle (2014)、GOG では AI War Collection と名称が一部異なっています。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、Steam ライブラリで AI War: Fleet Command プロパティ画面を開き、ローカルファイルタブで 「ローカルファイルを閲覧...」 をクリックしてインストールフォルダを開く

Steam 版 AI War: Fleet Command でインストール先フォルダを開きたい場合、Steam ライブラリからプロパティ画面を開き、ローカルファイルにある 「参照...」 ボタンをクリックすることでインストール先フォルダにすぐにアクセスできます。

または、Steam ライブラリでタイトルを右クリック → 管理 → ローカルファイルを閲覧、をクリックすることでインストール先フォルダを開くこともできます。

次の項目 から AI War: Fleet Command で日本語フォントを導入する方法を説明します。

また、今回の日本語フォントを導入するために行った解析方法については こちら で説明しますので、興味があればご覧ください。

UnityEX を使って AI War: Fleet Command の font_raw ファイル抽出

雑用担当さんの 2016年 Song of the Deep 解析記事 に Unity で使用されている font_raw ファイルにフォントデータ(.ttf)を追加して、日本語を表示できるようにする方法が紹介されています。

今回は 雑用担当さんの記事内容 に従って日本語フォントデータを追加します。

まずは準備として UnityEX を使って AI War: Fleet Command の assets ファイルから font_raw ファイルを抽出します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、UnityEX を使って AI War: Fleet Command の font_raw ファイル抽出、ゲームインストール先 AIWar_Data フォルダにある sharedassets0.assets ファイルから UnityEX を使って font_raw ファイルを抽出

ゲームインストール先 AIWar_Data フォルダにある sharedassets0.assets ファイルを UnityEX で開きます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、UnityEX を使って AI War: Fleet Command の font_raw ファイル抽出、ゲームインストール先 AIWar_Data フォルダにある sharedassets0.assets ファイルから UnityEX を使って font_raw ファイルを抽出、UnityEX で Type 列をクリックしてソート、128(Font RAW)の font_raw ファイルが対象

UnityEX 内にある Type 列をクリックするとソートするので、128(Font RAW) まで画面をスクロールすると目的の font_raw ファイルが見つかります。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、UnityEX を使って AI War: Fleet Command の font_raw ファイル抽出、ゲームインストール先 AIWar_Data フォルダにある sharedassets0.assets ファイルから UnityEX を使って font_raw ファイルを抽出、UnityEX で Type 列をクリックしてソート、128(Font RAW)の font_raw ファイルが対象、右クリックから Export selected をクリック

128(Font RAW) の font_raw ファイル、全 19項目を選択状態にして、右クリックで Export selected をクリックします。

ちなみにその下にある Export with convert をクリックした場合、font_raw ファイルにフォントデータ(.ttf)が含まれていれば、ttf フォントファイルをエクスポートすることができる場合があります。(ゲームによってはできない場合もあります)

font_raw ファイル からフォントファイル(.ttf)をエクスポートすることができれば、Sunless Sea + DLC Zubmariner フォントファイルエクスポート・インポート方法 と同じやり方で、日本語対応した ttf フォントファイルに置き換えてインポートすることで、日本語を表示することができる可能性があります。(できない可能性もあります)

今回 AI War: Fleet Command の font_raw ファイルには ttf フォントデータは含まれていないため、この方法は使えません。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、UnityEX を使って AI War: Fleet Command の font_raw ファイル抽出、ゲームインストール先 AIWar_Data フォルダにある sharedassets0.assets ファイルから UnityEX を使って font_raw ファイルを抽出、UnityEX で Type 列をクリックしてソート、128(Font RAW)の font_raw ファイルが対象、右クリックから Export selected をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0 フォルダにエクスポートされた font_raw ファイル

UnityEX を使って、AIWar_Data\Unity_Assets_Files\sharedassets0 フォルダにエクスポートされた font_raw ファイル 19個です。

ゲームで使用されているフォント情報を事前に特定する方法がわからないため、ここでエクスポートしたすべての font_raw ファイルのフォントが使われているかどうかはわかりません。

次に エクスポートした font_raw ファイルにフォントデータを追加する方法 を説明します。

データを書き換えるため、あとで元に戻したい場合は必要に応じて sharedassets0.assets ファイルかエクスポートした font_raw ファイルをバックアップしておきます。

AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え

UnityEX でエクスポートした font_raw ファイル をバイナリエディタを使って日本語フォントデータの追加・書き換えを行います。やり方は 雑用担当さんの記事内容 と同じです。

バイナリエディタには FavBinEdit を使用します。

FavBinEdit を使う理由はこちらであらかじめ用意した AI War 専用ウォッチデータを読み込むことで、追加・削除・書き換えの目安となるバイナリデータの位置をわかるようにしてあるためです。

私が作成したウォッチデータは こちら からダウンロードしてください。

どのようにして調べてウォッチデータを作成したかについては こちら で説明します。興味があればご覧ください。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、UnityEX でエクスポートした AIWar_Data\Unity_Assets_Files\sharedassets0 フォルダにある LightNormal.font_raw ファイルをバイナリエディタ FavBinEdit で開く

UnityEX でエクスポートした AIWar_Data\Unity_Assets_Files\sharedassets0 フォルダにある font_raw ファイルをバイナリエディタ FavBinEdit で開きます。

今回は LightNormal.font_raw ファイルを例に説明します。ほかの font_raw ファイルでも手順は同じです。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、バイナリエディタ FavBinEdit で LightNormal.font_raw ファイルを開き、ダウンロードしたウォッチデータ(LightNormal.font_raw.FavBinEdit-W)を読み込む

FavBinEdit のメニュー ウォッチ → ウォッチデータの読み込みから、ウォッチデータファイル LightNormal.font_raw.FavBinEdit-W を開きます。

開くウォッチデータを間違っていなければ、画像のようにすべての項目に値が表示されます。(一部の長い文字列項目は値が空白になっていることがあります)

今回こちらで用意したウォッチデータはすべて手入力で作成したものです。そのため、どこかで間違いがある可能性があります。

このウォッチデータをもとにフォントデータを追加・書き換えの作業をします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータでマークされていないデータを削除操作(ウォッチデータ CharacterRects SInt32 size と PPtr Texture FileID の間のバイナリデータ)、ウォッチデータ PPtr Texture FileID 直前までカーソルを移動

最初にウォッチデータ以外のバイナリデータは不要なので削除から始めます。

まず、ウォッチデータ CharacterRects SInt32 sizePPtr Texture FileID の間にあるバイナリデータを削除します。

ウォッチデータ PPtr Texture FileID 直前までカーソルを移動します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータでマークされていないデータを削除操作(ウォッチデータ CharacterRects SInt32 size と PPtr Texture FileID の間のバイナリデータ)、ウォッチデータ PPtr Texture FileID 直前までカーソルを移動後、Ctrl+Shift+Home キー押下でカーソル位置からデータ開始位置まで選択状態

ウォッチデータ PPtr Texture FileID 直前までカーソル移動後、Ctrl+Shift+Home キー押下でカーソル位置からデータ開始位置まで選択状態にします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータでマークされていないデータを削除操作(ウォッチデータ CharacterRects SInt32 size と PPtr Texture FileID の間のバイナリデータ)、ウォッチデータ PPtr Texture FileID 直前までカーソルを移動後、Ctrl+Shift+Home キー押下でカーソル位置からデータ開始位置まで選択した状態で、Shift キー押しながら矢印キーでウォッチデータ CharacterRects SInt32 size の後ろまでカーソル移動、ウォッチデータでマークされていないデータを選択した状態

データ開始位置まで選択された状態から、Shift キー押しながら矢印キーでウォッチデータ CharacterRects SInt32 size の後ろまでカーソルを移動することで、ウォッチデータでマークされていないデータを選択した状態にします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータでマークされていないデータを削除操作(ウォッチデータ CharacterRects SInt32 size と PPtr Texture FileID の間のバイナリデータ)、ウォッチデータ PPtr Texture FileID 直前までカーソルを移動後、Ctrl+Shift+Home キー押下でカーソル位置からデータ開始位置まで選択した状態で、Shift キー押しながらウォッチデータ CharacterRects SInt32 size の後ろまでカーソル移動、ウォッチデータでマークされていないデータを選択した状態で Backspace か Delete キーで削除

ウォッチデータでマークされていないデータを選択した状態で Backspace か Delete キーで削除します。

問題なければウォッチデータ PPtr Texture FileID が画面内で詰めた状態で表示されます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータでマークされていないデータを削除操作(ウォッチデータ KerningValues SInt32 size と float PixelScale の間のバイナリデータ)、ウォッチデータ float PixelScale 直前までカーソルを移動

続けてウォッチデータ KerningValues SInt32 sizefloat PixelScale の間にあるバイナリデータを削除します。

ウォッチデータ float PixelScale 直前までカーソルを移動します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータでマークされていないデータを削除操作(ウォッチデータ KerningValues SInt32 size と float PixelScale の間のバイナリデータ)、ウォッチデータ float PixelScale 直前までカーソルを移動後、Ctrl+Shift+Home キー押下でカーソル位置からデータ開始位置まで選択状態

ウォッチデータ float PixelScale 直前までカーソル移動後、Ctrl+Shift+Home キー押下でカーソル位置からデータ開始位置まで選択状態にします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータでマークされていないデータを削除操作(ウォッチデータ KerningValues SInt32 size と float PixelScale の間のバイナリデータ)、ウォッチデータ float PixelScale 直前までカーソルを移動後、Ctrl+Shift+Home キー押下でカーソル位置からデータ開始位置まで選択した状態で、Shift キー押しながらウォッチデータ KerningValues SInt32 size の後ろまでカーソル移動、ウォッチデータでマークされていないデータを選択した状態

データ開始位置まで選択された状態から、Shift キー押しながら矢印キーでウォッチデータ KerningValues SInt32 size の後ろまでカーソルを移動することで、ウォッチデータでマークされていないデータを選択した状態にします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータでマークされていないデータを削除操作(ウォッチデータ KerningValues SInt32 size と float PixelScale の間のバイナリデータ)、ウォッチデータ float PixelScale 直前までカーソルを移動後、Ctrl+Shift+Home キー押下でカーソル位置からデータ開始位置まで選択した状態で、Shift キー押しながらウォッチデータ KerningValues SInt32 size の後ろまでカーソル移動、ウォッチデータでマークされていないデータを選択した状態で Backspace か Delete キーで削除

ウォッチデータでマークされていないデータを選択した状態で Backspace か Delete キーで削除します。

問題なければウォッチデータ PPtr Texture FileID が詰められて、画面内にはウォッチデータのみが表示されます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ CharacterRects SInt32 size に移動

不要なバイナリデータの削除が終わったら、次に指定のウォッチデータのバイナリデータを書き換えます。

ウォッチデータ CharacterRects SInt32 size に移動します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ CharacterRects SInt32 size に移動、00 00 00 00 に書き換え

Insert キーを押して挿入から上書き(画面右下に表示)モードに変更します。

ウォッチデータ CharacterRects SInt32 size00 00 00 00 に書き換えます。

この時ウォッチデータが消えてしまいますが、おそらく仕様と思われるので気にせず次に進めます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ KerningValues SInt32 size に移動

続けてウォッチデータ KerningValues SInt32 size に移動します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ KerningValues SInt32 size に移動、00 00 00 00 に書き換え

ウォッチデータ KerningValues SInt32 size00 00 00 00 に書き換えます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ int ConvertCase に移動

続けてウォッチデータ int ConvertCase に移動します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ int ConvertCase に移動、FF FF FF FF(-1) から FE FF FF FF(-2) に書き換え

ウォッチデータ int ConvertCaseFF FF FF FF(-1=ビットマップフォント) を FE FF FF FF(-2=ダイナミックフォント) に書き換えます。

ちなみにほかのゲームでも UABE(Unity Assets Bundle Extractor) で解析したときに、ウォッチデータ int ConvertCase に該当する箇所が FE FF FF FF(-2) になっていればダイナミックフォント(.ttf)が含まれていることになるので(ただし、ゲームで使われているとは限らない)、UnityEX で font_raw ファイルを右クリックから Export with convert を選択すれば、ttf フォントファイルをエクスポートすることが可能なはずです。(インポートも可)

最後にフォントデータを追加します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、font_raw ファイルに追加したい ttf フォントファイル(今回は UD デジタル教科書体 NK-B)を用意してバイナリディタで開く、ttf フォントファイルのサイズとバイナリデータを font_raw ファイルに追加・書き換え

追加したい ttf フォントファイルをバイナリエディタで開きます。(画像は UD デジタル教科書体 NK-B のバイナリデータ)

フォントのバイナリデータを全部選択した状態で 16進数のサイズを確認します。UD デジタル教科書体 NK-B の場合、0x471904 です。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ FontData SInt32 size に移動

ウォッチデータ FontData SInt32 size に移動します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ FontData SInt32 size に移動、追加したい ttf フォントファイルのサイズをリトルエンディアンで書き換え(UD デジタル教科書体 NK-B の場合、サイズ 0x471904 でリトルエンディアンで 04 19 47 00)

ウォッチデータ FontData SInt32 size00 00 00 00 となっているので、ここに追加したい ttf フォントファイルのサイズをリトルエンディアンで書き換えます。

UD デジタル教科書体 NK-B の場合、サイズ 0x471904 なのでリトルエンディアンで 04 19 47 00 に書き換えます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ float FontSize の先頭にカーソルを移動

ウォッチデータ float FontSize の先頭にカーソルを移動します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ float FontSize の先頭にカーソルを移動、設定したい ttf フォントのバイナリデータを追加
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ウォッチデータ float FontSize の先頭にカーソルを移動、設定したい ttf フォントのバイナリデータを追加

ウォッチデータ float FontSize の先頭にカーソル移動後、ttf フォントのバイナリデータ すべてをコピーして貼り付け追加します。

このように font_raw ファイルにダイナミックフォントが使用されている場合は、ttf フォントのバイナリデータがそっくり追加されている形なので、UABE(Unity Assets Bundle Extractor) を使ってアドレス位置を特定することでバイナリエディタから ttf フォントデータを抽出することもできます。

ここまで作業を終えたら保存します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、ttf フォントデータ追加後の LightNormal.font_raw ファイルサイズ、UnityEX でインポートして

ttf フォントデータ追加後の LightNormal.font_raw ファイルのサイズです。

AIWar_Data\Unity_Assets_Files\sharedassets0 フォルダに ttf フォントデータを追加した LightNormal.font_raw ファイルがある状態で、UnityEX で sharedassets0.assets ファイルを開き Import files ボタンをクリックして LightNormal.font_raw ファイルをインポートします。

これで日本語フォントの追加作業は完了です。ゲームを起動してフォントが変更されているかどうか、言語ファイルを書き換えて日本語が表示されるかどうか確認します。

font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)

日本語フォントを追加した font_raw ファイルをインポート した後、ゲームを起動してフォントが変更されているかどうか、言語ファイル書き換えで日本語が表示されるかどうか確認します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)、デフォルトフォントのスクリーンショット(タイトル画面)
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)、デフォルトフォントのスクリーンショット(ホスト画面)

フォント変更前、デフォルトフォントの AI War: Fleet Command スクリーンショットです。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)、LightNormal.font_raw に UD デジタル教科書体 NK-B ttf フォントファイル追加・書き換え後のスクリーンショット(タイトル画面)
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)、LightNormal.font_raw に UD デジタル教科書体 NK-B ttf フォントファイル追加・書き換え後のスクリーンショット(ホスト画面)

UD デジタル教科書体 NK-B フォント追加後の AI War: Fleet Command スクリーンショットです。変更したフォントに反映されているのが確認できます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)、LightNormal.font_raw に UD デジタル教科書体 NK-B ttf フォントファイル追加・書き換え、一部日本語化後のスクリーンショット(タイトル画面)
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)、LightNormal.font_raw に UD デジタル教科書体 NK-B ttf フォントファイル追加・書き換え、一部日本語化後のスクリーンショット(ホスト画面)

AIWarGame\RuntimeData\Language\en フォルダにある xml ファイルの一部を日本語に書き換えた後の AI War: Fleet Command スクリーンショットです。日本語が表示されているのが確認できます。

ちなみにデフォルトフォントのままや日本語フォントを追加していない場合など、フォントが対応していない文字は表示されません。

今回はフォントデータを追加して表示できるようにしただけで一切調整はしていないため、スクリーンショットのように文字が途中で改行したり、枠内に文字が収まりきらなかったりしています。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)、AI War: Fleet Command の font_raw ファイルをバイナリエディタ(FavBinEdit)を使ってフォントデータ追加・書き換え、UnityEX でエクスポートした AIWar_Data\Unity_Assets_Files\sharedassets0 フォルダにある MediumTooltip.raw ファイルをバイナリエディタ FavBinEdit で UD デジタル教科書体 NK-B ttf フォントファイルのバイナリデータを追加・書き換え

ゲーム中のユニット説明は MediumTooltip.raw ファイルを使用していたので 同じ手順で同じフォントを追加 してみます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)、デフォルトフォントのスクリーンショット(ユニット説明)

こちらは MediumTooltip.raw ファイルフォント追加前(デフォルトフォント)のスクリーンショットです。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command 日本語フォント追加方法、font_raw ファイル日本語フォント変更後のスクリーンショット(一部日本語表示)、MediumTooltip.raw に UD デジタル教科書体 NK-B ttf フォントファイル追加・書き換え、一部日本語化後のスクリーンショット(ユニット説明)

こちらは MediumTooltip.raw ファイルへ UD デジタル教科書体 NK-B フォント追加+一部日本語化後のスクリーンショットです。

フォント変更と日本語が表示されているのが確認できます。

今回の AI War: Fleet Command の font_raw ファイルバイナリデータは一通り 解析 できているので、一部値を変更すればフォントの調整ができるような気がしますが、今回は試していません。

過去にどこかで公開したと思われる AI War: Fleet Command の日本語化ファイル(2010年アルファ版)を、運よくダウンロードして削除せず HDD 内に残してあったのを発見しました。配布元がおそらくすでに消滅しているようなので、こちらで 再配布 することにします。

この日本語化ファイルが使えるかどうかは試していません。仮に使用できなくても翻訳内容を再利用することはできるかもしれません。

Readme.txt ファイルに記載されている内容からおそらく この方 が作成した日本語化ファイルと思われます。

PC ゲーム AI War: Fleet Command フォント解析内容

AI War: Fleet Command のファイルを解析した時の手順を紹介します。

ゲームエンジンは Unity なので同じデータ構造をしているゲームなら同様の手順で(解析ツールが対応しているのなら)解析可能です。

AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法、UABE(Unity Assets Bundle Extractor)の AssetBundleExtractor.exe 起動

Unity ゲームの assets ファイルを解析するのに UABE(Unity Assets Bundle Extractor) を利用します。

UABE をダウンロードして展開・解凍したら AssetBundleExtractor.exe を実行します。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法、UABE(Unity Assets Bundle Extractor)起動後、File → Open をクリックして AIWar_Data フォルダにある sharedassets0.assets を開く

UABE を起動したら File → Open をクリック。

AI War: Fleet Command の AIWar_Data フォルダにある sharedassets0.assets ファイルを開きます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法、UABE(Unity Assets Bundle Extractor)起動後、File → Open をクリックして AIWar_Data フォルダにある sharedassets0.assets ファイルを開く、Assets Info 画面で File ID 0 - Path ID 312 にある LightNormal を選択状態にして View Data ボタンをクリック

Assets Info 画面で File ID 列 番号 0 - Path ID 列 番号 312 にある LightNormal を選択状態にして View Data ボタンをクリックします。

なお、この Path ID の番号 312 は UnityEX で sharedassets0.assets ファイルを開いたときの # 列の番号と同じ です。

ちなみに File ID 番号 0 は現在開いている assets ファイルを指しているようです。(参考情報

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法、UABE(Unity Assets Bundle Extractor)起動後、File → Open をクリックして AIWar_Data フォルダにある sharedassets0.assets ファイルを開く、File ID 0 - Path ID 312 にある LightNormal を選択状態にして View Data ボタンをクリック、Asset Data 画面の Font Base 内容(LightNormal.font_raw)
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法、UABE(Unity Assets Bundle Extractor)起動後、File → Open をクリックして AIWar_Data フォルダにある sharedassets0.assets ファイルを開く、File ID 0 - Path ID 312 にある LightNormal を選択状態にして View Data ボタンをクリック、Asset Data 画面の Font Base 内容(LightNormal.font_raw)
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法、UABE(Unity Assets Bundle Extractor)起動後、File → Open をクリックして AIWar_Data フォルダにある sharedassets0.assets ファイルを開く、File ID 0 - Path ID 312 にある LightNormal を選択状態にして View Data ボタンをクリック、Asset Data 画面の Font Base 内容(LightNormal.font_raw)ツリー構造

上記の Asset Data 画面は sharedassets0.assets ファイルの LightNormal(=LightNormal.font_raw) の Font Base 内容です。

UABE の Assets Info 画面 で View Data ボタンではなく Export Dump をクリックすると、テキスト形式で Font Base の内容を出力することもできます。

この表示された内容をもとにバイナリエディタ FavBinEdit で font_raw ファイルのウォッチデータを作成します。

ウォッチデータを作成する上で Asset Data 画面に表示された各項目の要点についてかんたんに説明します。

ところどころにある [view asset] をクリックすると、その上にある File ID 番号(アセットファイル、~.assets) と Path ID 番号(アセットファイルに含まれるファイル) を指すファイル情報を表示します。File ID 番号は Assets Info 画面 にあるメニュー View → Dependencies から対応する番号のアセットファイルを確認できます。

File ID・Path ID ともに 0 ならクリックしてもなにも表示しません。File ID か Path ID に 0 以外の番号が指定されていればファイル情報を表示できるはずなのでどのファイル・データを参照しているのか確認できます。ですが、今回のウォッチデータを作成するうえでは関係ないため [view asset] 以下の内容は無視して問題ありません。

数字の 0 ~ から順に増えていく項目(ここでは各ビットマップフォントのおそらく座標などに関する情報)があり、中身を把握するうえでは正確なウォッチデータを作成するのに重要ですが、今回の font_raw ファイルに ttf フォントデータを利用するという点においては すべて削除対象 となっているので無視しています。

変数の型が int(整数)の場合、signed(符号あり) と unsigned(符号なし) がありますが、unsigned が明示してなければ原則 signed int(=SInt 表記または int 表記のみ) とみていいようです。

型の後ろに数字(SInt32 など)がありますが、これがその項目のバイト数を意味しています。32 の場合は 4バイト(00 00 00 00FF FF FF FF)でほとんどの場合はこれが基本です。(32 などの数字はおそらくビット数(232))

ほかにも数字が 8 や 16、64 の場合があり、8 なら 1バイト(00FF)、16 なら 2バイト(00 00FF FF)、64 なら 8バイト(00 00 00 00 00 00 00 00FF FF FF FF FF FF FF FF)のパターンがあります。8 や 16 表記(bool 型)はあまりみかけないので確かなことはいえませんが、バイナリデータとしては原則 4バイト確保していることが多いようです。

型の後ろに数字がない場合(int のみ)がありますが、文字列ではない数値データであれば基本的に 4バイトと判断して問題ないでしょう。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法、UABE(Unity Assets Bundle Extractor)で調べた sharedassets0.assets ファイルの LightNormal.font_raw の Font Base 内容をもとに、バイナリエディタ FavBinEdit のウォッチデータを作成
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法、UABE(Unity Assets Bundle Extractor)で調べた sharedassets0.assets ファイルの LightNormal.font_raw の Font Base 内容をもとに、バイナリエディタ FavBinEdit のウォッチデータを作成
PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command - font_raw ファイル解析およびバイナリエディタ FavBinEdit ウォッチデータ作成方法、UABE(Unity Assets Bundle Extractor)で調べた sharedassets0.assets ファイルの LightNormal.font_raw の Font Base 内容をもとに、バイナリエディタ FavBinEdit のウォッチデータを作成

UABE で解析した Font Base の内容をもとに FavBinEdit で作成した font_raw ファイルのウォッチデータです。

バイナリデータを選択した状態で Ctrl+W キーを押すことでウォッチデータを登録できます。

FavBinEdit各ウォッチデータの名称は文字数制限があるため、一部の名称は省略 しています。 → 列幅で文字数制限があったことが判明、列幅を広げることで文字数制限はなくなります。

各項目の属性は右クリックで変更可能です。整数(Int)・浮動小数(float)・16進数(hex)・10進数符号あり(signed int)・10進数符号なし(unsigned int)・リトルエンディアン・ビッグエンディアンと用意されています。

float 型の数値 ←→ バイナリをチェックしたい場合は しらいと氏のブログ記事にある変換スクリプト が便利です。ほかの変換サイトでは変換結果がズレたことがあったので、しらいと氏のブログ記事でチェック用に利用しています。

文字列に関して型は string で文字数(バイト数)に応じて 4バイト単位で確保されます。ウォッチデータ Systopie の場合だと文字コードは UTF-8、8文字でちょうど 8バイトですが、例えばこれが 9文字の場合だと 12バイト確保して残り 3バイトは 00 データで埋めることになります。(参考情報:アライメント4byte まるめ

文字列 Systopie の前にある 4バイトのウォッチデータ(ここでは Character Count と命名)は文字列(Systopie)の長さ(バイト数)をリトルエンディアンで格納したものです。

Systopie は 8文字(8バイト)なのでビッグエンディアンなら 00 00 00 08 になりますが、ほとんどの場合はリトルエンディアンなので 08 00 00 00 となります。この情報は UABE では表示されない部分なので、文字列がある場合は直前に文字列のバイト数を格納しているバイナリデータがあると見たほうがよいでしょう。

このように font_raw ファイルを解析することで、このファイル形式がフォントとして使われている Unity ゲームでは ttf フォントデータを追加 することでビットマップフォントから切り替えることができるだけでなく、好みのフォントに変更したり日本語が表示できるようになります。

注意したい点として、今回の場合この方法で日本語フォントへの切り替えができましたが、ゲームによっては font_raw ファイルが含まれているというだけで、実際にはビットマップフォントが使用されていることがあります。よってこのやり方が font_raw を含むすべてのゲームに通用するとは限りませんので、いろいろと試行錯誤と検証が必要となります。

AI War: Fleet Command フォントファイル特定方法

AI War: Fleet Command の font_raw ファイルは全部で 19ファイルあり、各ファイルそれぞれにビットマップフォント(.tex)と 1対1 で紐づけられています。

そのため、font_raw ファイルが 19 ファイルもあることにより、ビットマップフォントも 19ファイル存在することになります。

ここでは こちらの情報 を参考に、どのフォントファイルがゲーム内のどこで使われているのかを地道に探した時の方法を紹介します。

データを書き換えるため、あとで元に戻したい場合は必要に応じて sharedassets0.assets ファイルか、このあとエクスポートする dds ファイルをバックアップしておきます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック

UnityEX で AIWar_Data フォルダにある sharedassets0.assets ファイルを開きます。

UnityEX 画面内の Name 列をクリックしてソートして、Font Texture ~.tex ファイル 19個を選択した状態にしたら右クリックから Export with convert をクリックします。

UnityEX で tex ファイルを Export with convert するとデフォルトで dds 形式でファイルをエクスポートします。右クリックメニュー内にある Textures から png 形式に変更してエクスポートすることもできます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダにエクスポートされた Font Texture ~.tex.dds ファイル 19個、Font Texture.tex.dds ファイルが LightNormal.font_raw のビットマップフォントファイル(LightNormal.font_raw の Font Base、PPtr Texture m_Texture に定義されている File ID 0 - Path ID 28 で判定)、Font Texture.tex.dds ファイルを GIMP で開く

AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダにエクスポートされた Font Texture ~.tex.dds ファイル 19個です。

この中の Font Texture.tex.dds ファイルが LightNormal.font_raw で使用されるビットマップフォントファイルです。

これは 解析ツール UABE で調べた時の LightNormal.font_raw の Font Base、PPtr Texture m_Texture に定義されている File ID 0 - Path ID 28UnityEX の # 列番号 28 と同じため、ファイル名が特定できています。

エクスポートした Font Texture.tex.dds ファイルを GIMP で開きます。(ファイルを開く際にパス名に 2バイト文字があるとエラーで開けないため注意)

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダにエクスポートされた Font Texture.tex.dds ファイルを GIMP で開く、Load DDS 画面が表示されるがここでは特に設定は変更せず OK ボタンをクリック

GIMP の Load DDS 画面が表示されますが、ここではデフォルトですべてチェックマークが入っている状態で OK ボタンをクリックします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダにエクスポートされた Font Texture.tex.dds ファイルを GIMP で開く、Font Texture.tex.dds ファイルにあるフォント内容

GIMP で開いた Font Texture.tex.dds ファイルの中身です。フォントが含まれていることが確認できます。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダにエクスポートされた Font Texture.tex.dds ファイルを GIMP で開く、Font Texture.tex.dds ファイルを適当に塗りつぶす(ここでは全体を白く塗りつぶし)

Font Texture.tex.dds ファイルを適当に塗りつぶします。

フォント全体を白く塗りつぶすことで、ゲーム内にこのビットマップフォントがどこで表示されるのかを確認するというやり方です。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダにエクスポートされた Font Texture.tex.dds ファイルを GIMP で開く、Font Texture.tex.dds ファイル加工後、ファイル → 名前を付けてエクスポートをクリック

Font Texture.tex.dds ファイル加工後、ファイル → 名前を付けてエクスポートをクリックします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダにエクスポートされた Font Texture.tex.dds ファイルを GIMP で開く、Font Texture.tex.dds ファイル加工後、ファイル → 名前を付けてエクスポートをクリック、画像をエクスポート画面でファイル名は変更しないままエクスポートボタンをクリック

画像をエクスポート画面でファイル名は変更しないままエクスポートボタンをクリックします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダにエクスポートされた Font Texture.tex.dds ファイルを GIMP で開く、Font Texture.tex.dds ファイル加工後、ファイル → 名前を付けてエクスポートをクリック、画像をエクスポート画面でファイル名は変更しないままエクスポートボタンをクリック、上書きする場合に確認の警告メッセージが表示(元に戻したい場合は事前にバックアップ)

ファイルの上書きの場合、確認の警告メッセージが表示されますので、上書きしても問題ない場合は置き換えるボタンをクリックします。あとで元に戻したい場合は事前にバックアップしてから上書きします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダにエクスポートされた Font Texture.tex.dds ファイルを GIMP で開く、Font Texture.tex.dds ファイル加工後、ファイル → 名前を付けてエクスポートをクリック、画像をエクスポート画面でファイル名は変更しないままエクスポートボタンをクリック、Save as DDS 画面で Format を A8 に変更して OK ボタンをクリックしてエクスポート

Save as DDS 画面が表示されるので、Format を A8 に変更して OK ボタンをクリックしてエクスポートします。

この指定したフォーマットは UnityEX の Type 列、ビットマップフォントファイルの Alpha8 にあわせたものです。

AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダに加工した Font Texture.tex.dds ビットマップフォントファイルがある状態で、UnityEX で sharedassets0.assets ファイルを開き Import files ボタンをクリックして Font Texture.tex.dds ファイルをインポートします。

PC ゲーム AI War: Fleet Command で日本語を表示する方法、PC ゲーム AI War: Fleet Command フォント解析内容、AI War: Fleet Command フォントファイル特定方法、UnityEX で sharedassets0.assets ファイルを開き Name 列をクリックしてソート、Font Texture ~.tex ファイル 19個を選択した状態で、右クリックから Export with convert をクリック、AIWar_Data\Unity_Assets_Files\sharedassets0\Textures フォルダに画像編集した Font Texture.tex.dds ファイルを配置した状態で UnityEX で Import files ボタンをクリックしてインポート、ゲームを起動して白く塗りつぶしたフォントが表示されたことを確認

ゲームを起動して変更されたフォントが表示されれば、フォントの特定は成功です。

awgs
Posted by awgs

Comments 1

There are no comments yet.

Anonymous

こちらの日本語化大変参考になりました!

2021/05/26現在、当方のWIN10ではUD デジタル教科書体 NK-B系ではクラッシュしてしまいましたが、
MSゴシックPのttf(8.5MB)を埋め込んだところ、無事に日本語化できました!
ありがとうございましたm(__)m

2021/05/26 (Wed) 10:45

英数字フィルタ、URL フィルタ、おまかせ禁止ワードを有効 および 禁止ワードを設定 しています。コメント内容は承認後に公開されます。コメントの内容によっては削除する ことがあります。質問がある場合は こちらの記事内容 をお読みの上、質問内容をなるべく詳細に正確に整理したうえで投稿してください。