forked from scratchfoundation/scratch-gui
-
-
Notifications
You must be signed in to change notification settings - Fork 16
Closed
Description
スモウルビー3から実行可能なスモウルビー甲子園の実行環境を設計する。
ストーリー: AI作成者がAIを作成して、競技用サーバーを使って、プリセットのAIと対戦する
Participants:
- AI作成者A
- スモウルビー3
- 競技用サーバー
Sequence:
- AI作成者Aがスモウルビー3を使って「AI」を作成する。作成した「AI」はスモウルビー3に保持される。
- 「AI」とは、スモウルビー甲子園というプログラミング競技において、相手と対戦して競技に勝つためのプログラムのこと。
- Rubyスクリプトとして実装される。
- AI作成者Aが作成した「AI」を試すために、AI作成者Aがスモウルビー3を操作して、スモウルビー3から競技用サーバーに「AI」をアップロードする。
- このとき、対戦相手とマップも指定可能
- 対戦相手はプリセットの中から選択可能。思考タイプを3つから選択可能。ゴール優先(goal)、アイテム優先(item)、前半アイテム優先して後半ゴール優先 (item_goal)
- マップは10種類から選択可能 (map1からmap10)
- 競技用サーバーが対戦準備を行い、スモウルビー3に競技画面表示用のURLを生成して返す
- スモウルビー3が競技画面表示用のURLにアクセスして対戦画面を表示する。
- AI作成者Aが対戦画面を操作して、対戦をスタートさせる。
- 対戦のスタートリクエストはAI作成者Aから直接、競技用サーバーにリクエストされる
- 競技用サーバーが競技終了後、対戦結果を表示する
- AI作成者Aが対戦結果を確認後、対戦画面を閉じる
シーケンス図:
sequenceDiagram
participant AI_Creator_A as AI作成者A
participant Smalruby3 as スモウルビー3
participant Koshien_Server as 競技用サーバー
%% ステップ1: AIの作成と保持
AI_Creator_A->>Smalruby3: (1) AIを作成する (Rubyスクリプト)
Smalruby3->>Smalruby3: 作成したAIを保持
%% ステップ2: AIのアップロードと設定
AI_Creator_A->>Smalruby3: (2) AIアップロードと設定の指示 (先攻/後攻、対戦相手、マップ)
Smalruby3->>Koshien_Server: AIをアップロードし、設定情報を送信
Note over AI_Creator_A,Koshien_Server: 対戦相手:<br>ゴール優先(goal), アイテム優先(item),<br>前半アイテム優先して後半ゴール優先(item_goal)<br>マップ:<br>map1〜map10
%% ステップ3: サーバーの準備とURL生成、競技画面の表示
Koshien_Server->>Koshien_Server: (3) 対戦準備を行う
Koshien_Server-->>Smalruby3: 競技画面表示用URLを返す
Smalruby3->>Koshien_Server: 競技画面表示用URLにアクセス (iframe)
Koshien_Server-->>AI_Creator_A: 対戦画面を表示
%% ステップ4: 対戦の開始、結果の表示
AI_Creator_A->>Koshien_Server: (4) 対戦開始ボタンを押す
activate Koshien_Server
Koshien_Server->>Koshien_Server: 対戦を実行
deactivate Koshien_Server
Koshien_Server-->>AI_Creator_A: 対戦結果データを送信
AI_Creator_A->>AI_Creator_A: 対戦結果を確認
%% ステップ5: 画面を閉じる
AI_Creator_A->>AI_Creator_A: (5) 対戦画面を閉じる
ストーリー: AI作成者AとAI作成者BがAIを作成して、競技用サーバーを使って、お互いのAIで対戦する
Participants:
- AI作成者A
- AI作成者B
- スモウルビー3
- 競技用サーバー
Sequence:
-
AI作成者Aがスモウルビー3を使って「AI」を作成する。
-
AI作成者Aが作成したAIを対戦相手として指定可能にするために、AI作成者Aがスモウルビー3を操作して、スモウルビー3から競技用サーバーに「AI」をアップロードする (アップロードしたAIは2日後に削除される)。
-
AI作成者Bがスモウルビー3を使って「AI」を作成する。
-
AI作成者Bが作成した「AI」を試すために、AI作成者Bがスモウルビー3を操作して、スモウルビー3から競技用サーバーに「AI」をアップロードする。このとき、対戦相手として、AI作成者Aが作成したAIを指定する。
-
競技用サーバーが対戦準備を行い、スモウルビー3に競技画面表示用のURLを生成して返す
-
スモウルビー3が競技画面表示用のURLにアクセスして対戦画面を表示する。
-
AI作成者Bが対戦画面を操作して、対戦をスタートさせる。
- 対戦のスタートリクエストはAI作成者Bから直接、競技用サーバーにリクエストされる
-
競技用サーバーが競技終了後、対戦結果を表示する
-
AI作成者Bが対戦結果を確認後、対戦画面を閉じる
シーケンス図:
sequenceDiagram
participant AI_Creator_A as AI作成者A
participant AI_Creator_B as AI作成者B
participant Smalruby3 as スモウルビー3
participant Koshien_Server as 競技用サーバー
%% ステップ1: AI作成者AのAI作成とアップロード
AI_Creator_A->>Smalruby3: (1) AIを作成する (Rubyスクリプト)
Smalruby3->>Smalruby3: 作成したAIを保持
AI_Creator_A->>Smalruby3: (2) AIアップロードを指示
Smalruby3->>Koshien_Server: AIをアップロード (2日後に削除)
Note right of Koshien_Server: AI作成者AのAIを保存
%% ステップ2: AI作成者BのAI作成と対戦設定
AI_Creator_B->>Smalruby3: (3) AIを作成する (Rubyスクリプト)
Smalruby3->>Smalruby3: 作成したAIを保持
AI_Creator_B->>Smalruby3: (4) AIアップロードと対戦設定を指示
Note over AI_Creator_B,Smalruby3: 対戦相手としてAI作成者AのAIを指定
Smalruby3->>Koshien_Server: AIをアップロードし、対戦設定を送信
%% ステップ3: サーバーの準備と画面表示
Koshien_Server->>Koshien_Server: (5) 対戦準備を行う
Koshien_Server-->>Smalruby3: 競技画面表示用URLを返す
Smalruby3->>Koshien_Server: (6) URLにアクセスして対戦画面を表示 (iframe)
%% ステップ4: 対戦の開始と結果の表示
AI_Creator_B->>Koshien_Server: (7) 対戦開始ボタンを押す
activate Koshien_Server
Koshien_Server->>Koshien_Server: 2つのAIで対戦を実行
Koshien_Server-->>AI_Creator_B: (8) 対戦結果データを送信
deactivate Koshien_Server
%% ステップ5: 画面を閉じる
AI_Creator_B->>AI_Creator_B: (9) 対戦画面を閉じる