GameMaker Studio2 DnDの限界を調べる
- BTA(Kelorin Jo)
- 2019年11月25日
- 読了時間: 2分
ゲームを作りすすめるうちに、DnDでできないことが次第に明らかになってきました。
●スクリプト(ユーザー関数)の引数が5つしか使えない
GMLなら16まで引数を使えるのに、DnDでは5つまでってひどい
(ただ、違うオブジェクトでも同じ名前の変数を使ってるなら、引数や戻り値を使わずともそのままスクリプトが動き、ローカル変数は書き換えて戻せるので、超不便てほどではないです)
●スプライトの色変えができない
色がかえられたのはDraw Sprite Transformedだけで、色だけ変えるやつがないみたいです。
インスタンスの色を変える・スプライトの色を変える、とかもなぜか色が変わらない
また、乗算のみで加算でブレンドとか使えないようです
●シェーダーが使えない
ゲームに重宝しまくるヒットフラッシュは、GameMakerの基礎テクで、真っ白シェーダーを作って1ステップだけ適用するという方法で実現しますが、DnDにシェーダー扱えるやつがありません
記事から短いコードをコピペするだけなので、仕方なくコード書きました。該当箇所をExecute codeで実行です。

DnDの途中で、ちびっとだけコーディングに切り替えることができます。
●他オブジェクトのユーザーイベントを操作できない
ユーザーイベントの効果的な使いみちがまだ思いつかないけど、とりあえず発見
●instance_nearest(x、y、obj)がない
誘導ミサイルのAIなど、指定したオブジェクトobjのうちで座標xyから一番近いインスタンスのIDを取得するという、重要な機能ですがDnDにはないのね
●ルームの背景をスクロールできない
カメラの移動によるスクロールしかできせん。これはイラッとした。それはできろよと…
●パスが生成できない
実行中にパスを生成することはできません。あらかじめリソースに作ってあるパスしか扱えない
まあ、どうしても必要な機能があったらDnDの途中でExecute ScriptかExecute codeします。

Exe-codeは見た目不格好だけど、Exe-Scriptの倍早く動くとかどっかの記事にありました
まあ多少効率が悪くても、あまり独自機能にたよらずベーシックなプログラムを組んどけば
たとえばUnityに移植しようってなった時たすかるんじゃないのという目論見です。
とはいえ、ゲームを作りすすめるにつれて「これUnityだったら即解決じゃね」なことが増えてきてるのを実感します。親子構造とかパーティクルとか。
これは、自分がプログラムのプの字ほどがわかるようになってきたからそう感じるのか。
でもUnityC#はできることの多さ以上に、できないことが多いんだよなあ…