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 / 宇宙船着陸ゲーム(仮) 来週リリース予定です。


コメント

このブログの人気の投稿

洋上風力発電の今:三菱商事のゼロベース見直しが示す未来

親のJAFをWebから退会してみた話【手続きは簡単でした】

親に運転免許を返納させて、タクシー券で病院に行く方がいいだろうか?