ビッグウェーブに乗ってAmazon Q CLIでゲームを作りました。

本記事は「Amazon Q CLI でゲームを作ろう Tシャツキャンペーン」に向けて執筆した記事です。

皆様こんにちは。好きなゲームは「ELDEN RING」、褪せ人のMasedatiです。

今回は、Amazon Q というビッグウェーブと先駆者様に乗っかってAmazon Q CLIを使ったキャンペーンに参加してみました。
↓先駆者様の記事はこちら

環境

  • macOS Sequoia version 15.4.1
  • Amazon Q CLI version 1.12.0
  • claude-4-sonnet

環境準備のプロセスは上記先行記事に含まれているため、本ブログでは割愛します。

ゲーム作成の流れ

プロンプト

私はランダム要素があるゲームが大好きです。そこでブラウザで遊べる、ランダム生成のダンジョン攻略ゲームを作成することにしました。
プレイヤーや敵、アイテムは絵文字で表現したいと思います。

ランダムダンジョン生成機能を持つ本格的な2Dアクションゲームを作成してください
##  実装する主要機能

### 動作環境
ブラウザ

### ゲーム難易度
激むず

###  ランダムダンジョン生成
– 毎回異なるレイアウトの部屋と廊下と落とし穴や隠し部屋
• 複数の部屋を廊下で接続する自動生成アルゴリズム
• 出口の自動配置
• 低確率で落とし穴や隠し部屋を生成
• 落とし穴に落ちたら1レベルダウンしてその場で復活

###  敵キャラクター
– 敵キャラクターは絵文字で表現してください。
• 🐀 ネズミ(初心者向け)
• 🕷️ クモ(素早い)
• 👹 ゴブリン(バランス型)
• 🐺 オオカミ(強力)
• 👻 ゆうれい(魔法攻撃のみ有効)
• 🐉 ドラゴン(ボス級)

### NPCキャラクター
🛒ショップ⇒アイテムを買うことができる。

### 🎒 豊富なアイテムシステム
– 💊 体力ポーション⇒HP回復アイテム
• 🔮 マナポーション⇒MP回復アイテム
• 💰 金貨⇒ショップでアイテムを購入するために必要
• ⚔️ 武器(攻撃力アップ)
• 🛡️ 防具(防御力アップ)
• 💎 貴重な宝石⇒ショップで売ることで金貨に交換することが可能
• 📜 ⇒使用すると魔法を覚えることができる。魔法はランダム。

### 🎯 ゲームメカニクス
– レベルアップシステム: 経験値でステータス成長
• 戦闘システム: リアルタイム戦闘
• 魔法システム: 範囲攻撃魔法
• AI敵: プレイヤーを追跡する敵AI
• インベントリ管理: 32スロットのアイテム管理

## 🕹️ 操作方法
キーボード:
• WASD/矢印キー: 移動
• スペース: 物理攻撃

エンター:魔法攻撃
• H: 体力ポーション使用
• M: マナポーション仕様

マウス/タッチ:
• 画面のボタンで全操作可能

## 🏆 ゲームの特徴
1. 完全ランダム生成: 毎回新しいダンジョンレイアウト
2. 成長システム: レベルアップでキャラクター強化
3. 戦略性: アイテム管理と戦闘タイミングが重要
4. 視覚的: 絵文字による分かりやすい表現
5. 無限プレイ: 階層を進むほど難易度大幅アップ

Amazon Q CLIによる作成の様子

プロンプトを投げてからものの数分で、約2000行のプログラムが完成しました。
改めてみると生成AIの進化はすごいですね…

作成されたプログラムファイルは以下です。

  • dungeon_game.html
  • game.js
  • player.js
  • enemy.js
  • dungeon.js
  • items.js

完成したゲーム(β版)がこちら

左下の🧙がプレイヤーです。絵文字の指示は出していませんでしたが、近くにある🚪が次の階に降りる出口のようです。
プロンプトで指示した通り、取ったアイテムはスロットに保管され、体力ポーションやマナポーションは「操作」に記載のボタンをクリックするか該当のキーを入力することでアイテム消費されます。
ある程度細かい指示をしたものの、指示していない画面デザイン含めて、全体的にいい感じのゲームを作成してくれました。

バグ

諸々ありましたが、一部抜粋してお伝えします。

①プレイヤーや敵が壁を貫通する

各キャラクターの判定が左上にあるため、右と下の壁を貫通します。

②ショップが正常に機能しない

  • 🛒にふれるとショップに入ることができますが、「閉じる」ボタンが機能しないため永久にショップに閉じ込められます。
  • プロンプトでは「💎 はショップで売ることで金貨に交換することが可能」と指示していますが、売る機能がなく宝の持ち腐れになっています。

③攻撃ができない

攻撃ができません。画面上の「攻撃」「魔法」ボタン及びキーボード入力が機能していません。

修正依頼と追加要望

以下のプロンプトで修正依頼と追加要望を出してみました。

あなたが作成したゲームの修正点や追加要望は以下です。
# 修正点
* プレイヤーや敵が壁を貫通しています。各キャラクターの当たり判定を左上のみから1マスに変更してください。なお、プレイヤーと敵同士にも当たり判定をつけてください。
* ショップの「閉じる」ボタンが機能していません。「閉じる」ボタンを押したら下の画面に戻るようにしてください。
* ショップで💎を売ることができません。売ると金貨に交換できるようにしてください。なお、💎の価値はランダムにしてください。
※ 攻撃や魔法ボタンやキー入力が機能していません。修正してください。
※ ⚔️を取得した際は攻撃力アップ、🛡️を取得した際は防御力アップしてください。なお、⚔️と🛡️はスロットに保管しないでください。
# 追加要望
* 現在階層の全体が見えてしまっています。この仕様だと各アイテム・出口がどこにあるかわかってしまうので、現在プレイヤーが存在する部屋のみを表示してください。
修正点と追加要望に基づいて、プログラムを修正してください。
数分で対応してくれました。シゴデキです。
とは言っても、この一回の修正では改善されるわけもなく引き続き攻撃の機能が無効化されていました。
そこで、デバックログを表示するように命令し、ログに含まれるエラー文を含めて修正依頼を行いました。
修正が完了し、「攻撃」ボタンが正常に動作することを確認できました!

学び

Amazon Q CLIのプロンプトに大まかなゲーム仕様を書けば、すぐに仕様通りのゲームを作る&遊ぶことができました。

ただし、ある程度の壁打ちは必要で、修正依頼にはエラー文を含めるとより正確にバグを直すことができます。なお、1つのバグを直すことでデグレが発生する場合がありました。バージョン管理しつつ根気よく壁打ちすることが大切です。

Appendix(随時更新予定)

ソースコード

既知の問題

  • ショップから退店時、一定時間もしくは永続的に移動キーが機能しない。
  • 通路が生成されず、部屋から出られなくなる可能性がある。
著者について
Shu Maseda

3年目の幼魚です。
◇所属:クラウドサービス第二部
◇業務:
・AWS上の運用マネージドサービス:S-Cred+
・AWS内製化支援サービス:テクニカルエスコート

Shu Masedaをフォローする

クラウドに強いによるエンジニアブログです。

SCSKクラウドサービス(AWS)は、企業価値の向上につながるAWS 導入を全面支援するオールインワンサービスです。AWS最上位パートナーとして、多種多様な業界のシステム構築実績を持つSCSKが、お客様のDX推進を強力にサポートします。

AI・MLAWSクラウドソリューション
シェアする
タイトルとURLをコピーしました