見出し画像

ChatGPTがあればGameMakerでブロック崩しを作れるのか

こんにちは。
皆さんはゲームって作ったことがありますか。
『ゲーム 制作』で調べれば、様々なゲームエンジンが無料でダウンロードできる時代。

この記事をクリックしてくれた人たちも一度ぐらいは試したことがあるのではないでしょうか?
私と同じですね。

そしてチュートリアルで挫折したのではないでしょうか?
私と同じですね!

チュートリアルで作るゲームと言えばブロック崩しかシューティングゲーム。ゲームの最小単位みたいにシンプルなゲームです。

そんなシンプルの代名詞みたいなゲームすら作れなかったのはなぜなのか?

GameMaker付属のサンプルゲームのコード

コードが分からない!

分からなければ人に聞く!
ということで今回chatGPT3.5にコードを聞きながら進めてみようと思います。
chatGPTをあんまり活用したことないけどなんか色々回答してくれるAIなんでしょ?知ってる知ってる。

やるぞ!


登場人物

ゲーム作成の経験はティラノスクリプトを使ってのノベルゲーム作成しかない。javascriptで四則演算ぐらいならできる。あとは四捨五入とか。

GameMaker
2Dゲーム作成に特化したゲームエンジン。非商用利用なら無料で使える(2024年3月現在)。Unreal Engine, Unity, GameMakerのチュートリアルを一通り挫折した後、一番手におえそうだったからという理由で今回選出された。
プログラミング言語はGMLというオリジナル言語。

ChatGPT
こんにちは!私はChatGPTといいます。OpenAIによって開発された大規模な言語モデルで、GPT-3.5アーキテクチャに基づいています。私は様々なトピックに関する質問に答えたり、会話をサポートしたりします。質問があれば気軽にどうぞ!

Copilot
ゲスト参戦。


1.事前準備

今回chatGPTはコード作成に専念してもらいたいので、以下のオブジェクトは自分で用意しました。
・ボール
・バー
・ブロック
こんな感じで配置します。

初期配置。

GameMakerの画面は今こんな感じ

この画面からそれぞれのオブジェクトにコードを書きこんでいく

2.いざ!コードを書いてもらう!

chatGPT君?GameMakerでブロック崩し作りたいんだけど……。
てかGMLって知ってる?

心強い返答!

おお!ブロック崩しとしか言ってないのに一気に出してくれました。
しかもイベント名と脚注まで書いてくれてる!

これをそのまま張り付けて……。実行!
すると……。

エラー発生!

The identifier 'speed' is reserved and cannot be used as a variable name.

"speed"という単語を新たに変数として使うことはできないとのこと。
これをそのままchat_GPTに伝えてみましょう

こんな感じでそれぞれのオブジェクトのコードを修正してくれました。

speedをbar_speedとかに名前を変えるみたいですね。
これで再度実行してみましょう!
すると……。

またエラー!

英語だ……

しかし慌てることはありません。きっとchatGPTが何とかしてくれるはず。そのまま伝えます。

chatGPT君にはエラーの内容が分かってるみたいです!さすが!
なんか良く分かんないけど実行します!私はマリオネット。

すでに感動

動いた!

でもボールが早すぎる!あとボールとバーの衝突判定がない!
それと開始した時のボール移動方向が水平より上になって欲しい!
何とかしてよ~chatGPT~!

ボールがバーで反射できるように
ボールの速度が一定になるように
ボールの発射角度が水平より上になるように

そしてこれをまんまコピーして……
実行!

ボールがブロックの角に当たった時の挙動が怪しいのはご愛嬌


完成!

よし、これでだれがどう見てもブロック崩しになりました。

結論:チュートリアルを挫折するぐらいの初心者でもchatGPTとGameMakerでブロック崩しは作れる!

これでチュートリアルはクリアしたといっても過言ではないですね。
次はもっとオリジナルなゲームに挑戦するぞ!



おまけ:vs Copilot

最近私のwindowsのタスクバー右端にCopilotという新しい仲間が増えたので、せっかくなのでどっちがGameMakerに詳しいのか比べてみましょう。

Copilot君!ブロック崩しを作って!

う~ん。chatGPT君が理解あるカレシ君過ぎたのもあってちょっと物足りないですね。
イベントごとにコードが分けられてないので、それぞれのコードがcreateなのかstepなのかcollisionなのかをこちらが判断する必要があります。
条件を追加してやり直してみます。

出してくれましたね。大分さっきとコードが違いますが、それは置いといて。
イベントごとにクリップ範囲が分かれているのも好印象です。
さっそく実行してみましょう!

う~ん

バーが勝手にどっかに行っちゃった!
ボールが早すぎる!
ブロックが表示されない!

ちょっと大変そうですが、まずバーの問題から解決してみましょう。

変わって無くない?
全く同じコードを出力してますね。
う~ん。ちょっと調べてみると"speed"はローカル変数と呼ばれるもので、これに値を入れただけでオブジェクトの移動速度が変わってしまうみたいです。それをCopilotは知らなかったみたいですね。

その後"speed"は変数として使用できない旨をCopilotに伝えコードを修正してもらいましたが、エラーが出てしまい、そのエラーについて聞いても全く同じコードを提出してくるばかり……。

ブロックが消える問題についても聞いてみましたが、やかり同じコードを返してきました。

CopilotはあんまりGameMakerに詳しくないみたいですね。

以上、chatGPTと協力してGameMakerでブロック崩しを作った体験でした。


この記事が気に入ったらサポートをしてみませんか?