はじめに
はじめまして、KokonoHako(仮)です。
先日、初めてAmazon Qを使う機会がありました。
そこでAmazon Q CLIを使って簡単なゲーム制作をしたのですが、これがかなり面白いもので、簡単な指示でもAIがしっかりと過程を考えて実現してくれたのがとてもすごかったです。
これはもっと使いこなせるようにならなくてはと感じ、ちょうどAmazon Q CLIでゲームを作ろう キャンペーンが開催されていたので、これに合わせて試しにゲームを作ってみましたので、記事として紹介しようと思います。
制作したゲーム
今回、私はAmazon Q CLIを使って「弾幕シューティングゲーム」を作ってみました。
弾幕シューティングは、2D画面上で敵が大量に撃ってくる弾を避けつつ、自身も弾を撃って敵を倒してスコアを倒すゲームでです。
「東方Project」や「インベーダーゲーム」をイメージしてみるとわかりやすいと思います。
開発環境
今回開発に使った環境はこんな感じです。
- VS Code
- Ubuntu(WSL)
- Amazon Q CLIを使用するターミナルとして
- Amaazon Q CLI
これに加えて、ゲームを動かす言語としてPythonが使われています。
作成過程
ゲーム仕様の作成
まず初めにしたのが、大まかなゲーム仕様をAIに与えることです。
Amazon Q CLIでは/editor
を使うことで、viエディタを使った複数行のプロンプトを入力に使うことができます。
これを利用して、以下のようなゲーム仕様を入力して制作を進めてもらいました。
入力プロンプト
以下の指示にあるゲームを作成して
- ゲームの題材
- 弾幕シューティングゲーム
- 画面サイズ
- 1920x1080
- ゲーム仕様
- 自機仕様
- 自機のライフは3つ
- 被弾をするごとにライフが減る
- ライフが0になったらゲームオーバー
- 被弾すると中央真ん中の初期位置でリスポーン
- リスポーン後3秒ほどは無敵時間
- 無敵時間の際は自機が半透明に点滅する
- スコア仕様
- 敵を倒すとスコアが加算
- スコアは100単位で加算
- ゲームオーバー時にスコアがランキング圏内にはいると、スコアとニックネームが登録できる
- 敵仕様
- 敵の弾幕は放射状や円状などの幾何学模様を描く
- 自機の弾が当たると倒される
- 倒されると、爆発するようなエフェクトを出す
- 画面仕様
- 初期画面
- ゲーム開始
- 上位10位までのスコアランキング
- ゲーム画面仕様
- シューティングエリアは画面の左2/3のエリア
- 右1/3はスコアやライフなどの情報を表示するエリア
正直、これだけでもしっかり遊べるゲームになっており、思っていた以上に完成度が高くてビックリしました。
指示の表現が少し悪かったのか、画面表示や挙動に粗はあったものの、ほとんど私のイメージしていたとおりに作ってくれたと思います。
ゲームのブラッシュアップ
とはいえ、このままではまだ味気ないので、最初に作ってもらったゲームをベースに修正を加えてもらいます。
Amazon Qのすごいところは、現在の作業フォルダやこれまでの会話履歴から、連続した作業をちゃんと継続してくれることです。
なので、何をどうしてといった指示が多少アバウトでも、思ったよりも正しく認識してくれました。
修正指示の例
かなり細かく指示を出して修正をしてもらったので、全てのプロンプトを出すことは難しいですが、いくつかの修正指示を紹介しようと思います。
敵が倒されたら点数アイテムをドロップして
爆発して敵や弾を消すことができる必殺技を使えるようにして
背景などのグラフィックをSF風にして
修正指示→確認→また修正指示→・・・といったことを繰り返したことで出来上がったのが、この「スペースサバイバル」。
開発をしてみて驚いたこと
プログラムファイルの階層が意識されている
これ、実際に使ってみて本当に驚いたことなんですが、
Amazon Qが作ったゲームプログラムは、main.pyやplayer.pyなど、モジュールごとにちゃんと分けられて作られていました。
それぞれ名前もしっかりと付けられていたので、最初の仕様書に書かれていたことでも、Amazon Qが必要な要素を考えてそれぞれ挙動を作っているんだなぁとびっくりしました。
階層イメージ
GameProject/
├─── src/
│ ├── __init__.py
│ ├── bullet.py
│ ├── effects.py
│ ├── enemy.py
│ ├── game.py
│ ├── player.py
│ ├── ranking.py
│ └── ui.py
├── ranking.json
└── main.py
グラフィックイメージの再現がすごい
ゲーム画像を見てもらうと分かる通り、このゲームは宇宙を舞台にしているため、自機やエネミーは戦闘機、背景に無数の天体が表示されています。
ただこれ、実は例でも上げた背景などのグラフィックをSF風にして
というたった一度だけのグラフィックの指示だけでここまで作り込んでくれたんです。
ちゃんとSFのイメージを理解して、それに合わせたグラフィックを作りあげるなんて、流石すぎます。
おわりに
今回は、Amazon Q CLIを使ってゲーム制作に挑戦してみました。
最近のAI技術は進歩が目まぐるしく、ちょっと前まで難しいと思われていたことをいとも簡単にできるようになっていたりするので、驚いてばかり。
こういった機会に最新のAIを色々と触ることができるのは、とてもありがたいことなんじゃないかなと思います。
今回使ってみたAmazon Qは、AWS BuildersIDがあれば誰でも簡単に触ることができるので、ぜひ遊んでみてください。