こんにちは、しろみです!
今回 Amazon Q Developer CLIを使用して2Dゲームを作成した内容を記事にしようと思います。
作成したゲームについて
下記の2Dゲームを作成しました。
- 主人公の猫が障害物を避けながら、飼い主の待つ家まで進む
- 飼い主の待つ家に着いたらゴール、障害物に触れてしまうとゲームオーバー
プレイの様子については、X上に動画をアップロードしております
ソースコードやゲームの説明書については、下記のリポジトリに保存しております。
作成したキッカケ
AWSから、下記のキャンペーンを実施しているとアナウンスがありました。
内容をみて面白そうだと感じ、申しこむために今回チャレンジしました。
※日本語版の記事もあります。
- AWSの日本支社の方が作成したアナウンス記事
- クラスメソッドの方のブログ記事
参加するにあたって必要なこと
下記を実施する必要があります。
-
AWS Builer IDの作成
こちらのキャンペーンに参加する、AWS Q Developer CLIを使用する際にBuilder IDが必要となります。そのため、作成されていない方はこちらのIDの作成が必要となります。 -
Amazon Q Developerのインストール
こちらのキャンペーンですが、Amazon Q Developer CLIとのチャットのみでゲームを作成する必要があります。そのため、インストールしていない場合はインストールを実施する必要があります。
Amazon Q Developer CLIのインストール
OSによってインストールする手順が異なるため、自身が使用しているOSに応じて実施する手順を偏光する必要があります。
- Linux版のインストール手順
- Windows版のインストール手順
※WindowsOSの場合、WSLの導入が必要となります。
WSLの導入手順については、Amazon Q Developer CLI導入手順内に手順のリンクがあります。
ゲーム作成について
今回はpygameというpythonで動作するゲーム開発用のライブラリを使用し、ゲームを開発しました。
- pygameについてのwiki
python3 -m pip install -U pygame --user
導入できているかの確認については、下記のコマンドにて確認が出来ます。
python3 -m pygame.examples.aliens
このコマンドを実行すると、下記のシューティングゲームが表示されます。無事にpygameが導入できています。
ゲーム作成の仕方について
ゲーム作成については、下記のようにAmazon Q Developer CLIとのチャットのみで作成しました。
ゲームを一から作成するときの要件は、文章が長くなるため
下記の流れでAmazon Q Developer CLIにお願いをしました。
- テキストファイル(今回はgame_requirements.txtというファイル名で作成)にゲームの要件等を記載
- fs_readツールでテキストファイルの中身を読み取ってもらう
> fs_read path="game_requirements.txt" mode="Line"
I'll help you read the game requirements file. Let me check if that file exists in your current directory.
🛠️ Using tool: fs_read (trusted)
⋮
● Reading file: game_requirements.txt, all lines
⋮
● Completed in 0.0s
要件を確認しました。以下のような横スクロールゲームを作成できます:
1. 主人公:猫
2. 操作方法:
• 右矢印キー:右に移動
• 上矢印キー:ジャンプ
3. 背景:住宅地
このゲームを Python の Pygame ライブラリを使って作成することをお勧めします。コードを作成しましょうか?
また、以下の詳細についても確認させてください:
• ゲームオーバーの条件は必要ですか?
• 得点システムは必要ですか?
• 障害物や敵は必要ですか?
• 音効果は必要ですか?
これらの要素を追加することで、よりゲーム性の高いものを作ることができます。
> ありがとうございます。要素の追加は後で指示します
承知しました。では、まずは基本的な機能(猫のキャラクター、右移動、ジャンプ、住宅地の背景)を実装したシンプルな横スクロールゲー
ムを作成しましょう。
Pygameを使用したベースとなるコードを作成します:
この時に、Amazon Q Developer CLIに渡したテキストファイルの中身は下記となっております。
ゲームの要件
横スクロールのゲームに変更をお願いします
操作方法
右矢印キーを押すと猫が右に進む
上矢印キーを押すとジャンプ
ゲームの背景
猫が進む画面の背景は住宅地でお願いします。
ゲームに関しての細かい修正についても、Amazon Q Developer CLIへお願いをしながら修正をしていただきました。
また、GithubへのプッシュもAmazon Q Developer で実施しようと思ったため実施しました。
> この変更をGithubに反映してほしいです
I'll help you reflect these changes to GitHub. Let me commit and push the updated code with the walking can animation
feature.
🛠️ Using tool: execute_bash
⋮
● I will run the following shell command: git add cat_game.py
⋮
↳ Purpose: Adding the modified file to git staging area
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
> y
⋮
● Completed in 0.22s
🛠️ Using tool: execute_bash
⋮
● I will run the following shell command:
git commit -m "突進型の空き缶に2本足を追加し、走るアニメーションを実装"
⋮
↳ Purpose: Committing the changes with a descriptive message
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
> y
[main 8ccf366] 突進型の空き缶に2本足を追加し、走るアニメーションを実装
1 file changed, 47 insertions(+)
⋮
● Completed in 0.17s
🛠️ Using tool: execute_bash
⋮
● I will run the following shell command: git push origin main
⋮
↳ Purpose: Pushing the changes to GitHub
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
> y
To https://github.com/siromi08/cat_game.git
c02a1ef..8ccf366 main -> main
⋮
● Completed in 1.259s
突進型の空き缶に2本足を追加する変更をGitHubに正常に反映させました!
以下が実行したコマンドとその結果です:
1. git add cat_game.py - 変更したファイルをステージングエリアに追加しました。
2. git commit -m "突進型の空き缶に2本足を追加し、走るアニメーションを実装" - 変更内容を説明するコミットメッセージでコミットを
作成しました。
• 1ファイルが変更され、47行が追加されました。
3. git push origin main - 変更をGitHubのリモートリポジトリにプッシュしました。
• 変更が c02a1ef から 8ccf366 に更新されました。
これで、突進型の空き缶に2本足を追加して走るアニメーションを実装した最新のゲームコードがGitHubリポジトリ(https://github.com/
siromi08/cat_game)に反映されました。
主な追加機能:
• 突進モード時に空き缶から2本の茶色い足が生える
• 足が交互に動いて走っているように見えるアニメーション
• 足の先に黒い靴のような形状を追加
• 時間ベースのアニメーションで自然な動きを表現
この変更により、ゲームにユーモアと個性が加わり、視覚的な面白さが向上しました。突進型の空き缶がより生き生きとしたキャラクター
のように見え、プレイヤーに楽しい驚きを提供します。
他に何かお手伝いできることはありますか?
コミットメッセージの内容も、変更内容を基にAmazon Q Developerが考えてくれて非常に便利でした!
今回のキャンペーンを取り組んでみて感じたこと
取り組んでいく中で下記の事を感じました。
- 開発からデバッグまで何でも実施してくれる
今回のキャンペーンの条件は、ゲームの作成はAmazon Q Developerとのチャットのみで行うことというものでした。
実際にコードを書かず、こういった機能を追加してほしいといったお願いをすることでコードを作成してくれるというのは触っていてとても便利だと感じました。
また、どのようなコンセプトにしたらいいか、この機能を修正したらいいか
判断に迷った際にいくつかの案を提案してくれた場面もあり、そういった提案に対して驚いた場面もありました。
ただ、触っていく中でそのコードの内容が正しいのかといった判断が使用者側にとって必要になってくるとも感じました。
- 指示の内容をどうするかを考える必要がある
Amazon Q Developer以外の生成AI(ChatGPTなど)に対してもいえる話ですが、何か支持を出すときに内容が整理されている、具体的に落とし込めている必要があると考えております。
そのため、生成AI全般を使用する際には支持の内容を細かい粒度で具体的にする必要があると改めて感じました。
最後に
今回初めてAmazon Q Developerを使用しましたが、細かいところまで気配りをしてくれて使用していてとても便利だと感じました。
また、ゲーム制作を初めて実施して「上矢印キーを押すとジャンプする」や「障害物を上下に一定間隔で上下に動かす」といった処理をどのようなソースコードで表現できるかといったコードの実装についてのいい勉強になったと感じました!
これからも手を動かしながら、学習することで理解を深めていきたいです!
ここまでご拝読をいただきありがとうございます。