皆様こんにちは。好きなゲームは「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(随時更新予定)
ソースコード
既知の問題
- ショップから退店時、一定時間もしくは永続的に移動キーが機能しない。
- 通路が生成されず、部屋から出られなくなる可能性がある。