2021年12月6日月曜日

Feel The Snow のフォントについて

Feel The Snow のフォントについて調べたことを纏めておきます。自分用のメモなのでなぐり書きです。



今回は中国語フォントを日本語フォントに差し替え、日本語を表示する方針で作業を進めます。このゲームは GameMaker Studio 2 製です。


作業の概要


・差し替え用の日本語フォントは GMS2 を使用して作成する。
・日本語フォントは M+ 2p を使用する。
・登録する文字の種類は Shift_JIS で定義されている文字とし、第一水準、第二水準、非漢字、ASCII の 7,140 文字とする。
・登録文字のテキストは Github「ゲーム制作用文字一覧表(UTF-8)」を使用する。
・ゲームの解析には UndertaleModTool を使用する。


ゲームの解析


UndertaleModTool を起動し、ゲームフォルダーにある data.win を開きます。

Fonts 内の schi_12 と schi_18 が中国語フォントだとわかりました。この二種類のフォントを作れば日本語化できそうです。

ここにはフォントの基本情報(サイズなど)、使用する Texture page item、文字のグリフや座標情報があります。
赤の矢印は、使用している Texture page item を示しています。

実際の画像は、Embedded textures の Texture 0 にあります。
画像の中には文字以外の画像もあるため、単純にフォント画像を差し替える訳にはいきません。何らかの工夫が必要そうです。

ここまでで分かった各フォントの情報です。

schi_12

・Name: schi_12
・DisplayName: DengXian
・Font Size: 14
・Texture: PageItem 77

PageItem 77

・Size: 1024x1024
・Texture: Textire 33

Textire 33


schi_18

・DisplayName: Zpix
・Font Size: 18
・Texture: PageItem 0

PageItem 0

・Size: 2048x1024
・Texture: Textire 0

Textire 0



GMS2 のフォント構成


GMSのフォントは、フォント情報、フォント画像とそれらの関係を結びつける Texture page item で構成されていました。

フォント情報は、フォント画像のサイズ、各文字の座標情報、使用する Texture page item が記されています。

フォント画像はPNG形式で Embedded texture に格納されています。ただしこの画像にはフォント以外の画像が含まれている場合があります。

Texture page item には、使用するフォント画像とその画像のどの部分を使用するかの情報が記されています。

それぞれの繋がりは『フォント情報⇒テクスチャー・ページ・アイテム⇒フォント画像』となっていました。

ここで、お~るげーむず(仮)さんに相談したところ、「中国語フォントを差し替えるのではなく新たにフォント画像を追加してはどうか」との提案と参考記事を紹介していただきました。
How to 日本語化 GMSv1篇 | お~るげーむず(仮)

提案を元に、以下の手順でチャレンジしてみます。


日本語フォントの作成とゲームへの反映手順(仮)


1.GMS 2.2.5 で日本語フォントを作成する。
2.ゲームの Embedded texture に1のフォント画像を追加する。
3.ゲームの Texture page item で指定されている画像を2に変更する。
4.フォント情報の座標情報を1で作成したフォントに変更する。


1.GMS 2.2.5 で日本語フォントの作成


まずは、GMS2 を使って日本語フォントを作ります。なお、UndertaleModTool は GMS 2.3 以降には、まだ対応していないため(2021/12現在)、GMS 2.2.5 を使用することにしました。

テクスチャーページサイズを拡張

日本語は文字数が多いためゲームオプションでテクスチャーページサイズを拡張します。手順は、ゲームオプション ⇒ Windows ⇒ グラフィックス を開き、テクスチャーページサイズを 2048x2048 から 4096x4096 に変更します。(これをやらないと、サイズ18ポイントのフォントを作るとドットの荒い判別しにくい画像となりました)

日本語フォントの作成は以下のサイトを参考に作成しました。
GameMakerStudio2で日本語を表示する方法 | 初心者でもできる!ゲーム開発

2.ゲームの Embedded texture に1のフォント画像を追加


ここでは、data.win を操作するツールを作成しフォント画像の追加を行いました。data.win の Embedded Texture には 73 の画像が登録されていました。
ここに、フォント名「schi_18」用に JpFont_18p_aa.png を「Texture 73」として、フォント名「schi_12」用 JpFont_12p_aa.png を「Texture 74」として追加しました。


3.ゲームの Texture page item で指定されている画像を2に変更


同様にツールで変更します。
フォント「schi_18」の Texture Page Item は 「Texture Page Item 0」で、使用している Embedded Texture は「Texture 0」です。これを、先程登録した「Texture 73」に変更します。
フォント「schi_12」用の Texture Page Item は 「Texture Page Item 77」で、使用している Embedded Texture は「Texture 33」です。これを、先程登録した「Texture 74」に変更します。

4.フォント情報の座標情報を1で作成したフォントに変更


同様にツールで変更します。
フォント「schi_18」の既存の座標情報をすべて削除し、gms2 の fonts フォルダーにある JpFont_18p_aa.yy を元に登録し直します。同様にフォント「schi_12」も登録し直します。


これで、フォントを差し替えた data.win が作成できました。ゲームフォルダーに data.win を上書きコピーし、言語を中国語にすれば、新しいフォントでゲームをプレイできます。



デフォルトキャラクターについて


上記手順で日本語化した場合、改行位置にゴミが表示されてしまいました。

このゲームではデフォルトキャラクターを設定する必要があります(これを設定し忘れるとゲームが起動できなくなりました)。デフォルトキャラクターとはフォントに文字がない時に表示する文字のことで、このゲームでは豆腐(□)、文字コードは 9647 となっていました。
しかし、この状態だと、ダイアログやアイテムの説明文の改行位置に豆腐(□)が表示される問題が発生しました。そこで、暫定対策としてデフォルトキャラクターのグリフをスペースのものに置き換えることにしました。

課題

テキストがダイアログやアイテムの説明などが表示枠をはみ出して表示される箇所がある。半角スペースを挿入するか、\n により強制改行を挿入する必要がありそうです。


今回は、Undertail Mod Tool のライブラリ「UndertaleModLib」を使用してフォント差し替えツールを作成しました。ツールの作成方法については、機会がありましたら別記事を上げたいと思います。

では・・・

0 件のコメント:

コメントを投稿

Raspberry Pi 3 Model A+ で広告ブロックサーバーを作る(その2)

前回作成した 広告ブロックサーバー の稼働状況をAmbientにアップロードするスクリプトを書いたのでメモを残しておきます。