【GameMaker:Studio】スプライトフォントを使う方法

投稿者: | 2014年2月21日

今回はスプライトフォントを使う方法を紹介したいと思います。

■スプライトフォントとは

スプライトフォントとは、スプライトとして読み込んだ画像をフォントとして扱うものです。

font_strip16

例えば、このような「0123456789ABCDEF」が並んだ画像をフォントリソース化して、draw_font()などの関数で使用することができます。これにより、数字や特定の文字だけをTTFとは異なるものに差し替えることが容易に行えます。


■実装方法

まず先ほどのフォント画像をスプライトに登録します。

001

ファイル名が「_strip##」となっているので、そのままサブイメージに展開されるはずです。

そしてCreateイベントでスプライトをフォントリソースに変換します。

var str = ”0123456789ABCDEF”;
global.font = font_add_sprite_ext(sprite0_font_strip16, str, false, 0);

font_add_sprite_ext()関数を使用することで変換することができます。引数の説明をしますと、

  • sprite0_font_strip16 : スプライトのインデックス
  • str : マッピングする文字列(この文字の順番でスプライトのサブイメージの順番とマッピングされる)
  • false : プロポーショナル有効フラグ(ここでは無効)
  • 0 : 文字の間隔(ここではなし)

そしてDrawイベントで他のフォントと同じように扱うことができます。

draw_set_font(global.font);
draw_set_color(c_white);
draw_text(8, 8, ”0135789”);

002

このように描画できます。

また、draw_text_*関数をすべて使うことができるので、例えばdraw_text_transformed()を使用することで2倍のサイズで描画することが可能です。

draw_set_font(global.font);
draw_set_color(c_white);

// 線形補間を無効化
texture_set_interpolation(false);

// 2倍のサイズで描画
var scale = 2.0;
draw_text_transformed(8, 24, ”ABCDEF”, scale, scale, 0);

003

ただそのまま拡大すると線形補間されてしまい、ぼやけた感じとなってしまうので、ここでは texture_set_interpolation(false) で無効にして描画することにしました。

■おまけ

「おめが試作設計局」(http://o-mega.sakura.ne.jp/)より配布されているフォント画像をスプライトとして簡単に読み込めるように加工しました。(右クリックして名前をつけて保存、で保存できます)

font_strip89

ascii文字がほぼすべて含まれていて、視認性が高いフォントなので使い勝手はいいと思います。昔D言語やiPhone向けのゲームを作っていた時によく使っていました。ただし、8×8 と小さめのサイズなので、もう少し読みやすく拡大するのであれば、補完なしで2倍のサイズにしてから読み込むようにするといいかと思います。

フォントリソースへの読み込み方法は以下の記述で読み込むことができます。

var str = "0123456789";
str    += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
str    += "abcdefghijklmnopqrstuvwxyz";
str    += ".()[]#$%&'" + '"' + "!?^+-*/=;:_<>";
str    += "|@`";

global.font = font_add_sprite_ext(sprite0_font_strip89, str, false, 0);

サンプルプロジェクトも用意しておきました

なお、このフォント画像のライセンスは配布元に従い「やわらかライセンス」となります。

▼やわらかライセンスについて
・にほんご
免責・著作・配布 
 柔かいコト 
  本ゲームは「みんなで楽しく」やわらかいです。

  本ゲームを改造したりイジったバージョンを配布しても、何らOKです。改造たのしーい! 
  改造したところや改造した人の名前を、分かりやすいところに書いておくと 
  いいかもしれません。

  ナイスな改造が出来たら メールなどで教えて。俺にも遊ばせてください。

  改造とか一切してないものは好きにコピーして配布しちゃって結構結構。


English

Disclaimer / Copyright / Redistribution

 This game is under the "Yawaraka(flexible)" license.

  Use at your own risk. 
  You can freely modify and redistribute it. Conversions are really Fun! 
  You should write the changes and the person who did them in the 
  readme file or in a place that was obvious to find.

  If you make a cool modification, please tell me via mail or by any 
  other means, even though that's not a condition of the license. 
  Let me enjoy your changes too.

  If you have not done any modifications, you can freely distribute 
  without problems.