GM:S の Time Lines を理解


Alarmと何が違うのだろう程度の認識だったが、触ってみたらすぐ分かった。

Alarm は文字通り、時間の経過を Steps で計測し、Alarm に代入された数値は各 steps 毎に減算されて最終的に 0 となる。そして 0 になった時点で一回だけ実行されるイベントコードを、対応する Alarm に付けておけばそのイベントが実行される。キッチンタイマーみたいなもので、もっとやばい言い方をすれば時限爆弾だ。

Time Lines は Alarm と同じく Step を計測してタイミングを測っている。Time Lines も時間を流れで管理していて、何秒経過したらイベントを実行するか的な機能だがもっと緻密にタイミングを管理して制御できる。

結局 Alarm も Time Lines も似たようなことはコードで自作できるのだけど、予め用意されているのならそっちを使ったほうが楽だね、的な。

Spelunky のソースコードを見て以来

GMS に開眼した。あの規模のゲームをどう作るのかについてのヒントになった。

それまでは GMS の機能をどう選択してどう利用すればあれくらいの規模のゲームが作れるのかいまいち想像つかなかったのだけれど、Spelunky のソースコードを見て以来分かったことは、小さなユーザ定義関数(スクリプト)をガンガン作りまくればいいみたい。

GMS はインタプリタの仕様があるため大規模なゲームを作成するのには向いてないけれど、自作定義の関数をどんどん作りまくれば、コードの見通しはかなり良くなる。そして手法としてはシンプルなので、関数を作りまくるだけでほぼゲームが作れる。最近ようやくこの手法に手応えを得、グリグリ動くものを作れるようになってきた。

最終的な成果物は GMS の流儀に沿ったいわゆるハードコーディングで動いてることになるが、手法としては本当にシンプルなのでアルゴリズムの開発に専念できるのはやはり良い点だと思う。エクスポート機能が互換性に優れているため、GMLanguage 一つで本当に複数プラットフォーム動作を実現できている点も高評価。


Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です