Skip to content

Instantly share code, notes, and snippets.

@sho-saito
Created May 31, 2025 15:03
Show Gist options
  • Select an option

  • Save sho-saito/8ae26c1017eb70135268c083fb0b6d8c to your computer and use it in GitHub Desktop.

Select an option

Save sho-saito/8ae26c1017eb70135268c083fb0b6d8c to your computer and use it in GitHub Desktop.
初期の設計書

AWS アイコンライフゲーム設計書

1. ゲーム概要

1.1 ゲームタイトル

AWS Icon Life

1.2 ゲームコンセプト

AWSのアイコンたちが生命体のように画面上を動き回り、相互作用するシミュレーションゲーム。コンウェイのライフゲームにインスパイアされつつ、AWSサービスアイコンが独自の「生態系」を形成する。プレイヤーは環境に介入し、アイコン同士の相互作用を観察したり誘導したりできる。

1.3 ターゲットプラットフォーム

  • グラフィカルウィンドウを持つデスクトップアプリケーション

1.4 開発言語/フレームワーク

  • Vibe coding
  • Python
  • Pygame(グラフィカルインターフェース用)
  • AWS SDK for Python (Boto3)

2. ゲームプレイ

2.1 ゲームの目的

プレイヤーはAWSサービスアイコンの生態系を観察し、介入することで、興味深いパターンや相互作用を発見する。特定のサービスの組み合わせによる「相乗効果」を見つけ出すことが主な目的となる。

2.2 ゲームメカニクス

  • アイコンの動き: 各AWSサービスアイコンは独自の動きのパターンと特性を持つ
  • 相互作用: アイコン同士が接触すると、サービスの関連性に基づいた反応が発生
  • プレイヤー介入: マウスやキーボードを使って新しいアイコンを配置したり、環境パラメータを変更したりできる
  • 進化: 特定の条件下でアイコンが「進化」し、関連サービスに変化する可能性がある

2.3 ゲームフロー

  1. 初期状態では、基本的なAWSサービスアイコン(EC2、S3、Lambda等)が画面上に配置される
  2. アイコンは自律的に動き始め、相互作用を開始する
  3. プレイヤーは新しいアイコンを追加したり、環境パラメータを調整したりして介入できる
  4. 特定の相互作用パターンを発見すると、新しいアイコンやモードがアンロックされる
  5. プレイヤーは自分だけの独自の「AWS生態系」を作り上げていく

2.4 ゲームの終了条件

  • 明確な「勝利」や「敗北」はなく、サンドボックス的な体験を提供
  • 特定のマイルストーン(全アイコンの発見、特殊な相互作用パターンの発見など)を達成することで進行度を測定

3. 技術仕様

3.1 システム構成

  • メインゲームループ: Pygameを使用したフレームベースの更新システム
  • アイコンエンティティシステム: 各AWSサービスアイコンをオブジェクトとして管理
  • 物理エンジン: 簡易的な衝突検出と反応システム
  • イベントシステム: ユーザー入力とゲーム内イベントの処理
  • レンダリングシステム: アイコンとエフェクトの描画

3.2 データ構造

  • アイコンクラス:
    class AWSIcon:
        def __init__(self, service_type, position, velocity, image):
            self.service_type = service_type  # EC2, S3, Lambda等
            self.position = position  # (x, y)
            self.velocity = velocity  # (vx, vy)
            self.image = image  # Pygameサーフェス
            self.properties = {}  # サービス固有の特性
            self.interactions = []  # 相互作用可能なサービスリスト
  • 相互作用マトリックス: どのサービスがどのサービスとどのように相互作用するかを定義
  • 環境パラメータ: 重力、摩擦、境界条件などのシミュレーションパラメータ

3.3 主要アルゴリズム

  • 移動アルゴリズム: 各アイコンタイプ固有の動きパターン(直線、円形、ランダムウォークなど)
  • 衝突検出: 矩形または円形の衝突判定
  • 相互作用ロジック: アイコン同士の相互作用を決定するルールベースシステム
  • 進化システム: 特定条件下でのアイコン変化ルール

3.4 外部依存関係

  • Pygame: グラフィックスとゲームループ管理
  • NumPy: 物理計算の効率化(オプション)
  • Boto3: AWS関連の機能統合(オプション)
  • AWSアイコンセット: 公式のAWSアーキテクチャアイコン

4. ユーザーインターフェース

4.1 コントロール

  • マウス操作:
    • 左クリック: 新しいアイコンを配置
    • 右クリック: アイコンの情報を表示
    • ドラッグ&ドロップ: アイコンを移動
  • キーボード操作:
    • スペース: シミュレーション一時停止/再開
    • 数字キー(1-9): 異なるアイコンタイプを選択
    • 矢印キー: 画面スクロール
    • +/-: ズームイン/アウト

4.2 表示要素

  • メインゲーム画面: アイコンが動き回るシミュレーション領域
  • サイドパネル: 選択可能なアイコン一覧、統計情報
  • 情報パネル: 選択したアイコンの詳細情報
  • ミニマップ: 大規模シミュレーション時の全体像(オプション)
  • 視覚エフェクト: アイコン同士の相互作用時のエフェクト

4.3 フィードバック方法

  • 視覚的フィードバック: 相互作用時のアニメーション、色の変化
  • 音声フィードバック: 相互作用タイプに応じた効果音
  • ポップアップ通知: 新しい発見や特殊イベント発生時
  • 統計グラフ: アイコンの数や種類の変化を視覚化

5. コンテンツ設計

