Tシャツが欲しく、Amazon Q CLI でゲームを作成した。
Table of contents
Open Table of contents
はじめに
Amazon Q CLI という CLI ベースの AI エージェントが使って、pygame のゲームを作成した。ちなみに、まったくゲーム作成の経験はない。
Amazon Q CLI とは
CLI 上から自然言語で ChatGPT のように AI エージェントに指示を出して、実装を行うツールである。 ファイル読み書きは Amazon Q CLI が行うため、ユーザーは自然言語で指示を出すだけでよい。
使い方
今回は、Windows11 (WSL) 上で Amazon Q CLI を使った。以下の手順は WSL 上でのコマンド実行手順である。
-
https://community.aws/ へアクセスし、アカウントを作成する
-
unzip をインストールする。
sudo apt install unzip
- Amazon Q CLI をダウンロードする。
curl --proto '=https' --tlsv1.2 -sSf https://desktop-release.codewhisperer.us-east-1.amazonaws.com/latest/q-x86_64-linux-musl.zip -o q.zip
- ダウンロードしたファイルを解凍する。
unzip q.zip
- 解凍したディレクトリに移動し、インストールスクリプトを実行する
cd q
chmod u+x install.sh
./install.sh
以下の質問が表示されるので、config を自動で変更する場合は yes
を選択する。
? Do you want q to modify your shell config (you will have to manually do this otherwise)? ›
❯ Yes
No
ログインが求められるので、ブラウザからログインする。
✔ Select login method · Use for Free with Builder ID
Confirm the following code in the browser
Code: hoge-fuga
Open this URL: https://view.awsapps.com/start/#/device?user_code=hoge-fuga
- bashを再起動し、
q
コマンドが使えることを確認する。
bash
q --version
バージョンが表示されれば、インストールは成功である。
取り敢えず作成してみる
手始めに某落ちものゲームを作成してみる。
- uvを使用してプロジェクトディレクトリを作成する。
mkdir tetris
cd tetris
uv init .
uv add pygame
uv sync
q
コマンドを使って、ゲームの実装を指示する。
> q
⢠⣶⣶⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣶⣦⡀⠀
⠀⠀⠀⣾⡿⢻⣿⡆⠀⠀⠀⢀⣄⡄⢀⣠⣤⣤⡀⢀⣠⣤⣤⡀⠀⠀⢀⣠⣤⣤⣤⣄⠀⠀⢀⣤⣤⣤⣤⣤⣤⡀⠀⠀⣀⣤⣤⣤⣀⠀⠀⠀⢠⣤⡀⣀⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⢠⣿⣿⠋⠀⠀⠀⠙⣿⣿⡆
⠀⠀⣼⣿⠇⠀⣿⣿⡄⠀⠀⢸⣿⣿⠛⠉⠻⣿⣿⠛⠉⠛⣿⣿⠀⠀⠘⠛⠉⠉⠻⣿⣧⠀⠈⠛⠛⠛⣻⣿⡿⠀⢀⣾⣿⠛⠉⠻⣿⣷⡀⠀⢸⣿⡟⠛⠉⢻⣿⣷⠀⠀⠀⠀⠀⠀⣼⣿⡏⠀⠀⠀⠀⠀⢸⣿⣿
⠀⢰⣿⣿⣤⣤⣼⣿⣷⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⢀⣴⣶⣶⣶⣿⣿⠀⠀⠀⣠⣾⡿⠋⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⡇⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⢹⣿⣇⠀⠀⠀⠀⠀⢸⣿⡿
⢀⣿⣿⠋⠉⠉⠉⢻⣿⣇⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⣿⣿⡀⠀⣠⣿⣿⠀⢀⣴⣿⣋⣀⣀⣀⡀⠘⣿⣿⣄⣀⣠⣿⣿⠃⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⠈⢿⣿⣦⣀⣀⣀⣴⣿⡿⠃
⠚⠛⠋⠀⠀⠀⠀⠘⠛⠛⠀⠘⠛⠛⠀⠀⠀⠛⠛⠀⠀⠀⠛⠛⠀⠀⠙⠻⠿⠟⠋⠛⠛⠀⠘⠛⠛⠛⠛⠛⠛⠃⠀⠈⠛⠿⠿⠿⠛⠁⠀⠀⠘⠛⠃⠀⠀⠘⠛⠛⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠿⢿⣿⣿⣋⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⢿⡧
╭─────────────────────────────── Did you know? ────────────────────────────────╮
│ │
│ If you want to file an issue to the Q CLI team, just tell me, or run q │
│ issue │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
/help all commands • ctrl + j new lines • ctrl + s fuzzy search
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🤖 You are chatting with claude-4-sonnet
> テトリス風のゲームを作成してくれ
テトリス風のゲームを作成しますね。まず、現在のディレクトリの内容を確認してから、Pygameを使ったテトリスゲームを作成します。
🛠️ Using tool: fs_read (trusted)
⋮
● Reading directory: /mnt/c/Users/***/work/pygames/tetris with maximum depth of 0
⋮
● Completed in 0.23s
既存のプロジェクト構造があるようですね。現在のmain.pyの内容を確認してから、完全なテトリスゲームを作成します。
(略)
既存プロジェクトがある場合、ファイルの読み書きを許可することでエージェントが自動的にファイルを編集してくれる。ゲームの実装を未経験なので、内容はさっぱりだが一通り実装してくれた。
実際にプレイしてみたところ、普通に遊べるゲームができた。
パズルゲームを作成してみる
ABI-DOS のような電子回路を組み立てる体験ができるゲームを作成してみる。icfpc2024 で出題された 3dという問題 があり、これをゲームの題材とする。
3dの概要ついては以下の通りである。(by ChatGPT)
ICFP 2024「3D言語」要約 🧠
目的:プログラムの**時空間ボリューム(幅×高さ×時間)**を最小化する。
形式:テキストで記述された2Dグリッド+時間軸。
動作:各セルが1tickごとにローカルに演算・データ移動。
特徴:
@で過去に書き戻すタイムワープ。
Sで最終出力を提出。
評価:空間×時間の総体積がスコア。小さいほど高評価。
以下の手順でプロンプトに指示を行った。
- 前述のリンク先のマークダウンファイルを読み込ませる。
- 基本設計を行う。
- 最小限の機能設計を行う。
- 実装を行う。
- 実装を確認する。
一見普通の開発プロセスであるが、結果は期待通りのゲームはできなかった。
エージェントに修正を指示してそれらしい形になったが、このゲームの肝であるタイムワープ機能が実装されていなかった。(エージェントにタイムワープを理解していないように見えた。)
こちらのリポジトリに実装したコードを置いておく。
感想
Goodな点
- 不具合が起きても、エージェントにデバッグ用のログを実装させることで、エージェントに問題を特定させることが容易だった。
- エージェントがファイルの読み書きをしてくれる。コマンドの実行やってくれるようだが、今回は使わなかった。
Badな点
- 今回は参考にしたゲームルールが複雑だったためか、エージェントが意図を理解してくれなかった。
- 割とデグレが起きる
まとめ
Amazon Q CLI を使ってゲームを作成してみた。テトリスライクなメジャーなゲームは作成できたが、3dのような複雑なゲームはエージェントが意図を理解してくれなかった。ただ、エージェントと粘り強くやり取りをすることで、ある程度のゲームは作成できることがわかった。