GameMakerの長所と短所~初めてのインディーゲーム開発記~
GameMakerでゲームを作るぞ
*まずはじめにこれはインディーゲーム制作初心者の記録だということを言っておきたい。
エンジニアの方々からすれば、当たり前のこともわからない人間が書いていることをご理解ください。
経緯
ゲームしすぎて飽きたのでゲームを作ってみようと思い立った。
といってもゲームなんて作ったこと無いからよくわからん。
ゲームエンジンというので作るらしい。そんなことすら知らないところから始まった。
色々調べたところ、心折れまくった。
UnityはC#を使うらしく諦め、
Godotは試しに使ってみたが分からなすぎて諦めた。
流浪の果てにたどり着いたのがGameMakerだった。
試しにいじってみるとなんとかなりそうだった。
GameMakerの長所と短所
GameMakerを使い始めて3ヶ月以上経った。
なんとなく長所と短所がわかってきたので記しておく。
独自言語GML 求人は無いので仕事に繋がらない
このゲームエンジンの特徴はGMLという独自言語を使うことだ。
はっきり言ってこの言語、仕事に繋がらない。求人なんて無い。どのゲーム会社も使わない。
マイナー言語過ぎる。
そんな言語、誰が使うのか?誰が学ぶのか?
私だ。
あくまで趣味でやるからいいのだ。そう言い聞かせた。
ビジュアルスクリプトはオススメしない
一応GameMakerにはビジュアルスクリプトもあるが、使ってみればわかる。
こいつは可読性が低く、ゴチャゴチャしてわけがわからなくなる。
コードならスッキリ記述できるところも、ブロックを山のように積み重ねなくてはならない。
オススメしない。GMLを書いたほうがいい。
プログラミングが苦手な人もGMLのほうがいい。コードは書いてれば上手くなる。
動的型付け言語
GMLは動的型付け言語である。
勝手に型付けを行う。これが良いのか悪いのかは状況による。
個人開発においては、型を気にしないでガンガンコードを書けるのは嬉しいが、いつかバグの元になりそうで怖い部分でもある。
型の判定も緩い。PHPとかJavaScriptと同じで、整数だろうが文字列だろうが1なら1だ。
int64(1) == string(1) はtrueとなる。
だがPHPやJavaScriptと違って ===(厳密等価演算子)がない。
色々な書き方
GMLは色々な書き方があるが、普通ならこんな感じで書くと思う。
if ( x == 1 )
{
x = 2;
}
でもこっちでも正常に動く。
if x == 1
{
x = 2
}
括弧やセミコロンなどいらない。
古い人間からすると末尾にセミコロンがないとなんか気持ち悪い。
でも海外では後者で書いている人が結構いた。
ちなみに私は括弧は省略するが、セミコロンだけはつける派。
セミコロンをつけるクセを無くすと、他言語を書くときにエラー連発しそうで怖い。
あと演算子の && は and でもいいし
|| は or でもいい。好きな方を使っていいらしい。
(優先順位があるかは不明)
他オブジェクトは
hoge.x = 0;
のような形で操作できるが、
with( hoge )
{
x = 0;
}
これでもできる。
書き方が色々あるので自分の中でルールを決めておいたほうがいいかもしれない。
ちなみにGMLは else if がない。
普段からelse if を使わない人には関係ないけど。
assetの名前空間問題
assetには同じ名前をつけることができない。たとえフォルダが分かれていてもダメ。なのでasset名がやたら長くなりがち。
作っていくうちに、どんどんassetも増えていくので、名前がゴチャゴチャしてくる。
GameMakerは大きなプロジェクトには向いていない。
ドキュメントが少ない
Unityと比べると段違いに少ない。英語を翻訳しながら勉強する根気が必要。
一応、日本語のwikiもあるが、最新の組み込み関数・変数については翻訳されていないものもある。
そういうものは公式のリファレンスを翻訳するしか無い。
圧倒的分かりやすさ
色々、不満点を書き並べてきたが、それらをすべてひっくり返すくらいの強みが
圧倒的分かりやすさだ。
とくにゲームエンジン初心者はGodotから入るとマジでわけがわからなくなる。
仕組みすら分かってないところに、オブジェクト指向の独自言語を写経する精神力は私には無かった。
なのであなたがもし初心者なら、ゲーム作りを理解するためにもGameMakerで知識をつけるのが良いと思う。分かりやすさはトップクラスだと思う。
イラスト機能もついているので、ちょっとした作画ならGameMaker内で可能。これも便利。
まとめ
ということで、まとめると
- GMLという独自言語を使う。仕事には繋がらない。
- GMLは緩い。
- フォルダが違ってもasset名に同じ名前をつけることができない。
- ドキュメントが少ない。
- 個人開発に向いている。
- 初心者にわかりやすい。
って感じです。
Discussion