🎮

Amazon Q CLIを使ってゲームを作ってみた

に公開

この記事は

Amazon Q CLIを使ってゲームを作成した際の記録です。

開発の経緯

Amazon Q CLIでゲームを作ってTシャツをゲットする、というイベントがあったので、こちらにチャレンジしてみました。

https://community.aws/content/2xIoduO0xhkhUApQpVUIqBFGmAc/build-games-with-amazon-q-cli-and-score-a-t-shirt

迷路(2D)

まず最初に習作として、 20 x 20 のサイズの迷路を作成しました。mazeというフォルダを作ってそこでAmazon Q CLIを実行すると、それだけで「迷路を作る」ということを理解していました。

こちらからの指示としては「20 x 20 のサイズの迷路を作って」とだけ伝えましたが、終わったらAmazon Q CLIが自発的に「迷路の生成アルゴリズムを深さ優先探索で実装し、ちゃんとゴールにたどり着けるようにしますか?」というような提案をしてきました。これは結構凄いですね。

実際のコードはこちらです。

https://github.com/kenichiro-kimura/amazonq-games/blob/main/maze/maze_game.py

できあがったゲームの画面はこんな感じです。

2D迷路

簡素なデザインですが、十分遊べるようになってます。

迷路(3D)

次に、この迷路を3Dにしてみました。私の大好きなWizardryのような感じにしたかったので、「Wizardryのような画面で」と指示しました。

できあがったゲームの画面はこんな感じです。

3D迷路(1)

・・・これは酷い(笑)
返答を見ると「往年の名作ゲーム」といった感じのことを言っているので、どうやらWizardryの事は理解しているようですが、ちゃんと3Dの迷路に見えません。

そこで、あれこれと「斜めに線を引く」とか「1歩前まで見える」とか「壁の向こうは見えない」とか、実際のゲームの画面画像のURLを与えたりして、指示を繰り返しました。
その結果、以下のような画面にはなりました。

3D迷路(2)

だいぶマシになりましたが、まだとてもWizardryとは言えません。もうこれ以上はどう指示したら伝わるのか途方に暮れ、ギブアップしました。

実際のコードはこちらです。

https://github.com/kenichiro-kimura/amazonq-games/blob/main/maze/maze_game_3d.py

9マス鬼ごっこ

ギブアップしたところで終わるのは悔しいので、もう1つゲームを作成しました。題材は、小学生の娘が友達と遊んでいた「9マス鬼ごっこ」です。

娘が遊んでいるのを見て理解したルールは以下の通りです。

  • 3 x 3 のマス目に鬼と2人で入り、違うマスの上に立つ
  • かけ声とともに、鬼とプレイヤーは同時に近傍のマスにジャンプする
  • 同じマスに入ったら鬼の勝ち
  • プレイヤーはどれだけ捕まらずに逃げられるかを競う

早速ルールをそのまま伝えて作ってもらったのですが、初期バージョンだとほとんどのケースで永遠に鬼に捕まらなくなってしまいました。初期バージョンでは移動が上下左右だけで、かつ待ち伏せ(鬼がその場から動かない)ができないため、鬼とプレイヤーが隣のマスに位置してしまうと捕まらなくなってしまっていました。

そこで、斜め移動や待ち伏せを許可したのですが、今度は鬼が賢すぎてあっという間にゲームが終わってしまいました。なんというか、凄い(笑)

さらに指示を繰り返して難易度を調整してできあがったのがこちらです。

https://github.com/kenichiro-kimura/amazonq-games/blob/main/9-square-tag/nine_square_tag.py

実際のゲームの画面はこんな感じです。遊んでみると結構読み合いが面白いです。

9-square-tag

まとめ

いずれのゲーム(ならびにドキュメント)も、全てAmazon Q CLIへの指示だけで作成しましたが、これだけちゃんと動くものがあっという間に作れたのは驚きました。
途中経過も都度gitにコミットしてログを残すように指示を出したりすると良かったと後から気づきましたが、そこはまたゲーム以外の題材でチャレンジしたときにやってみたいと思います。

全てのソースコードとドキュメントはこちらに置いています。皆さんの参考になれば幸いです。

https://github.com/kenichiro-kimura/amazonq-games/

GitHubで編集を提案

Discussion