見出し画像

How to 日本語化~中級篇その1

2022/06/19
ツール作成への道(有料部分)を追記しました(すでに購入している方はそのまま読むことができると思います)。


今回はUnityやUnreal Engineなど有名ゲームエンジンではなく開発者の独自ゲームエンジンを日本語化する方法を紹介します。マイナーなゲームエンジンだと独自ゲームエンジンに見えることがありますが、情報がなければほぼイコールといっても過言ではないかもしれません。

独自ゲームエンジンの日本語化はかなり難しい部類になります。専用のツールがあるわけではなく、ファイル構成を見て日本語化ができるかどうかの判断をする必要があります。そして、日本語化に必要なファイル(テキストやフォント)が扱いやすいものではないかもしれません。

例えば、Unityのassetsのように1つのファイルにパックされている場合もあります。簡単なものであればZIPファイルを流用したものだったり、独自に作成されたものなどがあります。独自パックはファイル名や画像のファイルヘッダがそのままバイナリエディタで表示されればアンパックできる可能性もでてきますが、当然リパック/アンパックするためのプログラムを作る必要が出てくるでしょう。つまり、プログラミング知識も必要になるということです。


サンプル「Next Hero」

まずはNext Heroというアクションゲームを見ていきます。

ファイル構成の確認

日本語化をするにはまずファイル構成を見る!というのは鉄則です。ゲームを購入したら起動する前に自然な流れでSteamクライアントでゲームのプロパティから「ローカルファイルを閲覧」を選択するようになったら有志日本語化家としての素質があります!

日本語化前の起動画面

さて、フォルダを開くとResourcesフォルダと*.dll群、実行ファイルがあるのがわかると思います。Resourcesフォルダ内にはassetsフォルダがあり、その中に各種データが収められている形のようです(下図。赤字はフォルダ)。

※以前私が調べた時とフォルダ構成が変更されていました。アップデートでフォルダ構成が変更されたようです。パック化されていないものの場合、開発者が自身の分かりやすいようにフォルダ構成を変更する場合があるので日本語化として発表した場合は説明に食い違いがでるので注意しましょう。

フォルダ構成(省略版)

日本語化をする上で必要なのはゲーム内文章、フォントです。ゲーム内文章が含まれる場合、フォルダ名は「Localization、Local、Localize、Text、Language、string」などが考えられます。これは開発者が決めることなので何が正解というのはありません。
このゲームがいい例でゲーム内文章が入っているフォルダは「string」になっています。stringはプログラミングをしている人であればピンとくるでしょう。意味は「文字列」ですのでこれを機会を覚えておくと言いでしょう。
次にフォントですが、これは「font」がほとんどだと思います。とは言え、フォルダ構成が複雑な場合もあるかもしれません。UIやInterfaceというフォルダーの中にあるかもしれませんので、しっかりとフォルダの中を隅々チェックしてください。

ついでに説明しておくと、bgmは背景音楽、cursorはカーソル、imgは画像、sfxは効果音、mapはゲームのマッチデータなのかな。比較的意味を持たせたフォルダ名にしてあることがほとんどなのでフォルダ名にも注目してください。

フォント

