Files
kondiplo_front/README.md
kontei f25fd6f802
Some checks failed
CI / scan_ruby (push) Has been cancelled
CI / scan_js (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
CI / system-test (push) Has been cancelled
フロントエンドプレイアブル
2026-02-15 14:57:17 +09:00

5.9 KiB
Raw Permalink Blame History

KonDiplo Front

外交ゲームDiplomacyのWebフロントエンドアプリケーション。 モダンなUIで、ゲームの作成・参加・命令入力・ターン処理・自動進行管理までをブラウザ上で完結できます。

主な機能

🎮 ゲーム管理

  • ゲーム作成: タイトル、メモ、パスワード保護、参加人数などの設定。
  • モード:
    • ソロモード: 1人で全7カ国を操作テストや練習用
    • マルチプレイヤーモード: 複数のユーザーで国を担当。
  • 国割り当て: 管理者による手動選択、またはランダム割り当て。

⏱️ ターン進行管理

  • 手動進行: 全員が命令完了後、管理者がボタンでターンを進める方式。
  • 自動進行 (Auto Turn):
    • スケジュール設定: 毎日決まった時間(例: 0時, 12時, 18時に自動でターンを進めることが可能。
    • デッドライン管理: 次の更新時間をカウントダウン表示。
    • NPC自動処理: 期限までに命令未提出の国や、プレイヤー不在の国NPCは、自動保持(HOLD)またはランダム命令が適用されます。

🗺️ マップ・UI

  • 動的SVGマップ: ターンごとの戦況を可視化。
  • 命令入力: プルダウン形式で直感的に命令を作成(支援・輸送も対応)。日本語訳付き。
  • 視認性向上:
    • 国別カラー: 地図上の色に近いバッジAustria=赤, England=紫, etc.)で国名を表示。
    • NPCバッジ: 人間が操作していない国に🤖アイコンを表示。
    • フェーズ表示: ゲーム一覧で現在の時期(例: 1901年 春)を確認可能。

⚙️ ハウスルール

  • 年数制限: 指定年数でゲーム終了。
  • 目標SC数: 勝利条件となるSC数デフォルト: 18を変更可能。
  • スコアリング: SC数ベース、DSS、SoSなど複数の評価方式に対応。
  • 引き分け投票: 参加者の過半数の同意で引き分け終了。

技術スタック

カテゴリ 技術 解説
言語 Ruby 3.x / 4.x
フレームワーク Rails 8.1 最新のRails機能を活用
フロントエンド Hotwire Turbo + Stimulus によるSPA風体験
CSS Tailwind CSS ユーティリティファーストなスタイリング
DB SQLite3 / PostgreSQL 開発はSQLite、本番はPostgreSQL推奨
非同期処理 Solid Queue データベースベースのジョブキュー(自動ターン処理に使用)
API連携 Faraday 外部のDiplomacy判定ロジックサーバーと通信
アセット Propshaft 前提アセットパイプライン

アーキテクチャ

[ ブラウザ ] ⟷ [ Rails App (KonDiplo Front) ] ⟷ [ Diplomacy API (Python/FastAPI) ]
                          ↕                                  port 8000
                [ DB (SQLite/Postgres) ]
                          ↕
                [ Solid Queue Worker ]
           (自動ターン処理ジョブを定期実行)
  • Rails App: フロントエンド表示、ユーザー管理、ゲーム進行管理、自動ターンのスケジューリング。
  • Diplomacy API: ゲームのコアロジック(移動判定、支援カット、撤退判定など)とマップ描画を担当。

セットアップ

1. 前提条件

  • Ruby 3.x 以上
  • Node.js (Tailwind CSS ビルド用)
  • Diplomacy API サーバー: 別途起動が必要です(デフォルト: http://0.0.0.0:8000)。

2. インストール

# リポジトリのクローン
git clone <repository_url>
cd kondiplo_front

# 依存関係のインストール
bundle install

# データベースのセットアップ
# (Solid Queue 用のテーブルもここで作成されます)
bin/rails db:create db:migrate

# 初期データの投入
# ※ db/seeds.rb で管理者ユーザーのメール・パスワードを確認・変更してください
bin/rails db:seed

3. 起動

開発環境では bin/dev を使用します。これにより、Webサーバー、CSSビルド、バックグラウンドワーカーが一括で起動します。

bin/dev
  • アクセス: http://localhost:3000
  • 注意: 自動ターン処理を機能させるには、bin/dev で起動し、Solid Queueのワーカーが動いている必要があります。

使い方ガイド

自動ターン進行の設定

  1. ゲーム作成または編集画面の「ターン進行方式」セクションへ移動。
  2. プリセットから選択するか、「カスタム」を選んで時間を入力(例: 0,12,18 = 毎日0時・12時・18時に更新
  3. ゲームが開始されると、設定された時刻に自動で判定処理が走ります。

NPC非参加国の挙動

  • 「自動処理モード」で設定可能です。
    • HOLD: 何もしない(全ユニット維持)。
    • Random: ランダムに移動・支援・輸送命令を生成して実行。

トラブルシューティング

サーバーが起動しない / Solid Queue エラー

  • relation "solid_queue_jobs" does not exist などのエラーが出る場合は、マイグレーションが不足しています。

    bin/rails db:migrate
    

    を実行してテーブルを作成してください。

自動ターンが進まない

  • bin/dev コンソールのログを確認してください。
  • AutoTurnProcessJob が定期的に1分毎実行されているか確認してください。
  • Solid Queue のワーカープロセスが立ち上がっているか確認してください(bin/devworker プロセスが表示されているはずです)。

ライセンス

Private