Skip to content

Amazon Q CLI で3dパズル言語ゲームを作成してみた感想

Published:

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 上でのコマンド実行手順である。

  1. https://community.aws/ へアクセスし、アカウントを作成する

  2. unzip をインストールする。

sudo apt install unzip
  1. 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
  1. ダウンロードしたファイルを解凍する。
unzip q.zip
  1. 解凍したディレクトリに移動し、インストールスクリプトを実行する
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
  1. bashを再起動し、q コマンドが使えることを確認する。
bash
q --version

バージョンが表示されれば、インストールは成功である。

取り敢えず作成してみる

手始めに某落ちものゲームを作成してみる。

  1. uvを使用してプロジェクトディレクトリを作成する。
mkdir tetris
cd tetris
uv init .
uv add pygame
uv sync
  1. 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の内容を確認してから、完全なテトリスゲームを作成します。
()

既存プロジェクトがある場合、ファイルの読み書きを許可することでエージェントが自動的にファイルを編集してくれる。ゲームの実装を未経験なので、内容はさっぱりだが一通り実装してくれた。

実際にプレイしてみたところ、普通に遊べるゲームができた。

pygame tetris play image

パズルゲームを作成してみる

ABI-DOS のような電子回路を組み立てる体験ができるゲームを作成してみる。icfpc2024 で出題された 3dという問題 があり、これをゲームの題材とする。

3dの概要ついては以下の通りである。(by ChatGPT)

ICFP 2024「3D言語」要約 🧠
目的:プログラムの**時空間ボリューム(幅×高さ×時間)**を最小化する。
形式:テキストで記述された2Dグリッド+時間軸。
動作:各セルが1tickごとにローカルに演算・データ移動。

特徴:
@で過去に書き戻すタイムワープ。
Sで最終出力を提出。

評価:空間×時間の総体積がスコア。小さいほど高評価。

以下の手順でプロンプトに指示を行った。

  1. 前述のリンク先のマークダウンファイルを読み込ませる。
  2. 基本設計を行う。
  3. 最小限の機能設計を行う。
  4. 実装を行う。
  5. 実装を確認する。

一見普通の開発プロセスであるが、結果は期待通りのゲームはできなかった。

エージェントに修正を指示してそれらしい形になったが、このゲームの肝であるタイムワープ機能が実装されていなかった。(エージェントにタイムワープを理解していないように見えた。)

3d-sim.png

こちらのリポジトリに実装したコードを置いておく。

感想

Goodな点

Badな点

まとめ

Amazon Q CLI を使ってゲームを作成してみた。テトリスライクなメジャーなゲームは作成できたが、3dのような複雑なゲームはエージェントが意図を理解してくれなかった。ただ、エージェントと粘り強くやり取りをすることで、ある程度のゲームは作成できることがわかった。