先日、Stellaris用フォント変更Modを公開しましたが、このときの経験を元にフォント変更Modの作り方をまとめました。HoI4にも応用が効くかもしれません。長め。
Stellaris用フォント変更Mod「Japanese Fonts Big & Bold」についてはこちら。
概要
本記事はStellaris用フォント変更Modの作り方について、特に私がつまづいた部分を中心にまとめたものです。
最大の問題点は、StellarisのSteamワークショップではフォントファイル(.ttfや.otf)のアップロードをできなくしているという点です。そのため、フォントをビットマップフォント(文字の画像ファイルと、文字コードとこの画像ファイル内の文字の位置を結びつけるファイルからなる形式のフォント)として用意してやる必要があります(もちろん自分用として作るだけであってワークショップで配布しないのであれば、フォントファイルを直接Mod内に入るだけで問題なく動作します)。
ビットマップフォント作成にはBMFontというソフトウェアを使用する方法をご紹介します。この作業にあたっては、使用したいフォントがPCにインストールしてある必要があります。
作成したビットマップフォントをゲーム中で使用するには、設定ファイルを変更してやる必要があります。これが終わればフォント変更Modは完成です。Steamワークショップにアップロードして配布しましょう!
以下、作成手順について詳しくご紹介します。
作業を始める前に
ファイルをいじる前に、まずModフォルダを作る必要がありますが、これについてはこちらの記事の「作業の前に」の節をご覧ください。
Modファイルの構成
「Japanese Fonts Big & Bold」を例に取ると、以下のようなファイル構成となっています。
- gfxフォルダ
- fontsフォルダ
- フォントファイル(.ddsファイルと.fntファイル)
- fontsフォルダ
- interfaceフォルダ
- jp_fonts.gfx(Japanese Language modでフォントを指定しているファイルと同名)
- load_screen_font.gfx(同上。こちらはロード画面のフォントを指定している)
.ttfファイルや.otfファイルでフォントを実装する場合はjp_fonts.gfxで文字の大きさを指定するだけで大きさを変えることができるのですが、ビットマップフォントの場合はそういうことはできないようで、フォントファイル自体を別に作成する必要があるようです。
「Japanese Fonts Big & Bold」では18、20、27、32、40ピクセルの5種類を使用していますが、やりようによってはもっと減らせるかもしれません。
ビットマップフォントの作成
ビットマップフォント作成にはBMFontというソフトウェアを使用します。「Japanese Fonts Big & Bold」作成にあたっては、こちらのツイッターモーメントと「BMFont(Bitmap Font Generator) で NGUI 向けのビットマップフォントを作る方法」という記事を参考にしました。
この2つの記事を読めばおおよそなんとなくわかるかとは思いますが、以下、私の使い方をご紹介します。私はしっかりBMFontの使い方をわかっているわけではなく、あくまで「Japanese Fonts Big & Bold」作成にあたってはこれでうまく行ったというだけなので、その点をご了承の上お読みください。
フォントの設定
まずOptions→Font settingsから使用するフォントを選択します(一番上のFont)。ここでフォントを指定するにはPCにフォントがインストールされている必要があります。.ttfファイルや.otfファイルはダブルクリックでフォントの内容を閲覧すると「インストール」というボタンがあるはずなのでそれでインストール可能です。
実を言いますと、下のほうのチェックボックスやEffectsなどの意味はよくわかっていません。参考記事にあるとおりに指定しています。すべて設定したら「OK」をクリック。
「Japanese Fonts Big & Bold」では「M+ Fonts」のM+ C Type-1 Boldを使用しています。これはModとして配布するにあたってライセンス文書を作成するのが面倒だったために制限の少ないフォントを選びたかったこと、M+フォント自体がかなり綺麗でStellarisの雰囲気にもうまくマッチしそうだと思ったことによるものです。
取り込む文字の選択
フォントを指定するとこのような画面が表示されます。右側の各項目が文字グループ、左側のマス目がその文字グループに含まれる文字です。明るくなっているのは現在選択されている文字、暗くなっているのは選択されていない文字を表します。文字をクリックすると選択/非選択が切り替わります。ビットマップフォントを出力する際には選択した文字のみが取り込まれます。
手動で選択するのはあまりにも大変なので、Edit→Select chars from fileでファイルを選択すると、そのファイルに含まれる文字が選択されます。
私の場合は「Japanese Language mod」のlocalisationフォルダ内の.ymlファイルをすべて読み込んだ上で、JIS第1水準の漢字をテキストファイルとして保存(このときUTF-8 BOMつきとしないとうまく取り込めないので注意)し、これも読み込んでいます。
これにさらに「ぢ」や「ヱ」など、取り込みに漏れているけど入っていてもいいだろうという文字を手動で選択していますが、これは特にやらなくてもいいかもしれません(面倒ですし……)。
ビットマップフォントの出力
ビットマップフォントの出力にあたっては、それに先立ってOptions→Export optionsで設定を変更します。
変更する必要があるのはまず中段のTextureで、このWidth・Heightは文字画像ファイルの大きさです。大きくすることでより多くの文字を取り込めますが、ファイルサイズは大きくなります。また、Bit depthは8→32に変更しておきます(どういう意味があるのかはわかりませんが……)。
もうひとつ、一番下のFile formatでは、Texturesをddsに変更する必要があります。参考記事ではPNGにするように記載がありますが、StellarisではPNG形式のフォント画像ファイルに対応していないようです。
すべて設定したら「OK」をクリック。これで設定は完了です。Options→Save bitmap font as…で保存場所とファイル名を指定すると、.ddsファイル(文字画像ファイル)と.fntファイル(座標指定ファイル)が保存されます。
注意が必要なのは、例えばファイル名をmplus27とした場合、.fntファイルはmplus27.fnt、.ddsファイルはmplus27_0.ddsという名称で保存されますが、この両ファイルが同じファイル名になっていないとStellarisでは機能しません。mplus27.fnt、mplus27.ddsなどというように名称を揃える必要があります。
jp_fonts.gfxの設定
次にjp_fonts.gfxを編集してフォントの指定を変更します。「Japanese Language mod」と併用する形で使用するModにする場合、必ずjp_fonts.gfxという名称(つまり「Japanese Language mod」でフォントを指定しているファイル名と同名)である必要があります。「Japanese Language mod」
「Japanese Fonts Big & Bold」のjp_fonts.gfxを開くと、このようにフォント名とフォントのパス、フォントの色が記載してあります。これ以外にも記載方法はありますが、ここではビットマップフォントの記載方法のみを説明します。
やり方は簡単で、それぞれのbitmapfontの中の記載を書き換えるだけです。最低限、name、pathが記載されていれば動作すると思いますが、一応念のためcolorも指定しています。
nameは検証したわけではありませんが、おそらくゲーム内の表示領域と結びついているものと思われる(やったことがないのでわかりませんが、変更する必要もありませんし、変更できるかも不明)ため、変更しません。
pathは作成したビットマップフォントのパス(Modフォルダより下の部分)を指定します。拡張子は不要。例えばgfx\fontsフォルダにmplus27.fnt、mplus27.ddsというフォントファイルがあってこれを指定する場合はgfx/fonts/mplus27と記載します。バックスラッシュ[\]ではなくスラッシュ[/]を使用することに注意しましょう。
colorもよくわかりませんが、0xffffffffと記載することでうまく動作しているのでおまじないとして書いています。なくても動くかもしれません。
load_screen_font.gfxでも書き方は同じです。
文字の大きさの調整
設定して起動すると、うまく行っていれば無事にフォントが変わっているはずです。しかし妙に字が小さいとか、大きすぎて変なところで改行されているとかの不具合が出ていると思います。
上でも書いたようにビットマップフォントは設定ファイルだけでは大きさを変えることができないようなので、新しくビットマップフォントを作成する必要があります。ただ、BMFontにはそれまでの設定が自動的に保存されているはずなので、Options→Font settingsからSizeを変更してビットマップフォントを保存すればすぐに大きさを変えたものを作成できます。
「Japanese Fonts Big & Bold」では記事執筆時点で以下のように文字の大きさを設定しています。
- standard_font(表示箇所不明):32ピクセル
- large_title_font(ニューゲーム時の国家選択画面の国名の表示):40ピクセル
- large_title_font_28(表示箇所不明):32ピクセル
- cg_16b(イベントやインターフェースの説明文などさまざまな部分で使用):18ピクセル
- hoi_16mbs(銀河マップでの星系の産出資源の数字):18ピクセル
- malgun_goth_24(さまざまな部分の説明文の文字よりも少し大きな文字):27ピクセル
- map_name_border(おそらく銀河マップでの国名):27ピクセル
- map_name_nebula(おそらく銀河マップでの星雲名):27ピクセル
- map_name_sector(おそらく銀河マップでのセクター名):27ピクセル
文字の調整は手間がかかるので、私もどれくらいの塩梅がいいのかあまりよくわかっていませんが、一応上記の大きさで大きな不具合なく表示できていると感じています。ただ、マップ上に表示されるフォントはもっと大きくてもいいかもしれません。
この調整でゲーム内の表示で大きな不具合がなくなれば、フォント変更Mod完成まであと一歩です。
.Modファイルの編集
「Japanese Language mod」と併用する形で使用するModにする場合、jp_fonts.gfxを変更する必要がある関係で「Japanese Language mod」よりも後にModを読み込むようにする必要があります。そういうときはModの.modファイルでdependenciesの中にMod名を記載すると、そのModよりも後に読み込むようにすることができます。
「Japanese Fonts Big & Bold」では「Japanese Language mod」と「Japanese Complete Translation」をdependenciesの中に記載し、これらのModの後に読み込まれるようにしています。
これでModは完成です。Stellarisランチャー→Modタブ→Mod Tools→Upload ModからアップロードすればModを公開できます。
実を言いますと最初はフォントファイル入れて設定すればいいだけだから簡単だと思っていましたが、アップロード制限でビットマップフォントにしなければならないとのことで、思ったよりも大変でした。自分の好みのフォントにできるとやはりずっと遊びやすく楽しくなりますので、いろんなフォント変更Modが出てくればいいなあと思いますし、本記事がその際の参考になればうれしく思います。
コメント