Steam 版 I Love You, Colonel Sanders! A Finger Lickin' Good Dating Simulator で日本語を表示する方法
PC ゲーム I Love You, Colonel Sanders! A Finger Lickin' Good Dating Simulator で日本語を表示する方法が判明したので、そのやり方を公開します。日本語フォントが表示できるようになっただけなので、翻訳作業は別途必要です。
Steam 版 I Love You, Colonel Sanders! A Finger Lickin' Good Dating Simulator 日本語表示テスト環境
今回、日本語表示テストするためにインストールした Steam 版 I Love You, Colonel Sanders! A Finger Lickin’ Good Dating Simulator です。無料ゲームのため Steam アカウントがあればだれでもプレイできます。
Steam 版 I Love You, Colonel Sanders! A Finger Lickin’ Good Dating Simulator でインストール先フォルダを開きたい場合、Steam ライブラリからプロパティ画面を開き、ローカルファイルにある 「参照...」 ボタンをクリックすることでインストール先フォルダにすぐにアクセスできます。
または、Steam ライブラリでタイトルを右クリック → 管理 → ローカルファイルを閲覧、をクリックすることでインストール先フォルダを開くこともできます。
Steam 版 I Love You, Colonel Sanders! A Finger Lickin' Good Dating Simulator 言語ファイル編集方法
Steam 版 I Love You, Colonel Sanders! A Finger Lickin’ Good Dating Simulator は 2019年にリリースされたゲームですが、Unity ゲームエンジンはバージョン 5.6.7 と古いものを使用しています。
ユーザーレビューは 1万件以上、非常に好評という評価を得ておりますが公式言語は英語のみです。
最初は Unity ゲームなので日本語化はそれほど難しくないだろうと思い、ファイル内容をツールを使って解析を始めましたが、いくら探しても目的の言語ファイルが見つかりません。
海外でこのゲームに関する解析情報や有志翻訳情報がないかと探しましたが、Steam コミュニティ や PCGamingWiki には有志翻訳情報はなく、中文化やロシア語化あたりに解析情報やファイルがないか探しましたが見つけることはできませんでした。2022年5月時点ではおそらくどの国も有志翻訳には手を付けていないものと思われます。
Steam コミュニティ掲示板でロシア語化に関するスレ を見つけ、2022年2月のコメントでリンク先にロシア語化ファイルが公開されているようです。
この時はヒントになる情報が全く見つからず完全にお手上げ状態となっていましたが、もう一度ゲームのファイル構成を調べてみたところ、StreamingAssets フォルダに見慣れないファイルを発見。このフォルダ内にある ILYCS.bsw というファイルがなんとなく怪しいと思い、 このファイル名で検索すると Twitter で解析情報 がヒット。
Twitter での解析情報 のおかげで今回日本語フォントを表示することが実現できました。
ゲームインストール先 ILYCS\ILYCS_Data\StreamingAssets\data
フォルダに ILYCS.bsw ファイルがあります。
この ILYCS.bsw ファイルが言語ファイルとなっていますが暗号化されており、暗号化アルゴリズムには Rijndael(AES)が使われています。ファイルの複合化・暗号化には key(鍵)と iv(初期化ベクトル)が必要ですが、解析ツールであっさり特定できてしまったようです。(Twitter 情報)
また解析者による ILYCS.bsw ファイルの 複合化・暗号化 の C# ソースコードも公開されています。
この C# ソースコードをコンパイルして生成した exe ファイルに ILYCS.bsw ファイルをドラッグアンドドロップすることで、JSON ファイルへの複合化(ファイル名 ILYCS.bsw.json、テキスト内容(UTF-8)の編集が可能)、暗号化して元の ILYCS.bsw ファイルに戻すことができるようになります。
C# コンパイラ Roslyn インストール&設定
C# ソースコードのコンパイルは Visual Studio をインストールしていなくても、.NET Framework がインストールされた Windows 環境であればコンパイルできます。ところが実際に実行してみたところ、私の PC 環境では以下のエラーが発生してコンパイルできませんでした。(C# ソースコードのコンパイル方法は こちら で説明)
Microsoft (R) Visual C# Compiler version 4.8.3752.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240
4yuP6D3f.cs(53,49): error CS0103: 名前 'nameof' は現在のコンテキスト内に存在しません。
4yuP6D3f.cs(55,49): error CS0103: 名前 'nameof' は現在のコンテキスト内に存在しません。
4yuP6D3f.cs(57,49): error CS0103: 名前 'nameof' は現在のコンテキスト内に存在しません。
調べてみると上記のエラー原因は、コンパイラのバージョン(C# 5.0)が古いために起きるメッセージ内容のようです。.NET Framework 4.6.1 の場合 C# 5.0 ですが、エラーにある nameof 演算子 を使うには C# 6 以降のコンパイラが必要なようです。(参考情報 1、参考情報 2)
Visual Studio をインストールする方法以外に C# 6 のコンパイラを使えるようにするには、オープンソース C# コンパイラ Roslyn のインストールと手動で環境設定をすることで使えるようになります。
こちら と こちら の情報を参考に Roslyn のインストールと環境設定をします。
NuGet をダウンロードします。複数のバージョンがありますが基本的に最新版(nuget.exe - recommended latest vx.x.x)で問題ないと思います。
ダウンロードした nuget.exe ファイルを任意の場所に配置します。今回は C:\Program Files (x86)
に NuGet フォルダを作成して C:\Program Files (x86)\NuGet
フォルダに nuget.exe ファイルを配置した状態で説明を進めます。
システムのプロパティ画面を開き、詳細設定タブにある環境変数ボタンをクリック、ユーザー環境変数にある変数 Path を選択して編集ボタンをクリックします。
環境変数名の編集画面で新規ボタンをクリックして、nuget.exe ファイルが配置してあるパス名を入力(例:C:\Program Files (x86)\NuGet
)して OK ボタンをクリックします。
nuget.exe ファイルの配置とユーザー環境変数 Path の設定ができたら、管理者権限でコマンドプロンプトを起動します。
cd コマンドでインストール先フォルダに移動(ここでは C:\Program Files (x86)
フォルダを指定)、続けて nuget install Microsoft.Net.Compilers
を入力して実行すると Roslyn をインストールします。
C:\Program Files (x86)\Microsoft.Net.Compilers.x.x.x
フォルダ(x.x.x はバージョンによって異なる)にインストールされた C# コンパイラ Roslyn です。
再度ユーザー環境変数の変数 Path の環境変数名の編集画面を開きます。
環境変数名の編集画面で新規ボタンをクリックして、C# コンパイラ Roslyn がインストールされた tools フォルダのパス名(例:C:\Program Files (x86)\Microsoft.Net.Compilers.4.1.0\tools
)を入力して OK ボタンをクリックします。
これで C# コンパイラ Roslyn のインストールと環境設定が終わり、C# 6 でコンパイルできる環境が整いました。
ILYCS.bsw ファイル用複合化・暗号化 C# ソースコードコンパイル
Pastebin.com から 複合化(BSW_Decoder)C# ソースコードファイル(HsG68P0d.cs) と 暗号化(BSW_Decoder)C# ソースコードファイル(4yuP6D3f.cs) をダウンロードします。
コマンドプロンプトを起動してソースコードがあるフォルダで csc.exe HsG68P0d.cs
と csc.exe 4yuP6D3f.cs
を実行することでコンパイルされて、同じファイル名の exe ファイルが生成されます。
バッチファイルでまとめてコンパイルしたい場合は、ソースコードがあるファイルのフォルダ内にバッチファイル(.bat)を作成して、以下のコマンドを記述して実行します。
csc.exe HsG68P0d.cs
csc.exe 4yuP6D3f.cs
pause
csc.exe コマンドでコンパイラして生成された ILYCS.bsw ファイル暗号化・複合化用 4yuP6D3f.exe(暗号化)と HsG68P0d.exe(複合化)ファイルです。
複合化用 HsG68P0d.exeファイルに ILYCS.bsw ファイルをドラッグアンドドロップします。
複合化用 HsG68P0d.exe ファイルに ILYCS.bsw ファイルをドラッグアンドドロップ後、同フォルダ内に ILYCS.bsw.json ファイルが生成されます。
テキストエディタ(文字コード UTF-8)で ILYCS.bsw.json ファイルを開きます。
ILYCS.bsw.json ファイルの各 id にある text 項目の中身がゲーム内テキスト内容(一部システム変数使用)となっています。このテキスト内容を書き換えることで日本語表示することができます。
暗号化用 4yuP6D3f.exe ファイルに(編集した)ILYCS.bsw.json ファイルをドラッグアンドドロップすることで、ILYCS.bsw ファイルに暗号化されます。(元の ILYCS.bsw ファイルは上書き)
ILYCS\ILYCS_Data\StreamingAssets\data
フォルダにオリジナルの ILYCS.bsw ファイルがあるので、テキスト編集後暗号化した ILYCS.bsw ファイルに差し替えることでゲーム内テキストを変更できます。
上の画像は ILYCS.bsw ファイルのテキスト内容を一部書き換えたスクリーンショットです。
フォントはいわゆる中華フォント仕様となっています。こちら でフォントを変更する方法を説明します。
ちなみに一部のテクスチャファイルに直接文字が描画されているものについてはそのままなので、そちらも日本語で表示したい場合は画像編集ソフトなどでの加工が必要となります。
どのテクスチャファイルに文字が直接描画されているかについては、Steam 版 I Love You, Colonel Sanders! A Finger Lickin' Good Dating Simulator - 英語文字埋め込みテクスチャファイル(ILYCS-UnityEX-Export-English-Texture2D-20220411.7z) ファイルに UnityEX でエクスポートしたテクスチャファイルをまとめておきました。
画像加工後、対象のフォルダを正しく配置することで UnityEX でインポートできるフォルダ構成にしています。
インポート対象のアセットファイルは ILYCS_Data フォルダにある resources.assets ファイルと、ILYCS_Data\StreamingAssets\bundles\global
フォルダにある assets ファイルです。
アセットファイル(resources.assets・assets)があるフォルダにインポートしたい Unity_Assets_Files フォルダを配置して、UnityEX でアセットファイル(resources.assets・assets)を開き Import files ボタンをクリックすることでインポートできます。
おまけで暗号化・複合化キー(KEY と IV)の探し方です。
C# のソースコードにすでに暗号化・複合化に必要なキー(KEY と IV)が記述されていますが、解析ツールを使うことでもキーを特定することができます。
ILYCS_Data\Managed
フォルダにある BSW_CSharp.dll ファイルを dnSpy で開きます。
class Rijndael にある変数 IV_VALUE(16文字)です。(上の画像では画像加工してキーは非表示)
ちなみに class Rijndael にある Encrypt 関数、Decrypt 関数、EncryptStringToBytes 関数、DecryptStringFromBytes 関数があるので、おそらくこの関数を使って ILYCS.bsw ファイルの複合化・暗号化しているものと思われます。
namespace BSWUnity の class IOManager にある変数 JSON_ENCRYPTION_KEY(32文字)です。(上の画像では画像加工してキーは非表示)
Steam 版 I Love You, Colonel Sanders! A Finger Lickin' Good Dating Simulator 日本語フォント変更方法
従来の Unity ゲームであれば ILYCS\ILYCS_Data
フォルダにある resources や sharedassets などの assets ファイルにフォントファイルが格納されていることがありましたが、今回の解析では StreamingAssets フォルダにあるファイルにフォントファイルが含まれていることがわかりました。
このフォントファイルを差し替えることで別のフォントに差し替えることができます。以下、フォント変更の手順内容です。
ゲームで使われているフォントファイルは ILYCS_Data\StreamingAssets\bundles\global
フォルダにある assets ファイル(拡張子なし)に含まれています。
ILYCS_Data\StreamingAssets\bundles\global
フォルダにある assets ファイルを UnityEX で開きます。
Type 列をクリックしてソート後、128(Font TTF)の Gotham-Black.font_raw・Gotham-Black_00001.font_raw・Gotham-Medium.font_raw ファイルを選択して、右クリックの Export with convert or Raw でエクスポートします。
ILYCS_Data\StreamingAssets\bundles\global\Unity_Assets_Files\assets\CAB-7f9a3dd52c486e87d00cdb5a5da7d690\Fonts
フォルダにエクスポートされた Gotham-Black.ttf・Gotham-Black_00001.ttf・Gotham-Medium.ttf ファイルです。
それぞれの ttf ファイルを使いたい日本語フォントファイルに置き換えて同じファイル名にリネーム、UnityEX で assets ファイルを開き Import files ボタンをクリックして日本語フォントをインポートします。
上の画像は POP 体フォント モッチーポップ(Mochiy Pop One) を使ったスクリーンショットです。
こちらの画像は POP 体フォント モッチーポップ(Mochiy Pop P One) を使ったスクリーンショットです。
- Steam 版 I Love You, Colonel Sanders! A Finger Lickin' Good Dating Simulator で日本語を表示する方法(現在開いているページ)
- PC ゲーム リメイク版 Shadowgate(2014)で日本語を表示する方法
- PC ゲームの日本語化実現のために役に立つかもしれないローカライゼーション技術情報サイトまとめ
- PC ゲームで使われているゲームエンジンを特定する方法
- PC ゲーム Agatha Christie - The ABC Murders 日本語化メモ
- PC ゲーム Moebius: Empire Rising 日本語化メモ
- PC ゲーム Cognition: An Erica Reed Thriller 日本語化メモ
- PC ゲーム Sunless Sea + DLC Zubmariner 日本語化と日本語化ファイル解析メモ
- PC ゲーム The Room 日本語化メモ
- PC ゲーム Home is Where One Starts... 日本語化メモ
- PC ゲームが起動しない・安定しない場合に確認と設定したほうがいいかもしれないリスト