fontsフォルダを見ると、*.fnt、*.png、*.otf、*.ttfの拡張がついているファイルがあるのがわかります。このうち*.otf/*.ttfはフォントそのものということがわかります。

  • *.otf → OpenType Font

  • *.ttf → TrueType Font

OpenType Font(オープンタイプフォント)は比較的新しいフォントの形式です。主にDTP(印刷業界)で使用されるものですが、様々な規格があります。現在使用されているものはAdobe-Japan 1-3~1-6となり、後ろの数字が大きいほど入っている文字が多くなります(1-3と1-6では2倍の差があります)。もちろん、その分ファイルサイズも大きくなりますし、フリーで使用できるものはGoogleFont以外であればそこまでの文字は含まれていないと思ってください。

TrueType Fontは(トゥルータイプフォント)は昔からある一般的なフォントです。MS明朝、MSゴシック、メイリオなどはこのタイプになります。ただWindowsの場合、拡張子が*.ttcというものがあります。これはTrueType Collectionで複数のウェイトやプロポーショナルと等幅がセットになっているものです。ゲームによってはこのフォントは対応していない場合もありますので、その際は分解する必要があります。

UniteTTCというツールがあり、これで分解、結合ができます。

そして最後に*.fntと*.pngです。これはセットになっています。ファイル名をみると「Boxy-Bold.fnt、Boxy-Bold_0.png」と名前の一部が同じことがわかるかと思います。これらは俗にいう画像フォントです。
*.fntはテキストファイルとなっており、*.pngファイル内のどこにどの文字があるかということを示しています。

Boxy-Bold_0.png
Boxy-Bold.fnt

画像フォントのいいところはエフェクトがつけられるところです。上図のようなフォント(中抜き+影付きのフォント)は探せばあるかもしれませんが、グラデーションなどは難しくなります。
ただ日本語の場合は文字数(7000文字以上)が多いため、画像ファイルが大きくなるためあまりマルチバイト文字であまり使う開発はいないようです。
ただ、逆に日本語化する場合には楽ができます。もちろん画像フォントも今回のようにbmfontで作成できるものであればいいのですが、見たことがないような形式の場合はゲーム内文章があってもフォントが作れず日本語化できないということもあります。

余談ですが、このゲームはせっかく画像フォントがあるのに使われているところが本当に限られています。num.fnt+num.pngは数字関係で使われているのがわかりますが、Boxy-Bold.fnt+Boxy-Bold_0.pngは本当にわずかにしか確認できません。

上記のこともあり今回は実フォント(*.otf/*.ttf)を使って日本語化したいと思います。使用されているフォントの中に「NotoSansCJKtc-Medium.otf」があります。これはGoogleフォントです。
またGoogleフォントは名前にフォントの情報がわかるようになっています。Notoの後につくSansなサンセリフ、つまりゴシック体を意味します。このほかのSerifがあり、こちらは明朝体を意味します。
CJKとは中国、日本、韓国のことを意味します。つまり中国語、韓国語、日本語が含まれたフォントだということです。CJKの後ろにあるtcは「Traditional Chinese」の略で繁体字の事を意味します。これは字形が繁体字であるということです。このほかにsc(Simplified Chinese、簡体字)とkr(Korean、韓国語)、jp(Japanese、日本語)があります。
最後のMediumはウェイト(文字の太さ)です。ゲームで使用されている元のフォントのウェイトに合わせると違和感が少なくなると思いますので気にしましょう。
そして、SeoulNamsanB.ttfというフォントもあります。名前(ソウル・ナンザン)なので韓国語はこのフォントを使用している可能性があります。

※日本語化ではこのGoogleフォントはお世話になるのでJPをダウンロードしておきましょう(後で使用します)。

NotoSans-Medium.ttfは英数字(アクセント符号付き含む)、ロシア語などが含まれています。オープニング画面をみると恐らくこのフォントがゲームに使われているのだと思われます。

上記のことから中国語、韓国語を置き換えれば日本語を表示できることがわかります(どうしてこのような結果になるのかわかりましたか? 分からなければもう一度「フォント」項目を最初から読んでみてください)。

ゲーム内文章

フォントは中国語、韓国語のどちらかを書き換えれば日本語が表示できることがわかりましたので、次はゲーム内文章を調べることにします。最初のファイル構成の確認でゲーム内文章はstringフォルダに入っていることがわかっています。

まず、行うことは本当にこれがゲーム内で使用されているかということです。フォルダ内には6つのTSVファイル(TSVとは各項目がTABで区切られたファイルのことです。カンマで区切られたものはCSVファイルと呼びます)がありますが、一番確認がしやすいオープニング画面の文字列が入っているファイルを探します。

  • character.tsv

  • common.tsv

  • enemy.tsv

  • gameover.tsv

  • item.tsv

  • speak.tsv

これらのファイル名をみると英単語だということがわかります。最初からキャラクター、共通(または一般)、敵、ゲームオーバー、アイテム、話すです。このようにファイル名には意味がある名前が付けられていることもありますので参考にしましょう。今回の場合、一番怪しいのは「common.tsv」ということになります。早速テキストエディタで開いてみます。

common.tsvをテキストエディタで開く

TSVファイルの中身を見ると1行目にそれぞれの列が何を意味しているのかが書かれています。koやen、chは言語を表しています(特にこのデータは2行目には各言語がどこなのかが書かれているので助かりますね)。

では、早速書き換えてみます。中国語か韓国語がGoogleフォントでしたのでどちらでも構いませんが、今回はkeyの後にある韓国語を書き換えてみたいと思います。オープニング画面で使用されていた文字列は「New Game、Options、Exit」の3つです。英語の部分を確認すると15、19、32行目にあります。また言語はOption内で変更するためLanguageという文字列も変更しておきます(21行目)。

最初にテストで書き換える際は日本語が表示できず、なにも表示されない事態を避けるために「英語/日本語」という形で書くことをお勧めします。例えば「New Game/新規ゲーム」という形です。

書き換えのサンプル

書き換えたら保存します。そしてゲームを起動して確認してみます。最初は英語で起動しますのでOption→Language→한국어とします。このゲームはこれでオープニング画面に戻されます。

テキスト変更後

日本語は一部を除いてうまくいきました。残念ながら「音引き(ー)」が表示されていません。また繁体字なので漢字が少しおかしいのがわかると思います。しかし、日本語が表示できることがわかりました。

このままでは音引き以外にも表示できない文字があるかもしれないのでフォントの置き換えを行います。

ここから先は

14,739字 / 18画像

¥ 200

内容が気になりましたらぜひサポートをお願いします。そのサポートが継続の力になります。よろしくお願いします。