まだ初心者なので GM:Studio には知らない機能がたくさんある。背景を表示したいけれど draw_background 関数の存在をまだ知らなくて、「背景表示」という未知の領域へ突入したら、色々すっ飛ばして UVスクロール機能が先に目に付いたというわけ。
参考(2dgames.jp さんの所):【GameMaker:Studio】GameMakerでUVスクロールする方法
そして GM:Studio は UVスクロールが可能だということに気がついた。
2dgames.jp さんのところはすごく丁寧に説明してくれてあるので毎回助かる、ありがてぇありがてぇ(方角を拝んでいる)。元々UVスクロールが使いたくて調べていたわけではなかったのだが、背景を表示する機能を覚えるついでにUVスクロールも覚えてしまった。ひと粒で二度美味しいぜ的な?
UVスクロールとは?
UVスクロールとは、UV 座標を動かすことでテクスチャ位置を調整しながら表示、これをシームレスになるようにつなぐことであたかも流れて(スクロールして)いるような効果が作れるというもの。
今は 2D ゲームと言っても描画はポリゴン(板ポリ)を使っているため基本は 3D だから、UV を弄ることができれば UV スクロールも可能というわけ。つまり GM:Studio 1.4 は UV を標準機能から弄ることができた。
それは誰得機能
UVスクロールは初心者向きの機能ではないが、筆者の場合は先に Surface 機能を習得していたため、覚える順番がでたらめでも理解できた。
GM:S 的な考え方としては、まず draw のターゲットをポリゴンに切り替え、ポリゴンにテクスチャを張る関数で描画して UV を弄れば良い。これらは begin 〜 end ブロックステートメント内に書く要領で扱える。この辺りの表現というか GML の仕様はだいたい共通していて、概念的には with ステートメントも同じ。ターゲットを切り替える場合にキーワードや関数でステートメントをまとめるのである。
draw_primitive_begin_texture(hagehage); { ※ ここに処理を書く }; draw_primitive_end();
動作例(HTML5):UVスクロール+背景(タイリング)
GM:Studio の良い点
エクスポート機能がなぜか(失礼)大変頼りになる。GML という言語自体はあまり高度なものではないけれど、これ一つで無数のプラットフォーム動作を実現できるという点においてなら、かなり素晴らしい完成度になってる。
互換性の無い機能は最初からリファレンスに明記されているし、標準機能だったらどの環境に持って行ってもこれまで動かなかったケースは無い。もちろん複雑なループ処理を施しても問題無いし、互換性に配慮した書き方のコツはあるけれどそれも大した労力ではない。
MMF2/CF25 のエクスポータでは標準機能を使っていても複雑な処理になると絶望的に動かなくなったのだが、GM:S ではその予感が無い。動くんや!
MMF2/CF25 を使っていると自分の表現力が悪いんかおかしいんかなと、疑問に思ったことも多々あったが結局そんなことはなかった。単なるエクスポータのバグだしツールのバグだ。あるいはRADツールとして可能だった表現力の限界をいつのまにか自分が突破してしまっていたのだと思う。だとすると MMF2/CF25 は自分が使う最後の RAD ツールになるかもしれない。
GM:S の表現力は高いし想像以上だった。GML は型がユルユルすぎだし、言語仕様的にも大規模なゲームは作れないけれど、作る予定もないから即ちこれでいい。本格的に 3D 対応してくれたらもっと良い。