Amazon Q CLIで「クソゲー」は作れるのか？ 寒いユーモア満載のPongを作った話

# Amazon Q CLIで「クソゲー」は作れるのか？ 寒いユーモア満載のPongを作った話

:::note info
**キャンペーン期間について**
Amazon Q CLI でゲームを作ろう Tシャツキャンペーンは2025年6月20日までです。
:::

[Amazon公式ブログ](https://aws.amazon.com/jp/blogs/news/build-games-with-amazon-q-cli-and-score-a-t-shirt/)で紹介されているキャンペーンに参加して、「生成AIはクソゲーを作れるのか？」という実験的な観点から制作したゲーム「Beat Monday!」の仕様と制作過程をまとめました。

※本記事はAmazon Q CLIが仕様書をまとめ、自分で執筆、校正をClaude4で行っています。
※ソースコードは公開する予定はありません。操作方法等はAmazon Q CLIがどのようなキーレイアウトにしたかなど雰囲気を楽しんでいただけると幸いです。

## 「Beat Monday!」とは？

「Beat Monday!」は、憂鬱な月曜日（プレイヤー）が進化する日曜日（AI）に**必ず負ける**Pongライクゲームです。

### コンセプトの背景
- **実験テーマ**: 「生成AIで意図的にクソゲーは作れるのか？」
- **プレイヤー**: 月曜日（憂鬱で絶望的な存在）
- **AI**: 日曜日（進化し続ける安らぎの象徴）
- **狙い**: プレイヤーにあえてストレスを与える「寒いユーモア」として設計

一般的なゲームとは真逆のアプローチで、プレイヤーが勝つ喜びではなく**理不尽に負ける不快感**を提供します。最終的に「日曜日は2日あったんだ！」という**絶妙にポエムな寒い**救済メッセージで締めくくります。

## ゲーム全体の流れ

### 画面遷移
1. **タイトル画面**: アルゴリズム対CNN+DQNの学習状況を可視化
2. **警告画面**: ゲームがシャレであることを事前警告
3. **ゲームプレイ**: 3つのフェーズで段階的に絶望へ導く
4. **終了画面**: 「日曜日は2日あったんだ！」の救済メッセージ

## フェーズ制システム

### フェーズ1：希望の時間（0-1分）
**「まだ勝てる」と思わせる段階**
- 通常のPongゲームとして動作
- AIは70%の確率でランダム行動（わざと下手に見せる）
- 通常の移動速度
- プレイヤーが点を取れる可能性を残す

### フェーズ2：不穏の始まり（1-2分）
**「なんか変だな？」と感じさせる段階**
- **入力遅延の発生**: プレイヤーの操作が徐々に重くなる
- **「Monday」文字の崩れ**: パドルのテキストが歪み始める
- AIのランダム行動が30%に減少（本気度が上がる）
- 移動速度向上とプレイヤーを狙った精密な返球

### フェーズ3：完全なる絶望（2-5分）
**「もう無理だ...」と諦めさせる段階**
- **物理法則無視**: AIが画面端でテレポート
- **画面の歪み効果**: 視界自体が歪む
- **完全な「絶望AI」**: ランダム行動0%、完璧な予測能力
- **ボール軌跡エフェクト**: 幻惑的な視覚効果
- **得点妨害**: プレイヤーの得点を70%の確率で阻止

## 視覚的演出システム

### 段階的な視覚変化
- **パドル変形**: フェーズ進行で「Monday」パドルが崩壊
- **テキスト歪み**: フェーズ2から文字が不安定化
- **ボール軌跡**: フェーズ3で残像エフェクト追加
- **画面歪み**: 全体的な画面の歪曲
- **ビネット効果**: 画面端の暗転で圧迫感を演出
- **画面振動**: AIヒット時の衝撃エフェクト

## AI実装の技術的詳細

### 段階的なAI進化
```
フェーズ1: ランダム70% + 追跡30%（初心者レベル）
フェーズ2: ランダム30% + 追跡70%（中級者レベル）
フェーズ3: ランダム0% + 完全予測（理不尽レベル）
```

### フェーズ3の「絶望AI」仕様
- ボールの到達位置を完璧に予測
- 必要に応じて物理法則を無視してテレポート
- プレイヤーがいない場所を狙った戦略的返球
- プレイヤーの得点チャンスを70%の確率で妨害

## 「負けました」ボタンシステム

### 表示条件（フェーズ3限定）
- 3連続失点した場合
- フェーズ3開始から60秒経過した場合

### 救済メッセージ
ボタンを押すと「**日曜日は2日あったんだ！**」という**絶妙にポエムで寒い**救済メッセージが表示され、プレイヤーに「え、それで終わり？」という微妙な気持ちを提供します。

## 操作方法

### 基本操作
- **上下キー**: パドル移動
- **エンターキー**: 画面遷移
- **ESC**: ゲーム終了

### 開発・デバッグ用
- **スペース**: AI学習の一時停止/再開
- **1-5キー**: 学習速度調整（1倍速～32倍速）
- **0キー**: 描画のオン/オフ切り替え（学習高速化用）

## 技術スタック

### 動作環境
- Python 3.6以上
- Pygame（ゲーム描画）
- NumPy（数値計算）
- TensorFlow（CNN+DQN実装）
- WSL（Windows Subsystem for Linux）

### 技術的特徴
- **フェーズ制ゲームプレイ**: 時間軸での難易度制御
- **リアルタイム強化学習**: CNN+DQNによるAI学習の可視化
- **日本語フォント対応**: 自動検出とダウンロード機能
- **視覚効果システム**: フェーズに応じた段階的演出

## 実行画面

<iframe width="560" height="315" src="https://www.youtube.com/embed/HmDKf-pFKSw?si=rcmqxPjKQ2WtnQKK" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## Amazon Q CLIでの制作体験

### 良かった点
- **Pongの基本実装**: 1回のプロンプトで基本的なゲームが完成
- **AI実装の容易さ**: CNN+DQNをTensorFlowで自然に実装
- **プロンプトエンジニアリング**: 複雑な仕様も段階的に追加可能

### 苦労した点
- **強化学習の調整**: CNN+DQNの学習効率調整に2日を要した
- **学習品質の制御**: ゲーム開始時点での適切な強さの調整が困難
- **微細な動作**: 1ドット単位の細かい動きは学習できたが、バランス調整が難しい

### 技術的な感想
Amazon Q CLIの能力により、プロンプトだけでCNNやDQNといった高度な機械学習アルゴリズムをTensorFlowで実装できる時代になりました。ゲーム開発のハードルが大幅に下がり、アイデア重視の制作が可能になったと感じています。

## まとめ

「Beat Monday!」は「生成AIでクソゲーは作れるのか？」という実験的な問いに対する一つの回答となりました。結果として、Amazon Q CLIは見事に理不尽で寒いユーモア満載のクソゲーを生成してくれました。

### クソゲー要素の達成度
- 理不尽な難易度調整
- プレイヤーを不快にする演出
- 寒いポエム的メッセージ
- 「なんだこれ？」感のある独特な世界観

### 技術的な発見
Amazon Q CLIの強力さを実感できる一方で、「意図的にクソゲーを作る」という逆説的なアプローチでも、技術的には高度な実装（CNN+DQN）が可能だと確認できました。プロンプトしだいで良いものも悪いもの作れるのが生成AIの本質なのかもしれません。

機械学習要素を含む場合は、調整に時間がかかることをお忘れなく！