KONAの日本語化に挑戦してみる。日本語化できることがわかった。

close up photo of baggage sign ゲームMOD
Photo by Esther on Pexels.com

AmazonPrimeGameで配信されていた「KONA」のデータ構造がUnityだったので、挑戦してみようと思う。結論からするとできることが分かりました。紆余曲折あってようやくできることが分かりました。。。

やってみた流れメモ

「UnityEX」と「TTunpack.bat」を使って中の.txtと.tex(.dds形式で)を取得してみた。
「sharedassets1」に、文言のデータが「Subtitles.txt」という名前で入っていた。
「sharedassets0」に、画像フォントデータがあった。たぶんTextMeshPro「BlockGothicRR-BoldCond SDF Atlas.tex.dds」「BlockGothicRR-DemiExtraCond SDF Atlas.tex.dds」「BlockGothicRR-ExtraBoldExtCond SDF Atlas.tex.dds」「BlockGothicRR-MediumCond SDF Atlas.tex.dds」「LiberationSans SDF Atlas.tex.dds」「MerloNeue-Regular SDF Atlas.tex.png」「SourceHanSansSC-Heavy SDF Atlas.tex.png」「SourceHanSansSC-Light SDF Atlas.tex.png」
中国語がデータ上は入っているようなので、「SourceHanSansSC」をフックにして「UnityEX」でText検索で、「sharedassets0_00008.-28」「sharedassets0_00009.-28」が出てきたので、「.-28」を全部エクスポート。Name検索で、「SourceHanSansSC-Heavy SDF Atlas.tex」「SourceHanSansSC-Light SDF Atlas.tex」「SourceHanSansSC-Heavy SDF Material.mat」「SourceHanSansSC-Light SDF Material.mat」もエクスポートしてみた。

「Sublime」で、「Subtitles.txt」を開いて、見やすくしてみた。「},」となっているところの後ろを改行。
一旦イタリア語が入っている部分を差し替える前提で進めようと思い、「”FR”」「”EN”」「”ES”」「”DE”」「”IT”」「”ZH”」の前を改行。
試しに、日本語を入れて、「UnityEX」を使って、インポートしてみた。一部の感じが表示され、他は□になった。中国語の入っているフォントが出たようだ。

漢字が出ていた文字の部分を画像編集ソフトで少し修正して、どの画像ファイルが本文に使われているか見てみる。画像ソフトでエクスポートする際は、Formatを同じにする。「UnityEX」のTypeの列を参照して、「Alpha8」となっていたら、例えばGIMPだと「A8」を選ぶ。

結果、本文では「SourceHanSansSC-Heavy SDF Atlas.tex」が使われていた。

「sharedassets0_00008.-28」が、それだったので、バイナリを確認。型を見る限り最新版のUnityでは無さそう。steamでゲームのリリース年を調べたら2017年だったので、5.6.7p1をインストールして試してみる。

フォントも、同じものがネット上にあったので、それを入れてみる。
単純に、「sharedassets0_00008.-28」「SourceHanSansSC-Heavy SDF Material.mat」「SourceHanSansSC-Heavy SDF Atlas.tex」を入れ替えて動かしてみた。

