うっほ!ゴッリラだよ!
最近コメントでよく、エラーメッセージについての質問をもらうんだ!
そこで今回は、ゲームを作っていく中で避けては通れないバグについて話していくよ!
GameMakerStudioでは、バグが起きたとき2通りの方法でエラーが表示されるんだ!
プログラム上で問題がある時はCompile Error欄に、ゲーム実行時にエラーが出た場合は
エラーメッセージと呼ばれるウィンドウ画面に表示されるよ!
そこには、どこで、何が原因でエラーが起きたのか、役に立つ情報が書かれているから
この記事を読んで上手く活用しているけるようになろう!
この記事はこんな方におすすめ
- ゲーム開発者初心者の人
- エラーメッセージの読み方が分からない人
- 英語が苦手な人
コンパイルエラーの読み方

Compile Error欄は画面下に配置されているよ!
GameMakerStudioがゲームを起動するのに失敗したとき、Compile Error欄にエラーが表示されるんだ!

①には、エラーの起きた箇所が表示されているよ!
ここでは、テストオブジェクトのStep Event一行目で、エラーが起きているみたいだね!
②には、エラーの起きた原因が表示されているんだ!
存在していないgorilla関数を呼び出したのが原因だね!
よくあるコンパイルエラー 一覧
・Wrong number of arguments for function
これは、関数に正しい数の引数を渡していない時に起こるエラーだよ!
引数が”,”で区切られているか確認してみてね!
例:
1 2 3 |
//instance_create_layer(x,y,"layer",object"); 4つの引数を受け取る instance_create_layer(x,y); //2つ引数が足りていないのでエラーが起こる! |
・Symbol ~1 expected Symbol ~2
これは、文法ミスをした時に表示されるエラーだよ! ~1の代わりに~2で表示されている記号を使用してね!
例:
1 |
show_debug_message("test; // ")"が抜けているのでエラーが起きる |
・Unable to find variable named [変数名]
これは、[]で囲まれた変数が見つからないときに表示されるエラーだよ!
呼び出そうとしている変数が、しっかり宣言されているか確認してみてね!
・Unknown Function or Script
これは、存在しない関数を呼び出そうとしている時に起こるエラーだよ!
関数名を打ち間違えていないか、確認してみてね!
例:
1 2 3 |
//max()引数として渡した最大値を返す mix(1,3); //打ち間違いによるエラー |
・Array index should not be negative
これは、配列の添え字に負の値を使用したときに表示されるエラーだよ!
繰り返し処理を使用した時に、エラーが起きることがあるので注意してね!
例:
1 |
num[-1] = 3; //配列の添字に0以下の値は使えない |
・Cannnon redeclare a built in variable
これは、組み込み変数と同じ名前で、変数を新しく宣言しようとしている時に起こるエラーだよ!
組み込み変数は緑色で表示されるので、変数名が被る場合は何かつけたそう!
1 |
var health = "healthy"; //healthは組み込み変数であるため使用できない |
・Assignment of an empty value
これは、変数に戻り値を持たない関数の、戻り値をセットしようとした時に起こるエラーだよ!
関数の使い方を間違っていないか確認してみてね!
・invalid token
これは、GameMakerStudioで使用することのできない記号、言語を使用したときに起こるエラーだよ!
他のプログラミング言語で出来ることが、GMLではできないこともあるので注意してね!
1 |
name = 'gorilla'; // ''はGameMakerで使うことは出来ないのでエラーが起きる |
エラーメッセージの読み方

これが、GameMakerStudioでエラーが起きた時に表示されるエラー画面だよ!
バグの原因を理解するのには、画像の二箇所に注目するだけで良いんだ!
①には、エラーの起きた原因が記されているよ!
“Variable o_test.test(省略) not set before reading it”
ここでは、テストオブジェクトのテストという変数が宣言されていない!ということが書かれているよ!
②には、エラーの起きた場所が記されているんだ!
“gml_object_o_test_Create_0 (line 3)”
テストオブジェクトCreate Event内の3行目でエラーが起きたみたいだね!
よくあるエラーメッセージ 一覧
・not set before reading it
これは、宣言されていない変数を呼び出そうとしている時に起きるエラーだよ!
一番多いのは、変数を打ち間違えているケースだね!コードを見直してみてね!
例:
1 2 |
apple = 3; show_debug_message("リンゴの値段は"+string(aapple)+"です!"); |
・DoSet: Invalid comparison type
これは、異なるデータ型を比べようとした時に表示されるエラーだよ!
数字と文字列を比べたりする場合は、キャストするのを忘れないでね!
例:
1 2 3 4 5 6 7 |
num = 3; name = "gorilla"; if(num == "gorilla") { //処理内容 } |
・DoAdd: Execution Error
これは、+を使った式に問題がある時に表示されるエラーだよ!
数字と文字列を足したい時は、キャストを忘れないでね!
例:
1 2 3 |
price = "3"+2; //エラーがおきる price = real("3")+2; //文字列を実数に変換したのでエラーがおきない |
・DoMul: Execution Error
これは、*を使った式に問題がある時に表示されるエラーだよ!
数字と文字列を足したい時は、キャストを忘れないでね!
例:
1 2 3 |
price = "3"*2; //エラーがおきる price = real("3")*2; //文字列を実数に変換したのでエラーがおきない |
・DoSub: Execution Error
これは、-を使った式に問題がある時に表示されるエラーだよ!
数字と文字列を足したい時は、キャストを忘れないでね!
例:
1 2 3 |
price = "3"*2; //エラーがおきる price = real("3")-2; //文字列を実数に変換したのでエラーがおきない |
・DoDiv: Execution Error
これは、/を使った式に問題がある時に表示されるエラーだよ!
数字と文字列を足したい時は、キャストを忘れないでね!
例:
1 2 3 |
price = "3"*2; //エラーがおきる price = real("3")/2; //文字列を実数に変換したのでエラーがおきない |
・Pop:: Execution Error – Variable Index out of range (var)
これは、値を代入していない配列の値にアクセスしようとした時に起きるエラーだよ!
loopなどを使って配列の値を呼び出している場合は、条件式に注意してね!
例:
1 2 3 4 5 6 7 8 9 |
num[1] = 1; num[2] = 2; num[3] = 3; i=0; for(i =0; i <5; i++) { show_debug_message(num[i]); } |
まとめ
今回は、エラーメッセージを理解する方法とよく起こるエラーを紹介したよ!
実際に僕がよく起こすエラーをまとめてみたけど、ここで紹介した他にもエラーは沢山存在するから、
なんじゃこりゃ!どうすれば良いんだ! ってなった時はいつでも僕@hellomanakiに質問してね!
この記事が少しでもみんなの役に立ったことを祈っているよ!

ありがてえ(`・ω・´)
少しでもお役に立てれば幸いです! また原因がわからないエラーが起きたら教えてくださいね!
FATAL ERROR って表示されます。これなんですか?
また、どうすればいいですか?
バナナおごるから教えてください。
コメントありがとうございます!エラーメッセージを見せてもらえますか?