5.1 AWSアイコン設計

  • 基本アイコン(最初から利用可能):
    • コンピューティング: EC2, Lambda
    • ストレージ: S3, EBS
    • データベース: RDS, DynamoDB
    • ネットワーキング: VPC, Route 53
  • アンロック可能アイコン:
    • 高度なサービス: SageMaker, Rekognition, Comprehend
    • 特殊サービス: IoT Core, Greengrass, DeepRacer
    • レアアイコン: 特定の相互作用でのみ出現する特殊サービス

5.2 相互作用パターン

  • 依存関係:
    • EC2はVPC内に存在する必要がある(VPCがないとEC2の体力が徐々に減少)
    • RDSはVPCとセキュリティグループを必要とする
    • LambdaはIAMロールがないと実行できない
    • ECSはECRからイメージを取得する必要がある
    • API GatewayはLambdaやEC2などのバックエンドがないと機能しない
    • CloudFrontはS3やEC2などのオリジンがないと配信できない
  • 基本相互作用:
    • 補完関係: 互いに強化し合う(例: EC2とEBS、DynamoDBとLambda)
    • 統合関係: 一時的に結合して新機能を発揮(例: LambdaとAPI Gateway)
    • 競合関係: 互いに反発し合う(例: 異なるデータベースサービス同士)
  • 複雑相互作用:
    • カスケード効果: 一連の相互作用が連鎖的に発生
    • 創発現象: 複数のアイコンが特定のパターンで配置されると特殊効果が発生
    • アーキテクチャパターン: Well-Architectedフレームワークに基づくパターン形成

5.3 進行システム

  • 発見システム: 新しいアイコンや相互作用を発見するとアンロック
  • チャレンジ: 特定のパターンや条件を満たすミニゲーム的要素
  • アチーブメント: 特定の条件を達成するとバッジやトロフィーを獲得
  • 統計追跡: プレイヤーの発見や相互作用の履歴を記録

6. 実装計画

6.1 開発フェーズ

  1. プロトタイプフェーズ

    • 基本的なPygameウィンドウの設定
    • シンプルなアイコン移動と衝突検出の実装
    • 最小限のAWSアイコンセット(EC2、S3、VPC、Lambda)の実装
  2. コア機能フェーズ

    • 完全なアイコン移動システムの実装
    • 基本的な相互作用ルールの実装
    • ユーザーインターフェースの基本要素の実装
  3. 拡張フェーズ

    • 追加のAWSアイコンと相互作用の実装
    • 進行システムとアンロック機能の実装
    • 視覚・音響効果の強化
  4. ポリッシュフェーズ

    • バグ修正とパフォーマンス最適化
    • ユーザーフィードバックに基づく調整
    • 追加コンテンツの実装

6.2 マイルストーン

  1. M1: 動くプロトタイプ (2週間)

    • 基本的なウィンドウとアイコン表示
    • シンプルな物理エンジン
    • 4種類のAWSアイコン
  2. M2: 基本ゲームプレイ (2週間)

    • 10種類のAWSアイコン
    • 基本的な相互作用システム
    • ユーザー入力処理
  3. M3: 完全なゲームループ (3週間)

    • 20種類のAWSアイコン
    • 複雑な相互作用パターン
    • 進行システムとUI完成
  4. M4: 最終版 (1週間)

    • バグ修正とバランス調整
    • パフォーマンス最適化
    • 最終ポリッシュ

6.3 テスト計画

  • ユニットテスト: 個々のコンポーネント(アイコン動作、衝突検出など)のテスト
  • 統合テスト: 複数のシステム間の相互作用のテスト
  • パフォーマンステスト: 多数のアイコンが存在する場合のフレームレート確認
  • ユーザビリティテスト: 実際のユーザーによるプレイテスト
  • バランステスト: ゲームメカニクスのバランス調整

7. AWS統合ポイント

7.1 AWS アイコンの活用

  • 公式AWSアーキテクチャアイコン: AWS公式のアーキテクチャアイコンを使用
  • 正確な依存関係: 実際のAWSサービス間の依存関係や相互作用を反映
  • 教育的側面: ゲームを通じてAWSサービスの関係性を学べる要素

7.2 AWS知識の表現

  • サービス特性: 各AWSサービスの特徴や強みを動きや相互作用に反映
  • アーキテクチャパターン: AWS Well-Architectedフレームワークの原則を組み込む
  • サービス連携: 実際のAWSサービス連携パターンをゲーム内で再現

7.3 拡張可能性

  • 新サービス対応: 新しいAWSサービスが発表されたら追加可能な設計
  • コミュニティ貢献: プレイヤーが新しい相互作用パターンを提案できる仕組み
  • カスタマイズ: 自分だけのAWS環境をシミュレートできる機能

8. キャンペーン対応

8.1 キャンペーン要件対応

  • Amazon Q CLIとの関連性: AWSサービスの視覚的表現とインタラクティブな学習体験を提供
  • 創造性: AWSアイコンに生命を吹き込み、独自の生態系を作り出す創造的アプローチ
  • 教育的価値: AWSサービス間の関係性を直感的に理解できる
  • エンターテイメント性: ゲーム要素を通じて楽しみながらAWSを学べる

8.2 提出物チェックリスト

  • ゲームのソースコード(GitHub リポジトリ)
  • インストールと実行手順を含むREADME
  • ゲームのスクリーンショットまたはデモ動画
  • AWS Blog記事で言及されているキャンペーン要件への対応説明
  • 使用したAWSサービスやアイコンのリスト
  • ライセンス情報

9. 追加情報

9.1 参考資料

9.2 開発メモ

  • アイコンの動きと相互作用のバランス調整が重要
  • パフォーマンス最適化のため、画面外のアイコンの処理を最適化
  • 初心者にもわかりやすいチュートリアルの実装を検討
  • 将来的に、実際のAWS環境からサービス構成をインポートする機能も検討
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment