T-Engine 4でローグライクゲームを作るのの続き。日本語対応する。
(これはRoguelike Advent Calendar 2021 15日目の記事です)
完成ソース
先に今回の変更を適用したソースを示します: Release v20211215
/module
フォルダに(exampleフォルダと並びになる位置に)advent2021
フォルダを
作り、その下にアーカイブを内容をコピーします。
事前準備
日本語化するに当たって、設定ファイルの追加が必要です。 手動で作成してもいいのですが、ToMEの機能で作るのが楽でしょう。 次の手順を行います。
- オプションなしで
t-engine
を実行 - Options->Language->日本語を選択
- 一旦終了する
途中で「オンラインを有効にするか」を聞かれるので"Disable all"を 選んでおいた方が良いでしょう。
実行
モジュール名が変わっているので、起動方法も少し変わります:
t-engine -Madvent2021 -uplayer -n --flush-stdout
変更内容の解説
新しいモジュールにする f2f8051
サンプルモジュールに変更を加えるにあたり、モジュール名などを変更します。 詳しくは Howto - Getting Started にあります。
I18N化する 410cf60
基本的にはinit.lua
にi18n_support = true
を追加すればよいのですが、
これだけだとフォントにロケール情報が適用されないため、
load.lua
でデフォルトのフォントを再設定します。
次に、LogFlasher
、LogDisplay
、HotkeyDisplay
の各機能はフォント指定を
省略した場合、デフォルトフォント設定に従わず固定で英文フォントを
使おうとするため、このままでは日本語が表示されません。
そこで、これらを呼び出すときには明示的にフォント指定をするようにします。
最後に、LogDisplay
はI18Nに対応していないため、事前に表示文字列を
I18N化してから渡すようにします。
これらの変更により日本語が表示されるようになります。
開発情報
ここまでの開発に使った情報源を記します。
前述したHowto。不完全ながらある程度情報がまとめられているので 最初に見る場所として。但しちょっと古いのでI18Nの話は載っていません。
APIドキュメント。あまり細かい記述はないのでざっくりどんな機能があるかを 見るために。
エンジンにI18Nが実装されたときの記事。雰囲気を知る用。
- game/modules/tome-1.7.4.team
ToME本体のモジュール。実体はzipファイルなのでリネームすれば展開できます。 具体的なAPIの使用法のサンプルを見たいときに。
- https://git.net-core.org/tome/t-engine4
T-Engine4のソースリポジトリ。ルーク、ソースを使え。
終わりに
これで一応開発の準備は整いました。ここからどうするかは未定です。