日本語表示の場合スプライトフォントの作成が事前に必要
となります。
「システムにインストールされているフォントの名前指定するだけで簡単に描画できないの?」って思いますが、日本語じゃなければできるんです。
漢字を扱う上での問題点
GameMakerLanguage(GML) では font_add 関数が使えるので
font_add(name, size, bold, italic, first, last);
英語ならASCII
がカバーしてる32
~128
を指定しておけばほぼ大丈夫。YoYoGames のドキュメントでも ASCII 範囲内しか載せてません。
GMS はユニコードに対応済み
で、ユニコードの表現可能範囲なら日本語であろうとスワヒリ語であろうと※文字表示可能なのだけど、ユニコード全体をテーブルリストに載せないのは範囲広すぎて到底カバーできないからです。
※ 試した結果、ハングルやテルグ語を表示できません、フォントの問題ではなく GMS 側の問題です
newfont = font_add( 'Arial', 24, true, true, 32, 128);
英語はこれでヨシ、日本語だとこれは無理。
漢字文化圏は必要文字数が膨大なこと、そしてユニコードが表現できる範囲は更に膨大なので、ユニコードが表現できる全文字種をプリレンダすればとても巨大な画像サイズとなります。これを GPU にテクスチャとして転送するのはテクスチャサイズ的にも非現実的なのです。
日本語の場合、漢字込みの文章では約一〇〇〇文字種
以上使うとして、必要な文字コードはあっちこっちに点在しているから大雑把な範囲指定だと無駄が多すぎ、必要な文字だけを絞り込んで個別に指定
します。
しかし大雑把な範囲指定しかできない現在のfont_add 関数
は、事情が複雑な漢字文化圏での利用をほぼ想定していません。
日本語表示のためには専用のFont Properties
から、事前に利用する文字を個別に指定してスプライト化しておかなければならない事情がこの辺りに有ります。
範囲指定の具体的方法は(敬称略) 2dgames.jp ですごく丁寧な解説がされています、まずどうぞそちらをざっくり目を通してください。
- 買った直後・スタートアップ画面とライセンス認証など
- ライセンス認証後、環境にまつわる設定を変更
- コードエディタの設定、予測変換の反応速度など
- プロジェクトの新規作成、文字と画像を表示してみる