サプライチェーン管理を学習するための教育用ゲームです。複数プレイヤーでリアルタイムにプレイできるWebアプリケーションとして実装されています。
ゲームの趣旨: ビールゲームの基本的なサプライチェーン管理に加えて、災害や市場変動などの現実でも起こりうる外乱(ディザスターイベント)を体験することで、不確実性下での意思決定とリスク管理の重要性を学習できます。
- マルチプレイヤー対応: 最大4人でリアルタイムプレイ
- ソロプレイモード: AIプレイヤーと対戦可能
- ディザスターイベント: 災害・市場変動等のランダムなイベント
- リアルタイム更新: WebSocketを使用したリアルタイム同期
- 可視化: Chart.jsによる履歴グラフ表示
- 小売店 (Retailer): 顧客からの需要に対応
- 卸売業者 (Wholesaler): 小売店への商品供給
- 流通業者 (Distributor): 卸売業者への商品供給
- 工場 (Factory): 商品の生産
- 目標: サプライチェーン全体のコストを最小化
- 期間: 52週間
- コスト:
- 在庫保持コスト: 1個あたり週50円
- バックオーダーコスト: 1個あたり週100円
- リードタイム: 2週間
- バックエンド: Python + Flask + Flask-SocketIO
- フロントエンド: HTML + JavaScript + Tailwind CSS
- リアルタイム通信: Socket.IO
- チャート: Chart.js
- Python 3.11以上
- Poetry
- リポジトリをクローンまたはダウンロード
git clone <repository-url>
cd beergame_gemini- 依存関係をインストール
poetry install- 仮想環境をアクティベート
poetry shellpython server.pyサーバーが起動したら、ブラウザで http://localhost:5050 にアクセスしてください。
- ゲーム作成: 最初のプレイヤーが自動的にホストになり、新しいゲームが作成されます
- プレイヤー参加: 他のプレイヤーはURLを共有してもらい、ゲームに参加します
- ゲーム開始: ホストが「ゲーム開始」ボタンを押すとゲームが始まります
- 注文入力: 各週、プレイヤーは上流業者への発注数を決定します
- 結果確認: 全プレイヤーが準備完了すると、次の週に進みます
マルチプレイ・ソロプレイ両方で、15%の確率で以下の外乱イベントが発生します:
- 在庫爆発: 倉庫災害により在庫コストが2倍
- 注文混乱: システム障害により注文数がランダムに変更
- 配送遅延: 交通災害により配送パイプラインに遅延発生
- 需要急増: 市場変動により顧客需要が3倍に増加
- コスト爆弾: 緊急事態により全プレイヤーに追加コスト
beergame_gemini/
├── server.py # Flaskサーバーとゲームロジック
├── index.html # フロントエンドUI
├── pyproject.toml # Python依存関係設定
├── poetry.lock # 依存関係ロックファイル
└── README.md # このファイル
- ゲーム状態は
games辞書でメモリ内管理 - 各ゲームは一意のIDで識別
- WebSocketルームでプレイヤーをグループ化
create_new_game(): 新しいゲーム状態を初期化calculate_next_week(): 週次計算とコスト算出apply_king_bonby_event(): ランダムイベントの適用simulate_ai_players(): AIプレイヤーの行動シミュレート
このプロジェクトは学習目的で制作されています。