しかし、立ち上がりのタイミングでエラーが出て止まってしまった。エラーログが出ていたので見たところ、Unityのバージョンらしき単語があった。「Unity Player [version: Unity 5.6.1p4_」

今度は、1ファイルずつやってみる。「SourceHanSansSC-Heavy SDF Atlas.tex」>>日本語入れたところの漢字部分が文字化けした。。。日本語かな部分は「□」なぜだろう。。。かなも文字化けしないとダメなはず。出だしの時点で気づくべきだった。。。

上記は、一旦置いておいて、「AssetStudioGUI」でバイナリ内部を見れるようなので入れてみる。

中身を見てて気になった個所
SourceHanSansSC_Heavy SDF Atlas-sharedassets0.assets-25-Texture2D
 0 int m_Height = 2048<実際のイメージサイズと一致しているので、イメージサイズ変える際にはここも変える必要ありそう
 1 string path = “sharedassets0.assets.resS”<自身で試しに作ったUnityデータにはこの値は入っていなかった
SourceHanSansSC_Heavy SDF Material-sharedassets0.assets-10-Material
こちらにも、イメージサイズの記載あり
SourceHanSansSC_Heavy SDF-sharedassets0.assets-2729-MonoBehaviour

「UnityEX」で、自身で作った日本語入り「SourceHanSansSC-Heavy SDF Atlas.tex」をインポート
「AssetStudioGUI」で、SourceHanSansSC_Heavy SDF Material-sharedassets0.assets-10-Materialの「2048」となっている個所を「4096」に、SourceHanSansSC_Heavy SDF Atlas-sharedassets0.assets-25-Texture2Dの「1 string path = “”」を「1 string path = “sharedassets0.assets.resS”」に変更。

あとは、「UnityEX」でいうところの、「sharedassets0_00008.-28」。「AssetStudioGUI」だと、同じID「2729」は、「MonoBehaviour SourceHanSansSC-Heavy SDF」となっている。中身を見ようとしたら、「TextMeshPro-5.6-Editor.dll」「UnityEngine.TestRunner.dll」「UnityEngine.HoloLens.dll」「ProBuilderCore-Unity5.dll」「UnityEngine.Purchasing.dll」「VacuumShaders.TerrainToMesh.dll」「UnityEngine.Analytics.dll」「UnityEngine.Advertisements.dll」の場所を聞かれた。たぶんProgramFile内のUnity5.6の中を検索して出てきたものを当てはめれば良いのかな。一部、プロ版にしか入っていないものもあるのか見当たらない。
見る限り、座標データみたいだ。色々試すが、「□」のまま変わらず。

参考にしているサイトで紹介されていた「FontMBMaker」を試してみたが、「□」のまま変わらず。ん~わからない。。。

もう、分からない。と投げやりに、最後に本文英語書体自体を置き換えてみようと思い、「sharedassets0_00006.-28」を「FontMBMaker」に通してみたら、あっさりと日本語化された。長かった。。。

あとは、英語を日本語に翻訳していくだけだ。

整理した手順

1、「UnityEX」で「sharedassets0.assets」を開いて「Export all Texture」する。

2、Unity_Assets_Files>sharedassets0>Textures>res_sharedassets0にある「MerloNeue-Medium SDF Atlas.tex.dds」が本文のフォントだった。(画像フォントに目印書き込んで変化しているものを探しました)

3、「MerloNeue-Medium」で「Search Text」で選択される「sharedassets0_00006.-28」を「Export selected」する。

4、「FontMBMaker」に通して、もとのファイルと差し替えて「Import files」する。

5、「UnityEX」で「sharedassets1.assets」を開いて「.txt」検索して選択される「Subtitles.txt」を「Export selected」する。>これが文章データ

6、文章を書き替えて、もとのファイルと差し替えて「Import files」する。

これで、本文に関しては日本語になると思う。

このあとの流れ

ただ、フォントの画質が悪いので原因調べて、場合によってはUnity2018とTextMeshProを使って画像フォントを作り直そうと思う。「FontMBMaker」では、自作したフォントも扱えるようなので。
で、やってみたが、途中で止まってしまっているようで生成されたファイルが途中で切れている。

翻訳必要な文章数は、1000くらい。

文章内に「\n」「\r」「\”」「\’」などが入っているので、注意が必要そう。
不要な「”」や「’」が「\」が付かずに単独で残っていると動かなくなる。
一番最初の部分、一番最後の部分は特に注意する「,」が抜けていたり、逆に入っていたりするだけで動かなくなる。

なので、最初にsublimeなどで「,」の後ろで改行。この際の改行は変化しないように注意。
値や文章以外の部分を削って、また削った部分を戻すだけのスプレッドシートを作ってゲームに戻した時に動くか。
次に文章部分を「googletranslate(〇〇〇,”en”,”ja”)」で翻訳したものを横のセルに入れるシート。
その翻訳をsublimeで「\n」「\r」「\」「”」「’」「,」などが残っていないか検索置換。
スプレッドシートでまた、削った部分を戻す。
といったような作業をやった。
表示されなくなった時は、上下半分に切り分けて動く状態のデータに部分的に動かなかったデータを差し替えて探していった。

一旦、文章の機械語翻訳した状態の動くデータは出来上がった。

UI周りのデータはどこにあるのだろう。。。

コメント

タイトルとURLをコピーしました