ChatGPTを評価するために「宇宙船着陸ゲーム」を作ってみた話(WPF × C#)
最近話題のAIアシスタント「ChatGPT」。コードの自動生成もできるということで、実際にどこまで使えるのかを試すべく、MicrosoftのVisual StudioでWPFとC#を使って「宇宙船着陸ゲーム」を作ってみました。制作には2日ほどかかりました。
■ 開発環境
OS:Windows 10 / Windows 11
開発言語:C#
UIフレームワーク:WPF (.NET 9.0)
ツール:Visual Studio 2022
■ なぜ宇宙船着陸ゲーム?
プログラミングの難易度として中程度で、物理演算や入力処理、UI描画など幅広い要素が求められるため、ChatGPTのコード生成能力を検証する題材としてちょうど良いと考えました。プレイヤーは宇宙船を制御して、一定の速度以下で着陸することを目指します。
■ ChatGPTに指示したこと
最初にChatGPTに以下のような指示を出しました。
「WPFで動作する宇宙船着陸ゲームをC#で作成してください。スペースキーでバーナーを制御し、着陸速度が速すぎるとクラッシュするようにしてください。」
すると、一見それらしいコードが返ってきます。ウィンドウ、Canvas、宇宙船の速度など、基本構造はできていました。
■ しかし現実は甘くなかった
▽ 問題1:画面デザインがおかしい
ChatGPTが生成したコードでは、うまく表示ができませんでした。人間が手を加える必要がありました。特に後からスペースキーを押したときにバーナーを別画像で表示させるときに、非表示/表示のコード生成でまともに動作するようになっていませんでした。
▽ 問題2:ゲームバランスがおかしい
着陸時の速度チェックロジックが甘く、速度制御がいい加減でも「着陸成功」になってしまう問題もありました。
▽ 問題3:UIの各種値の表示
速度や高度を表示するラベルはいいのですが、スコア計算も少しおかしくて、ここも人力で修正しました。
■ 人間が行った修正ポイント
ChatGPTがベースを作ってくれたのは助かりましたが、最終的には以下のような調整が必要でした。
着陸速度判定の修正(クラッシュ判定を厳密に)
UI要素の微調整、スコアのロジック修正
宇宙船の画像の位置合わせ
着陸判定時にメッセージとスコアを表示し、さらにスペースキーで再開できるように追加でコード生成して変更
■ 結果として得られたこと
ChatGPTは「骨組み」を作るには非常に便利です。ただし、ゲームのような繊細な動作やフィードバックが必要なアプリでは、やはり人間によるチューニングが不可欠だと感じました。
特にWPFのようなXAMLとの連携が必要なプロジェクトでは、XAMLの箇所がうまく生成されないことも多く、手作業が増えました。
■ まとめ
「ChatGPTにゲームを作らせる」ことはできても、「そのまま完成させる」のはまだ難しいというのが正直な感想です。
それでも、ベースとなるコードが短時間で得られるという点では、非常に強力な開発補助ツールであることは間違いありません。これからも、試行錯誤しながら上手に付き合っていきたいところです。
■ ダウンロード
ゲームは以下のリンクから無料でダウンロードできます。
→ Vector / 宇宙船着陸ゲーム(仮) 来週リリース予定です。
コメント
コメントを投稿