はじめに
Generative AI / ChatGPT の可能性を確かめるべく、思いつきのまま専門知識等の準備をせず、AIにゲームのコードを書いてもらうテストをしながら、そのゲームの品質を高めていく試みをしてみたメモです。
実行環境
- Mac Book Pro 2021 Apple M1 Pro Ventura 13.3.1
- Python 3.11.3
- pygame
Python3および、ビデオゲーム向け python モジュールである、pygame の事前インストールが必要です。
コード作成開始 #1
ChatGPTに最低限の言葉でゲームコードの作成をしてみます。
https://chat.openai.com/
「python3 と pygame を利用した、縦スクロールシューティングゲームを作って」
生成されたコードをコピーし、テキストにペーストし、python スクリプトとして、保存します。ここでは「1.py」として保存し、Macの標準の「ターミナル」アプリから、実行してみます。
python ./1.py
背景が黒色の、別 Windowが現れ、下のほうに、白い四角が表示されました。キーボードの「←」「→」キーによって、白い箱を左右に動かすことができました。
下の白い四角形が左右に動くだけで、とてもシューティングゲーム的な要素を体験できません。
コード修正 #2
敵機の上方と、自機の一画面以内の弾の数、敵機を撃ち落とす条件、スコアの加算、表示、等の情報を指示してみます。
「このスクリプトに敵を追加してください、弾丸は自機から一画面で3発撃てるようにしてください、自機の残数は3機です、敵を撃ち落とした場合10点が入ります、スコアを画面の中央最上部に表示してください、スコアは撃ち落とした敵の数の合算とします」
生成されたコードをコピーし、テキストにペーストし、python スクリプトとして、保存します。ここでは「2.py」として保存し、Macの標準の「ターミナル」アプリから、実行してみます。
矢印キーで左右に動かせる下方の白い箱の他に、画面の上から無数の赤い四角形が下に落ちてきました。スペースキーを押すと、自機の白い箱から弾丸が放出され、敵機の赤い箱に当たると消滅し、スコアが10点づつ加算されます。これはシューティングゲームの基礎にかなり近い!
Tips #3
ChatGPTへコード作成をリクエストした結果、作成したコードのまとめまでされず、途中でタイムアウトしてしまう場合があります。この場合は以下のような指示を出すことによって、途中からのスクリプト情報を得ることができます。
「作成したこのスクリプトの「enemy = Enemy(random.randint(0, WIDTH - 40)」文以降のスクリプトを再表示してください」
コード修正 #4
この後は、このゲームスクリプトの品質を向上させていく例です。
-
自機、敵機の表示を変更する
「このスクリプトの自機のイメージを "/Users/user1/ChatGPT/game/me.jpg" の静止画像に変更してください。」 -
パワーアップアイテムを追加する
「ゲーム開始から10秒ごとにパワーアップアイテムが上方から下方に出現し、それを自機が取得するたびに画面で利用できる弾丸数が1発づつ増えるように変更してください。またパワーアップアイテムを取得した場合、弾丸の画像が大きくなるように変更してください。」 -
垂直に迫る敵機をランダムに動かす
「敵機をランダムで左右に動かすようにしてください」 -
ボーナスUFOを出現させる
「15秒に一回、画面左端から右端に大きめの敵機が自機に迫らず画面上方で水平方向移動します。この敵機を撃ち落とした場合、100点が加算されます。"Destroyed : Score + 100" の文字列をこの敵機が撃ち落とされた場所でしばらく表示させるように変更してください」
上記を含む最終的なアップデートにより、敵機は左右に移動しながら自機に迫る、ボーナスUFOは出現し、破壊の際には、スコア表示が出る等、このように品質を高めることができました。
参考
[1] https://sakura.ohhappy.jp/sakura/1687
[2] https://zenn.dev/karaage0703/articles/5e77eb77571727