Skip to content

feat(koshien): 「AIを試す」で現スプライト・現バージョンの生成AIをiframeにplayer1で渡す #762

Description

@smalruby3-editor-bot

概要

甲子園拡張機能の「AIを試す」(koshien-test-modal) で、現状はゲームサーバー
(https://smalruby-koshien-web.netlab.jp/) をクエリ無しで iframe 表示しているだけで、
編集中の AI が反映されない。編集中スプライトの生成 Ruby コードを iframe に
クエリパラメータで渡し、その AI で対戦を試せるようにする

背景(確定仕様)

ゲームサーバー (WASM 版, tmp/smalruby-koshien-web) の GameViewer は URL パラメータ
?player1=… / ?player2=… を解釈する (game_viewer/index.html,
game_viewer/js/player-ai-client.js):

  • 値は decodeURIComponent 後、data:<標準base64(utf8)> なら AI ソースとして decode、
    http(s)://… なら fetch。
  • パラメータ無しなら default_ai/ を使う(旧挙動は維持される)。

やること

  • koshien-test-modal.jsx を改修し、iframe の src
    https://smalruby-koshien-web.netlab.jp/?player1=data:<base64(utf8(code))> にする。
  • <code> = 現在編集中スプライト・現在の ruby_version (v1/v2) で生成した Ruby
    (RubyGenerator の出力)。player2 はパラメータ無し(デフォルト AI)。
  • base64 化は UTF-8 対応で行う(btoa(String.fromCharCode(...new TextEncoder().encode(code))))。
    URL 組み立ては URLSearchParams 等で安全にエンコード。
  • 生成コードが取れない/空のときは従来どおりパラメータ無し(デフォルト AI)にフォールバック。
  • 生成コードの取得経路(ruby-downloader / ruby-tab 同様の RubyGenerator 呼び出し)を
    モーダルに配線する。

受け入れ条件

  • 「AIを試す」を開くと、現スプライト・現バージョンの生成 Ruby が player1 として
    iframe に渡る
  • パラメータ無しの従来挙動(デフォルト AI)が壊れていない
  • base64(utf8) エンコードと URL 組み立てのユニットテスト
  • lint / 既存テスト green

関連

Epic #738 / 後続: game server 側 API 対応(別 Issue)、ローカル実行+検証(別 Issue)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions