PC ゲーム Dishonored DLC - The Knife of Dunwall(ナイフ・オブ・ダンウォール)の字幕を日本語で表示する方法
PC ゲーム Dishonored - Definitive Edition には 日本語化ファイル がありますが、一部の DLC は翻訳されていません。
調べてみると 2013年の過去ログに残っている当時の有志翻訳者の書き込みによれば、DLC The Knife of Dunwall の一部のファイル DLC06_Tower_Script.upk(DLC 開始直後のセリフ字幕) を今までの日本語化作業通りアンパック → 英語字幕を日本語に翻訳 → リパックでゲームが落ちる現象が発生 してしまい、ここで翻訳作業がストップ。
最終的に翻訳 → リパック後のクラッシュ問題を解決することができず DLC The Knife of Dunwall の日本語化を中断、最後の DLC Dishonored: The Brigmore Witches も未着手のままとなってしまったようです。
ただ、DLC The Knife of Dunwall についてはセリフ字幕を管理している upk ファイルのみ発生した問題なので、字幕以外の日本語ファイル(INT)は問題なく日本語化できているようです。
ちょくちょく PC 版 Dishonored 日本語化関連情報や DLC の翻訳状況に関する情報をチェックしていましたが、2020年8月までこの DLC 字幕翻訳表示問題は未解決のままだったようです。
この問題についていろいろ調べてファイルを解析してみたところ手間はかかりますが、DLC The Knife of Dunwall において日本語字幕を表示することに成功しましたので、そのやり方を説明します。
なお、この記事では日本語字幕を表示できるようになる手順を説明するだけの内容となっています。翻訳はしてないので日本語字幕を表示するファイル公開はありません。字幕の翻訳作業は別途必要です。
PC ゲーム Dishonored DLC - The Knife of Dunwall(ナイフ・オブ・ダンウォール)を日本語字幕で表示するのに必要なデータ・ツール
PC ゲーム Dishonored の DLC The Knife of Dunwall を日本語字幕を表示するために必要なデータとツールを以下まとめました。
英語版・中文化・日本語化で動作する各ゲームデータ(約 15GB×3)を用意し、さらに字幕データ特定のため DLC の upk ファイルをアンパックして作業することがあるため、十分な空き領域のあるストレージが必要です。
今回はすべての DLC が含まれている Steam 版 Dishonored - Definitive Edition のみの環境で動作確認しています。
- 英語版 Dishonored - Definitive Edition ゲームデータ
- 中文化 するために英語版のゲームデータが必要
- すでに日本語化済みでプレイできる状態であれば、ゲームデータ丸ごと別の場所にバックアップ、後で再利用
- 日本語化 済み Dishonored - Definitive Edition ゲームデータ
- DLC で日本語字幕を表示するには、日本語化したゲームデータ(正確には日本語フォント)が必要
- Dishonored 中文化インストーラー
- 英語版 Dishonored - Definitive Edition ゲームデータを中文化するため、ネットからダウンロードとインストールが必要
- 中文化した DLC ファイルのバイナリデータを書き換えて日本語字幕を表示
- (オプション) Universal Extractor
- Dishonored 中文化インストーラー を実行せずに、中文化に必要なデータを抽出して中文化したい場合に使用
- 同ツールに同梱されている Inno Setup (innounp)の差し替え が必要(関連記事)
- Unreal Package Decompressor (upk デコンプレスツール)(参考情報)
- 英語版 upk ファイルをアンパックするために Unreal Package Decompressor での前処理が必要(英語版 upk ファイルはセリフ字幕バイナリデータ特定のため使用するのみで、中文化セリフ字幕 → 日本語セリフ字幕作業ではファイル不要)
- 同ツールは Dishonored 中文化インストーラー にも同梱済み
- 中文化 upk ファイルでは upk デコンプレス不要
- Unreal Package Extractor (upk アンパックツール)
- WinMerge
- アンパックした英語版・中文化 upk 字幕ファイルのバイナリデータ比較(バイナリエディタの比較機能でも可能だがアンパック後のファイル数が非常に多いため、フォルダ内ファイルをまとめて比較できる WinMerge を推奨)
- 英語セリフ字幕バイナリデータ → 中文化セリフ字幕バイナリデータの特定
- 日本語テキストデータ 16進数表記(UTF-16LE)に変換、それをバイナリデータとして上書き挿入できるバイナリエディタ
日本語字幕を表示するための大まかな作業手順は以下の通りです。
- 中文化したゲームデータから DLC の upk ファイルをコピー
- バイナリエディタで upk ファイルを直接開き、中国語セリフのバイナリデータを UTF-16LE 形式の日本語セリフ字幕に書き換え
- 日本語化済みのゲームデータに日本語セリフ字幕に書き換えた中文化 upk ファイルに差し替えて動作確認とセリフ表示チェック
PC ゲーム Dishonored 中文化ファイルインストール方法
中文化のため英語版 Dishonored - Definitive Edition のゲームデータを作業用フォルダにコピーします。
インストール先のゲームデータを直接中文化したり、そのまま中文化した状態でゲームプレイすることも可能ですが、最終的な動作確認には日本語化したゲームデータでゲームを起動する必要がある点に注意してください。
再ダウンロードや中文化、日本語化の手間を省くためにも、それぞれの言語状態のゲームデータをバックアップを取っておき、いつでも戻せる状態にしておくことを推奨します。(特に vbs を使った日本語化は時間がかかるため)
「Dishonored 漢化」 で検索すると 「【心得】 漢化分享 MEGA 載點」 というページが見つかるので、そのページに記載されている MEGA アップローダーリンクから DGOTYCNv1.4.exe
ファイルをダウンロードしてインストールします。
Steam コミュニティガイド にも中文化ファイルのダウンロード先が公開されていますが、目的のファイルをダウンロードするのに専用アプリ?が必要なためブラウザからのダウンロードができません。
そのため別のユーザーが公開している MEGA アップローダーからダウンロードしたほうが余計なアプリを入れずに済み、目的のファイルを入手できます。
Steam コミュニティガイド では中文化ファイルのハッシュ値(MD5、SHA1、CRC32)を公開しているので、MEGA アップローダーからダウンロードしたファイルのハッシュ値と一致するかどうか確認してほうがよいでしょう。
以下、どちらかの手順で中文化します。動作確認はしていますが、ファイルの安全性を保証するものではありません。細心の注意を払ったうえでインストールしてください。
Dishonored 中文化インストーラー DGOTYCNv1.4.exe 実行
DGOTYCNv1.4.exe を実行してセットアップ画面が表示されたら、下一歩ボタンをクリックします。
我同意~ をクリックして下一歩ボタンをクリックします。
下一歩ボタンをクリックします。
中文化対象の英語版 Dishonored フォルダを選択します。
インストール先フォルダを必ず指定する必要はなく、作業用フォルダにコピーした英語版 Dishonored フォルダ を指定しても問題ありません。
安装ボタンをクリックするとインストールが開始します。
インストール中に表示されるコマンドプロンプト画面です。同梱のプログラム subimport.exe が処理して 151 of 151 に到達後、キーを押して画面を閉じます。
チェックボックスの内容が不明のため、すべてのチェックマークを外して完成ボタンをクリックします。
セットアップ画面を閉じて Steam 版 Dishonored - Definitive Edition の中文化は完了です。
DGOTYCNv1.4.exe インストール後の英語版 Dishonored フォルダ内にある Sub_Import フォルダ、log.txt、Sub_Import.bat ファイル、汉化説明.rtf ファイルです。
中文化後はこれらのフォルダ・ファイルは不要なので削除して問題ありません。
インストール先フォルダにある英語版 Dishonored フォルダを、中文化した Dishonored フォルダに丸ごと差し替えれば中文化版 Dishonored をプレイできます。
中文化後、DLC 中文化 upk ファイルのバイナリデータを書き換え、日本語化済み Dishonored の同名ファイルと差し替え れば、日本語字幕を表示できるようになります。
Dishonored 中文化インストーラー DGOTYCNv1.4.exe を Universal Extractor で展開・解凍、Sub_Import.bat(subimport.exe) 実行
DGOTYCNv1.4.exe から必要なファイルを取り出してから中文化する方法です。
Universal Extractor を使って DGOTYCNv1.4.exe を展開・解凍します。
なお、Universal Extractor をデフォルトの状態から使用する際には、Inno Setup (innounp)の差し替え が必要です。(関連記事)
DGOTYCNv1.4.exe を Universal Extractor で展開・解凍後、{app} フォルダにある DishonoredGame フォルダ、Sub_Import フォルダ、Sub_Import.bat ファイルをコピーします。
作業用フォルダにコピーした英語版 Dishonored フォルダ に DGOTYCNv1.4.exe から抽出した DishonoredGame フォルダ、Sub_Import フォルダSub_Import.bat ファイルを上書き配置します。
ちなみに、DishonoredGame フォルダは中国語を表示するフォント upk ファイルや字幕以外の中国語を表示する int ファイルが入っているだけです。
そのため、日本語字幕を表示するのに必要な中文化 upk ファイルのみ入手するだけなら、Sub_Import フォルダSub_Import.bat ファイルで十分なので、DishonoredGame フォルダの上書きは不要です。
作業用フォルダにコピーした英語版 Dishonored フォルダ に DGOTYCNv1.4.exe から抽出した DishonoredGame フォルダ、Sub_Import フォルダ、Sub_Import.bat ファイルを上書き配置したら、Sub_Import.bat ファイルを実行します。
Sub_Import.bat 実行後、コマンドプロンプト画面 が表示されて中文化処理が動き、151 of 151 到達後キーを押して画面を閉じれば中文化完了です。Sub_Import フォルダ、Sub_Import.bat ファイルは不要になるので削除して問題ありません。
中文化後、DLC 中文化 upk ファイルのバイナリデータを書き換え、日本語化済み Dishonored の同名ファイルと差し替え れば、日本語字幕を表示できるようになります。
Dishonored DLC - The Knife of Dunwall(ナイフ・オブ・ダンウォール) 日本語フォント環境下での中文化スクリーンショット
Dishonored 中文化インストーラー DGOTYCNv1.4.exe を 手順 1 または 手順 2 の方法でインストール後、日本語化した Dishonored - Definitive Edition の DishonoredGame\DLC\PCConsole
にある DLC0(数字) フォルダに中文化した同名の DLC upk ファイルに差し替えることで、日本語フォントのまま中文化字幕を表示するようになります。
画像は DLC The Knife of Dunwall の NEW GAME 開始時に表示されるセリフ字幕の一部です。
字幕の □ 部分は日本語フォントに含まれていない文字のため表示されていません。
Dishonored 中文化インストーラー DGOTYCNv1.4.exe 展開・解凍、Sub_Import フォルダ内容
Dishonored 中文化インストーラー DGOTYCNv1.4.exe を Universal Extractor で展開・解凍した際に生成される Sub_Import フォルダ内にあるファイルです。
それぞれのファイルは以下のように機能するものと推測されます。
decompress.exe は英語版 Dishonored の upk ファイルを処理するためのプログラムで、おそらく upk デコンプレスツールの Unreal Package Decompressor と同じものと思われます。
subimport.exe は同梱ファイル python27.dll、w9xpopen.exe、library.zip 中身の拡張子 pyc ファイル、拡張子 pyd ファイルから、Python プログラムを exe 化したものと思われます。
dis.db と texts.db はテキストエディタで内容が見れます。16進数の数値が記述してあることと、アンパック・リパックツールが含まれていないことから、subimport.exe でデコンプレス(decompress.exe)した upk ファイルを dis.db と texts.db の記述内容に従ってバイナリデータを書き換えているものと思われます。
upklist.db もテキストエディタで内容が見れて、記述内容からデコンプレス(decompress.exe)および中文化処理対象の upk ファイルリストと思われます。
subimport.exe 処理中(コマンドプロンプト画面が表示されている間)に Dishonored フォルダ内に unpacked フォルダが生成されます。
そのフォルダ内に decompress.exe で処理された upk ファイルが一時的に格納されてバイナリデータを書き換えるようです。
バイナリデータ書き換え後は英語版 Dishonored の元のファイルと差し替えられて、unpacked フォルダ内の upk ファイルは削除されます。
すべての処理終了後は unpacked フォルダも削除されるという流れとなっているようです。
PC ゲーム Dishonored DLC - DLC06_Tower_Script.upk 中文化ファイル、セリフ字幕バイナリデータ書き換えと日本語字幕表示テスト
DLC The Knife of Dunwall 序盤のセリフ字幕を日本語で表示してみます。
DGOTYCNv1.4.exe で中文化した Dishonored フォルダの DishonoredGame\DLC\PCConsole\DLC06
フォルダにある DLC06_Tower_Script.upk ファイルをコピーします。
バイナリエディタで upk ファイルを開きます。今回は xedit を使用します。
xedit でファイルを開く際に 「読み込み専用(パッチ編集)で開きますか?」 というメッセージが表示されますが、バイナリデータを書き換えるため 「いいえ」 ボタンをクリックします。
xedit で upk ファイルを開いた後 Ctrl + F キーで検索・置換画面を表示します。
検索データに書き換え対象の中国語バイナリデータ(The Knife of Dunwall ゲーム開始時のメッセージ 「One more job shouldn't have mattered.」 と同一)を入力して検索します。
ここではセリフの一部のバイナリデータを入力して検索します。
英語セリフ字幕と同一内容の中国語セリフ字幕のバイナリデータの探し方については こちら で説明します。
xedit の検索機能では検索位置によっては 「データが見つかりません」 というメッセージが表示されることがあります。
その場合は F3 キー(次を検索)や Ctrl + F3 キー(前を検索)で続けて検索することで、検索対象のバイナリデータがあれば見つかります。
DLC06_Tower_Script.upk ファイルの書き換え対象、中国語セリフ字幕バイナリデータ(The Knife of Dunwall ゲーム開始時のメッセージ 「One more job shouldn't have mattered.」 と同一)に移動します。
バイナリデータ FF FF FF
以降からセリフ終端 4バイト除く(ここでは 00 00 E6 1C
)バイナリデータが、表示されるセリフ字幕内容です。
表示させたい日本語を UTF-16LE に 変換 して書き換えます。
セリフのバイナリデータ選択範囲は 0x18(24バイト)、日本語は 2バイト で1文字を表示するため、このセリフ箇所で表示できる日本語文字数は原則 12文字までとなります。
upk ファイルの解析内容 から表示するセリフの文字数を増やせそうな気がしますが、バイナリデータの書き換え箇所が非常に多くなる上に動作する保証はないため、今回の記事では試していません。
16進数バイナリ文字列変換 日本語変換 Online の DenCode にアクセスして、UTF-16LE に選択されていることを確認して適当に日本語文字 12文字を入力します。
エンコード結果に表示された 16進数文字列をコピーします。
ここでは区切りを 2バイトごと、小文字が設定されていてエンコード結果に反映されていますが、これらの表記方法による違いはコピー先のバイナリエディタ xedit では気にしなくて大丈夫です。
バイナリデータ FF FF FF
以降からセリフ終端 4バイト除く(ここでは 00 00 E6 1C
)バイナリデータを、DenCode で日本語文字を UTF-16LE に変換してコピーした英数字を貼り付けて書き換えます。
この時セリフ終端 4バイト(ここでは 00 00 E6 1C
) 以降のバイナリデータがズレないようにしてください。バイナリデータがズレてしまうと upk ファイル読み込み時にゲームがクラッシュしてしまいます。
ちなみに、バイナリエディタ Stirling ならキャラクターセットを Unicode にすることで、ASCII 部に直接日本語文字入力が可能とバイナリデータ UTF-16LE 形式に変換します。
日本語セリフ字幕に書き換えた中文化 DLC06_Tower_Script.upk ファイルを、日本語化済み Dishonored フォルダの DishonoredGame\DLC\PCConsole\DLC06
フォルダにある同名ファイルと差し替えます。
ゲームを起動して DLC The Knife of Dunwall に切り替えて NEW GAME から始めます。
DLC06_Tower_Script.upk ファイルの場合、ファイルになにか問題があるとロード後の PRESS KEY 画面でゲームがクラッシュまたはゲームがフリーズします。今回はセリフ字幕バイナリデータを書き換えているので、バイナリデータが 1バイトでもズレているとおそらくほぼ確実にクラッシュします。
ゲームがクラッシュせずに日本語セリフ字幕が表示されたら成功です。
次に英語セリフ字幕と同一内容の中国語セリフ字幕のバイナリデータの探し方 について説明します。
PC ゲーム Dishonored DLC - upk 中文化ファイル、セリフ字幕バイナリデータ調査方法と計算方法
先ほど中文化 upk ファイルの中文化セリフ字幕 → 日本語セリフ字幕を表示 する方法を説明しましたが、書き換え対象のセリフ字幕のバイナリデータは一定の手順を踏まないと見つけ出すことができません。
ここではそのセリフ字幕バイナリデータを見つけるための手順を説明します。
ZenHAX(Internet Archive) にてテキストデータを抽出するツールを見つけましたので こちら で紹介します。テキストデータだけほしいのであればこちらのツールを使ったほうが楽です。
英語版 Dishonored - Definitive Edition ゲームデータ DishonoredGame\DLC\PCConsole
フォルダの DLC0(数字) フォルダにある upk ファイル(ここでは DLC06_Tower_Script.upk を使用)を作業用フォルダにコピーします。
コピーした upk ファイルを upk デコンプレスツール Unreal Package Decompressor の decompress.exe にドラッグ&ドロップします。
uppacked フォルダが生成されて、その中にファイルサイズが増えた upk ファイルが入っていることを確認します。
upk アンパックツール Unreal Package Extractor の extract.exe か 日本語化ファイル に含まれているアンパックツール UPKunpack.exe に、uppacked フォルダにある upk ファイルをドラッグ&ドロップします。
uppacked フォルダにある upk ファイルがアンパックされて、フォルダ内に同名のフォルダ名(ここでは DLC06_Tower_Script フォルダ)が生成されていることを確認します。
次に中文化した同名の upk ファイル(DLC06_Tower_Script.upk)を同じように upk アンパックツール Unreal Package Extractor の extract.exe かアンパックツール UPKunpack.exe にドラッグ&ドロップしてアンパックします。
ちなみに中文化 upk ファイルでは Unreal Package Decompressor を使う必要はありません。
DLC 英語版 upk ファイルと中文化 upk ファイルをアンパックしたら、 WinMerge で DLC06_Tower_Script フォルダを比較します。
WinMerge のオプション(比較>バイナリ) - バイナリファイルとして扱うパターンに 「;*.DisConv_Blurb;*.DisConv_NonWord;*.UPKpkginfo
」 を追加します。
これでアンパックした Dishonored 用 upk ファイルで該当する拡張子を比較した場合にバイナリ形式で比較するようになります。
一緒に WinMerge のオプション(比較>バイナリ) - Frhed 設定 - 表示設定をクリックして、「自動的に 1 行あたりのバイト数を調整する」 のチェックマークを外して、1行あたりの表示バイト数の初期値 16 に固定します。
この設定をしておくことで比較結果のウィンドウサイズを変更しても、ほかのバイナリエディタと同じようにバイト表示数を固定できます。
DLC06_Tower_Script\TheWorld\PersistentLevel\DisDialogOneShot_HeartGadget_1\DisDialogTree_OneShot_15
フォルダにある DisConv_Blurb_705.DisConv_Blurb ファイルが、DLC The Knife of Dunwall 開始時のセリフ字幕 「One more job shouldn't have mattered.」 に該当するファイルです。
基本的にアンパックした TheWorld フォルダ以下にある拡張子 .DisConv_Blurb ファイルのいずれかのファイルに、セリフ字幕が格納されているようです。
目的のセリフ字幕ファイルをピンポイントで見つけるには、grep 機能があるソフト(私の環境では 秀丸エディタ を使用)を使用したほうがよいでしょう。
連続したセリフ字幕は同じフォルダ内にまとまっているようなので、この場合だと DLC06_Tower_Script\TheWorld\PersistentLevel\DisDialogOneShot_HeartGadget_1\DisDialogTree_OneShot_15
フォルダにある拡張子 .DisConv_Blurb ファイル群が 「One more job shouldn't have mattered.」 に続くセリフ字幕があるとみることができます。
ちなみに DLC06_Tower_Script\TheWorld\PersistentLevel\DisDLC06DialogOneShot_0\DisDialogTree_OneShot_9\DisConversation_43
フォルダにある DisConv_Blurb_710.DisConv_Blurb ファイルが、次のシーンで登場する The Outsider の冒頭セリフ字幕ファイル。
DLC06_Slaughter_Ext_Assn.upk ファイルアンパック後の DLC06_Slaughter_Ext_Assn\TheWorld\PersistentLevel\DisDLC06DialogOneShot_15\DisDialogTree_OneShot_14\DisConversation_72
フォルダにある DisConv_Blurb_710.DisConv_Blurb ファイルが、最初のステージ畜殺場棟(Slaughterhouse Row)開始時登場キャラ Billie Lurk 冒頭セリフ字幕ファイルとなっています。
次にセリフ字幕以外のバイナリデータが違う部分について判明している内容について説明します。
なお、セリフ字幕のバイナリデータの内容がわかれば、あとは中文化で表示できる文字数内に UTF-16LE に変換した 16進数の日本語に書き換えるだけなので、これ以降の説明はセリフ字幕書き換えにおいては覚えておく必要はありません。
必要となる可能性があるのは、セリフ字幕バイナリデータ書き換え以外に文字数(バイト数)を増やしたり新たにセリフ字幕ファイルを翻訳・追加することになった場合に、upk ファイルのバイナリデータ、サイズとオフセットの値を直接書き換える ときになるかと思われれます。
DLC06_Tower_Script\TheWorld\PersistentLevel\DisDialogOneShot_HeartGadget_1\DisDialogTree_OneShot_15
フォルダにある DisConv_Blurb_705.DisConv_Blurb ファイルの WinMerge によるバイナリデータ比較結果です。
一見、アドレス 0x92
以降のバイナリデータの値がバラバラに見える結果となっていますが、これはアドレス
0x92
~ セリフ終端 2バイト (ここでは e6 1c
、ファイルによって値が異なる) (英語版アドレス 0xC5
、中文化アドレス 0xB8
) までが差分内容で、それ以降のバイナリデータは双方のファイルとも違いはありません。
そのため基本的にセリフ字幕先頭数バイト+セリフ字幕本体以外のバイナリデータは英語版・中文化ともに差分はなく、バイナリデータ書き換え対象は限定的になります。
セリフ字幕バイナリデータの手前、アドレス 0x9B
から 3バイト分、英語版では 00 00 00
、中文化では FF FF FF
になっているのが確認できます。
基本的に Unreal Engine 3 時代のゲームでは 00 00 00
だと英語などの 1バイト言語、FF FF FF
だと 2バイト言語という意味で判断していいようです。
なお、中文化ファイルの FF FF FF
を含むアドレス 0x9A
からの 4バイトは、セリフ字幕の文字数から値を計算 できます。計算方法については後ほど説明します。
英語版セリフ字幕ファイルのアドレス 0x92 の値が 2a(HEX) になっており、中文化セリフ字幕ファイルの同アドレスの値 1e(HEX) と異なっていますが、これはセリフ字幕の長さで値が変わります。
英語版セリフ字幕ファイルのアドレス 0x9A から 4バイト(26 00 00 00
) + セリフ字幕分 38バイト(セリフ後のアドレス 0xC4 から 2バイト e6 1c
はセリフ終端を示す値で字幕バイト数にカウントしない、ファイルによって値が異なる) = 42バイトとなります。
この 42バイトを 16進数に変換すると 2A(HEX) となってアドレス 0x92 の値 2a(HEX) と一致します。
英語版セリフ字幕ファイルのアドレス 0x9A の値 26(HEX) も中文化セリフ字幕ファイルの同アドレスの値 f3(HEX) と異なっていますが、こちらもセリフ字幕の長さで値が変わる仕様です。
セリフ字幕分 38バイト(セリフ後のアドレス 0xC4 から 2バイト e6 1c
はセリフ終端を示す値で字幕バイト数にカウントしない、ファイルによって値が異なる)を 16進数に変換すると 26(HEX) となって、アドレス 0x9A の値 26(HEX) と一致します。
中文化セリフ字幕ファイルのアドレス 0x92 の値が 1e(HEX) となっており、先ほどの英語版セリフ字幕と同じ方法で値を求められます。
英語版セリフ字幕ファイルと同様アドレス 0x9A から 4バイト(f3 ff ff ff
) + セリフ字幕分 26バイト(セリフ後のアドレス 0xB8 から 2バイト e6 1c
はセリフ終端を示す値で字幕バイト数にカウントしない、ファイルによって値が異なる) = 30バイトとなります。
この 30バイトを 16進数に変換すると 1E(HEX) となってアドレス 0x92 の値 1e(HEX) と一致します。
中文化セリフ字幕ファイルのアドレス 0x9A の値 f3(HEX) は、英語版セリフ字幕ファイルの同アドレスの値 26(HEX) の時と違い、値の求め方が異なります。
過去ログから 2通りの計算方法があり、どちらの計算方法でもとりあえず一致しますが、どちらが正しい計算方法かわかりません。
まず、セリフ字幕分 24バイト(セリフ後のアドレス 0xB6 から 4バイト 00 00 e6 1c
がセリフ終端を示す値で字幕バイト数にカウントしない、ファイルによって値が異なる) を 2 で割り、この計算結果 12 という数値を使います。
1つ目の計算方法は、255(0xFF) を先ほどの 12(0xC) で引き、計算結果の 243 を 16進数に変換すると F3(HEX) となって、アドレス 0x9A の値 f3(HEX) と一致します。
もう一つの計算方法は、先ほど求めた値 12 または 16進数に変換した場合は 0xC を、電卓(プログラマー)で DWORD(4バイト) にして論理否定(NOT)することで FF FF FF F3
となります。
これをリトルエンディアンで F3 FF FF FF
になるので、アドレス 0x9A から 4 バイトの F3 FF FF FF
と一致します。
ほかにもセリフ字幕の先頭 4バイト+セリフ字幕バイナリデータの合計が 255バイト(0xFF)を超える場合、特定のバイナリデータがリトルエンディアンとして表記されます。
画像は DLC06_Tower_Script\TheWorld\PersistentLevel\DisDLC06DialogOneShot_0\DisDialogTree_OneShot_9\DisConversation_43
フォルダにある DisConv_Blurb_711.DisConv_Blurb ファイルを比較した結果で、この場合英語版だとアドレス 0x92
が 7b(HEX) になっています。
アドレス 0x9A ~ 0x114 までのセリフ字幕分 123バイト(セリフ後のアドレス 0x115 から 2バイト 26 20
はセリフ終端を示す値で字幕バイト数にカウントしない、ファイルによって値が異なる)を 16進数に変換すると 7b(HEX) となって、アドレス 0x92 の値 7b(HEX) と一致します。
ここまでは今まで通りです。
中文化ファイルのアドレス 0x9A から 4バイト(6f ff ff ff
) + セリフ字幕分 290バイト(セリフ後のアドレス 0x1C0 から 2バイト 26 20
はセリフ終端を示す値で字幕バイト数にカウントしない、ファイルによって値が異なる) = 294バイトとなります。
この 294バイトを 16進数に変換すると 126(HEX) となり、これをリトルエンディアンで 26 01
となって中文化アドレス 0x92 ~ 0x93 の値と一致します。
PC ゲーム Dishonored DLC - The Knife of Dunwall(ナイフ・オブ・ダンウォール) 日本語字幕スクリーンショット
以下、Dishonored - Definitive Edition 中文化後、DLC The Knife of Dunwall の字幕を日本語に書き換えたスクリーンショットを公開します。
字幕内容は 日本語ダミーテキスト生成器 の内容を利用しています。
フォントが対応していない文字は □ で表示されています。その後の調べて 文字数が多いフォントに差し替える方法が判明 しましたので、手間はかかりますがこの方法でフォントを入れ替えれば文字化けを解消、翻訳で文字化けを意識する必要がなくなります。
中文化 upk ファイルによってはセリフ字幕バイナリデータを一度に書き換えられる文字が 100文字以上のところがありますが、ゲーム上で実際に表示できる最大文字数は、一度に約 79 ~ 81文字程度までとなっており、それ以上は表示しないようです。
こちらは比較用として保存した DLC The Knife of Dunwall の英語字幕スクリーンショットです。
PC ゲーム Dishonored - upk 中文化ファイル解析メモ
今回、中文化した Dishonored - Definitive Edition の upk ファイルを英語版と比較していろいろとわかった点がみつかったので以下まとめてみました。
Dishonored - Definitive Edition の中文化ファイルは Batman : Arkham Asylum の日本語フォント追加方法 と同じようなので、試していませんが英語版から直接日本語字幕を表示できるようになるかもしれません。
画像は英語版と中文化 DLC06_Tower_Script.upk ファイルを WinMerge で比較した結果です。(英語版 upk ファイルは Unreal Package Decompressor でデコンプレス済み)
画像での差分箇所は広範囲ですが、一定のアドレス範囲内でところどころバイナリデータに差異がある状態が続くようになっています。
こちらの画像は英語版・中文化 DLC06_Tower_Script.upk ファイルをアンパック後、.UPKpkginfo ファイルを WinMerge を比較した結果です。
英語版・中文化 DLC06_Tower_Script.upk ファイルで差異があったバイナリデータと、完全に一致はしていませんがほぼ同じ内容になっているのが確認できます。
そのため、DLC06_Tower_Script.upk ファイルのある一定範囲のアドレスにある差分が確認されたバイナリデータは、アンパックした .UPKpkginfo のバイナリデータであることが、この時点でおおよそ検討が付きます。
このバイナリデータについては次の差分個所をチェックすることで、その値の内容が判明します。
画像は英語版と中文化 DLC06_Tower_Script.upk ファイルを WinMerge で比較した結果で、差分個所は英語版のデータ終端以降のところとなっています。
これは英語版でデータの終わりとなっているアドレスから、中文化ファイルでは新たにデータが追加されるような形で続いているのがわかります。
英語版 DLC06_Tower_Script.upk ファイルのデータ終端のアドレスから追加されている中文化 DLC06_Tower_Script.upk ファイルのバイナリデータは、DLC06_Tower_Script.upk ファイルからアンパックした DLC06_Tower_Script\DLC06_Dlg_Assassin\DialogTree\DLC06_Dlg_SumAssassin
フォルダにある、DisConv_Blurb_496.DisConv_Blurb ファイルのバイナリデータと一致します。
同様に、中文化 DLC06_Tower_Script.upk ファイルのデータ終端に追加されている、DLC06_Tower_Script\DLC06_Dlg_Assassin\DialogTree\DLC06_Dlg_SumAssassin
フォルダ DisConv_Blurb_496.DisConv_Blurb ファイルのバイナリデータに続き、DisConv_Blurb_497.DisConv_Blurb ファイルのバイナリデータが連続で追加されているのが確認できます。
このように英語版 upk ファイルではデータ終端だったところに、中文化 upk ファイルでは 2バイト表示に対応したセリフ字幕のバイナリデータを連続で追加するような形になっています。
こちらの画像はアンパックした英語版・中文化 DLC06_Tower_Script.upk ファイルの .ExportTable.Log ファイルの WinMerge 比較結果です。
6052行目以降、Size と Offset の値が英語版と中文化で差異があることが確認できます。
中文化 .ExportTable.Log ファイルの 6052行目差分箇所 DLC06_Tower_Script\DLC06_Dlg_Assassin\DialogTree\DLC06_Dlg_SumAssassin/DisConv_Blurb_496.DisConv_Blurb
ファイルが Size:000002d9
、Offset:02f3078c
となっているので、この値はどうやって求められているのかを調べます。
Size:000002d9(0x2D9)
を 10進数にすると 729 となります。これはアンパックした中文化 DisConv_Blurb_496.DisConv_Blurb ファイルのプロパティに表示されているサイズと一致します。
また、バイナリエディタ(画像は Stirling) でアンパックした中文化 DisConv_Blurb_496.DisConv_Blurb ファイルを開き、バイナリデータを全部選択した状態でも同様に画面下に 0x2D9(729)Bytes
と表示されるのが確認できます。
次に Offset:02f3078c
、これは中文化 DLC06_Tower_Script.upk ファイルの DisConv_Blurb_496.DisConv_Blurb ファイルのバイナリデータが追加された先頭アドレス 0x2F3078C
を指しています。
Size:000002d9
と Offset:02f3078c
、これをそれぞれリトルエンディアンで 4バイトで配置すると d9 02 00 00
と 8c 07 f3 02
となります。
この 2つをあわせると d9 02 00 00 8c 07 f3 02
となって、中文化 DLC06_Tower_Script.upk ファイルおよびアンパック後の .UPKpkginfo ファイルで差分があったバイナリデータ(アドレス 0xfc1c7 ~ 0xfc1ce)と一致します。
オフセット値 0x2F3078C(Offset:02f3078c) に 0x2D9(Size:000002d9) を足すと 0x2F30A65 となり、これが ExportTable.Log ファイル 6053行目 DLC06_Tower_Script\DLC06_Dlg_Assassin\DialogTree\DLC06_Dlg_SumAssassin\DisConv_Blurb_497.DisConv_Blurb
の Offset:02f30a65 と一致 します。
この Offset:02f30a65
は中文化 DLC06_Tower_Script.upk ファイルの DisConv_Blurb_497.DisConv_Blurb ファイルのバイナリデータが追加された先頭アドレス 0x2F30A65
を指していることになります。
以上のように中文化 upk ファイルは、upk ファイルのデータ終端に 2バイト文字セリフ字幕バイナリデータを追加し、該当するセリフ字幕ファイルのサイズとオフセット値を書き換えたものになっていることがわかりました。
Batman : Arkham Asylum の日本語フォント追加方法 とやり方が同じようなので、Dishonored - Definitive Edition を中文化しなくても英語版から直接日本語化ができそうな感じがします。
ただ、Dishonored - Definitive Edition においては upk ファイルをアンパックするとセリフ字幕ファイルが膨大な上、追加したファイル数が多いほどサイズとオフセット値の修正も一緒に必要なため、手作業での書き換えには大変な労力がいります。
PC ゲーム Dishonored - ~Script_upk テキストデータ抽出方法
ZenHAX(Internet Archive) にて PC ゲーム Dishonored の ~Script_upk ファイルからテキストデータを抽出するツールが公開されているのを見つけたので紹介します。
以下、使い方についてはツール作者が公開した こちらの動画 と同じ内容です。
こちらから Tool.rar をダウンロード(Internet Archive) して展開・解凍します。
Tool UPK フォルダを開き、ここに抽出したいテキストデータが含まれる ~Script_upk ファイルを配置します。ここでは DLC06_Tower_Script.upk ファイルを配置しています。
Tool UPK フォルダ内にある UPKunpack.exe に DLC06_Tower_Script.upk ファイルをドラッグアンドドロップします。
UPKunpack.exe に DLC06_Tower_Script.upk ファイルをドラッグアンドドロップ後、コマンドプロンプト画面が表示されてしばらく処理が流れた後、Tool UPK フォルダ内にアンパックされた DLC06_Tower_Script フォルダが生成されます。
~Script.upk ファイルアンパック後、Tool Text フォルダ内にある unreal_loc_int_export_Dishonored_uni.exe を実行します。
unreal_loc_int_export_Dishonored_uni.exe 実行後 Select the folder... 画面が開くので、Tool UPK フォルダ内にあるアンパックした DLC06_Tower_Script フォルダを選択してフォルダの選択ボタンをクリックします。
unreal_loc_int_export_Dishonored_uni.exe 実行後、Tool Text フォルダ内にエクスポートされた DLC06_Tower_Script.txt ファイルです。テキストエディタで開くことでテキスト内容を確認することができます。
- PC ゲーム Dishonored DLC - The Knife of Dunwall(ナイフ・オブ・ダンウォール)の字幕を日本語で表示する方法(現在開いているページ)
- PC ゲーム Dishonored - Definitive Edition で Scaleform 日本語フォント、ビットマップ日本語フォントを追加する方法
- PC ゲーム Aliens: Colonial Marines Collection で日本語を表示する方法
- PC ゲーム Prey (2017年版) ゲームプレイ最適化メモ
- PC ゲーム Arx Fatalis 日本語化とゲームプレイ最適化メモ
- PC ゲーム Batman: Arkham Asylum GOTY Edition 日本語化とゲームプレイ最適化メモ
- Shadowrun: Dragonfall - Director's Cut 付属ツール Shadowrun Editor のクラッシュ対策と翻訳用データファイルを完全にエクスポートする方法
- PC ゲーム Shadowrun Returns (The Dead Man's Switch) 日本語化メモ
- PC ゲーム Pillars of Eternity - Definitive Edition 日本語化とゲームプレイ最適化メモ
- PC ゲーム Divinity: Original Sin - Enhanced Edition 日本語化とゲームプレイ最適化メモ
- PC ゲーム Divinity: Dragon Commander 日本語化メモ
- PC ゲーム Lords of Xulima 日本語化メモ
- PC ゲーム Hard West 日本語化メモ
- PC ゲーム Of Orcs And Men 日本語化メモ
- PC ゲームが起動しない・安定しない場合に確認と設定したほうがいいかもしれないリスト