Skip to content

TaichiEto/bonbi-beergame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ビールゲーム・マルチプレイヤー・シミュレーション

サプライチェーン管理を学習するための教育用ゲームです。複数プレイヤーでリアルタイムにプレイできるWebアプリケーションとして実装されています。

ゲームの趣旨: ビールゲームの基本的なサプライチェーン管理に加えて、災害や市場変動などの現実でも起こりうる外乱(ディザスターイベント)を体験することで、不確実性下での意思決定とリスク管理の重要性を学習できます。

機能

  • マルチプレイヤー対応: 最大4人でリアルタイムプレイ
  • ソロプレイモード: AIプレイヤーと対戦可能
  • ディザスターイベント: 災害・市場変動等のランダムなイベント
  • リアルタイム更新: WebSocketを使用したリアルタイム同期
  • 可視化: Chart.jsによる履歴グラフ表示

プレイヤーの役割

  1. 小売店 (Retailer): 顧客からの需要に対応
  2. 卸売業者 (Wholesaler): 小売店への商品供給
  3. 流通業者 (Distributor): 卸売業者への商品供給
  4. 工場 (Factory): 商品の生産

ゲームルール

  • 目標: サプライチェーン全体のコストを最小化
  • 期間: 52週間
  • コスト:
    • 在庫保持コスト: 1個あたり週50円
    • バックオーダーコスト: 1個あたり週100円
  • リードタイム: 2週間

技術スタック

  • バックエンド: Python + Flask + Flask-SocketIO
  • フロントエンド: HTML + JavaScript + Tailwind CSS
  • リアルタイム通信: Socket.IO
  • チャート: Chart.js

セットアップ

前提条件

  • Python 3.11以上
  • Poetry

インストール

  1. リポジトリをクローンまたはダウンロード
git clone <repository-url>
cd beergame_gemini
  1. 依存関係をインストール
poetry install
  1. 仮想環境をアクティベート
poetry shell

実行

python server.py

サーバーが起動したら、ブラウザで http://localhost:5050 にアクセスしてください。

ゲームの進め方

  1. ゲーム作成: 最初のプレイヤーが自動的にホストになり、新しいゲームが作成されます
  2. プレイヤー参加: 他のプレイヤーはURLを共有してもらい、ゲームに参加します
  3. ゲーム開始: ホストが「ゲーム開始」ボタンを押すとゲームが始まります
  4. 注文入力: 各週、プレイヤーは上流業者への発注数を決定します
  5. 結果確認: 全プレイヤーが準備完了すると、次の週に進みます

ディザスターイベント

マルチプレイ・ソロプレイ両方で、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プレイヤーの行動シミュレート

ライセンス

このプロジェクトは学習目的で制作されています。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published