# ASOBI LAB AIゲーム作成仕様

「ゲームを作る」を押すと、モデル一覧と選択中のプレビューが表示されます。作品を選んで「このモデルで作る」を押すと、その作品のコピーを作成します。空の盤面から始めるときは下段の「新規作成」を選びます。モデルはASOBI LABの指定9作品に固定され、ログイン後にゲームと画像を取得して自分の新しい下書きへコピーします。元の作品は変更せず、編集画面で内容・設定・処理を確認できます。サーバー保存・公開は別途行います。

新規作成・既存JSON修正の前に[ゲームデータ作成方針](creation-policy.md)を読み、短い上部案内、直接選択、本人だけの情報表示、指定JSONの保持、効果終了後の進行と実画面の検証に適用してください。今回の明示指示とゲーム固有ルールを優先します。

読込・書出はゲームJSON1ファイルのままです。定義と編集データは各8MiB（UTF-8）、部屋は固定定義込み16MiB。内部DBのmanifestや分割JSONを作者が追加してはいけません。既存サンプルの形式20／処理形式4を維持し、画像は既存アセット参照を使います。

操作はフェーズ別ボタンへ統一する。回数は通常の変数・条件で管理し、汎用のセーブポイント・条件／配置検査・操作制限を組み合わせる。旧設定は読込時だけ変換し、進行中の旧部屋は新規開始する。私有記録と秘密情報の参加者別配信を維持する。

同じ種類のカードごとに異なる値を保持する方法、同名・異型の変数、所有者付き部品の取得は[カード個体の値と共通参照](physical-card-values.md)を参照してください。

個人タブ等の実カードを対象に完成・占有を判定する方法は[カード配置枠の値](card-grid-values.md)を参照してください。旧固定ID形式も引き続き利用できます。

ゲーム名に依存しない行動開始・完了・取り消し・手番確定は[フェーズ別ボタンとセーブ・復元](phase-savepoints.md)を参照してください。通常の処理編集で作成・復元・検査と共通処理を設定します。

同名札も区別して選び、未選択札を隠したまま移動する方法は[カード個体の選択](action-reference.md#場所付きカード選択の結果)と[サンプル](examples/physical-card-choice.json)を参照してください。

アカウントへの保存はGoogle・LINE・Discordでログインします。独自パスワードは使用しません。[ログイン・既存アカウントの引き継ぎ](https://asobilab.party/docs/account-login.md)を参照してください。この認証変更によるゲームJSON・Schema・サンプル形式の変更はありません。

プロジェクトLも通常のフェーズボタン、3回の残り回数変数、セーブ・復元、配置検査を使用します。[設定方法と完全例](phase-savepoints.md)を参照してください。

準備画面で選ぶ全体変数と、プレイヤーへタブを開かせる処理は[ゲームオプションとタブ切替](game-options-and-tabs.md)、[読込可能な例](examples/options-open-tab.json)を参照してください。

## 質問・設計相談・JSON作成の使い分け

この入口とリンク先を読めるAIへ、URLと質問・依頼を渡してください。[操作FAQ](operation-faq.md)には画面名・ボタン名を含む手順があります。例えば「盤面にボタンを置いたときの処理はどこで設定する？」には、ボタンを選択→部品設定の「ボタン設定で処理・条件を編集」→「処理を編集」→「ルールを保存」と答えられます。これはサーバー保存とは別です。

- 操作の質問：必要なFAQ・仕様を読み、通常の文章で直接回答します。ゲーム全体の質問やJSON生成を始めません。
- 設計相談：関係する不明点だけ確認し、設計案を説明します。未依頼のデータ変更はしません。
- JSON作成・変更：以下の仕様・参照表・サンプル・Schemaを確認し、不足や矛盾を解消して依頼範囲のJSONを作ります。確定済みの条件を繰り返し聞きません。

リンクを読めないAIには必要な資料本文を貼り付けるか添付してください。読めない資料を読んだとせず、UI名・未登録の仕様を推測しません。資料読解、Schema検査、正式実行器、実画面、オンライン、本番反映は別々に報告します。

## 読む順番と仕様の位置づけ

作者が使う項目・型・初期値・省略時の挙動・処理順・権限・失敗条件は、設計書と同じ現行契約をここで公開します。秘密の運用情報は含めず、内部リポジトリへのアクセスを前提にしません。未実装案を生成可能な機能として扱わないでください。ローカル資料の更新と本番反映は別工程です。

1. [設計・実装パターン](authoring-patterns.md)：配札、選択、秘密値、タイマー、全員確認、終局まで。
2. [データ仕様](game-data-spec.md)・[部品](component-reference.md)・[処理](action-reference.md)。
3. [登録済み参照・型・引数の完全表](reference-contract.md)／[機械可読版](reference-contract.json)。実装登録表から生成し、ゲーム固有IDは置換します。
4. [サンプル目録](examples/README.md)：単体で読み込める完全な文書と、処理・設定の断片を区別。
5. [検証](validation.md)・[制約](constraints.md)・[Schema](schema/game.schema.json)。Schema検査だけで実行安全性を証明できません。

`pnpm test:authoring-docs` は全サンプルのSchema・正式読込検証、登録表との一致、公開リンクを確認します。[生成用プロンプト](prompt-template.md)も同じ契約です。

選択なしの通知・確認には`notice`を使用します。通知のみは即進行、確認待ちありは全員の1回押下を待ちます。途中退出を自動確認にしません。[処理仕様](action-reference.md#通知確認)・[完全例](examples/notification-confirmation.json)。

変数による複数キー整列と移動不可の手札選択：[処理仕様](action-reference.md#カード変数の整列基準)・[完全サンプル](examples/card-variable-sort.json)。既存データの個別修正は不要です。

処理に型エラーがある下書きも修正のために編集可能ですが、保存・実行は厳密検証します。変数の型・代入値は暗黙変換しません。数値から文字への変換は明示してください。編集専用の旧形式変換APIは`kind: "editor-project", purpose: "edit"`を使用し、部屋やゲーム実行の検証を緩和しません。保存JSON・Schema・サンプル形式20／4の変更はありません。

名前付き選択の回答を後続の対象指定へ使う場合は[接続サンプル](examples/player-choice-continuation.json)を参照。参加プレイヤーの`id`と回答IDを照合し、同名参加者でも混同しません。秘密の回答を公開する場合だけ明示公開を設定してください。

場所と種類を指定する選択枚数条件は[完全サンプル](examples/selected-cards-button.json)を参照。表示条件・活性条件とも同じ共通比較形式を使い、手札だけでなくボックス・盤面にも対応します。

対面・四方向の見え方はタブ設定`viewpoint`で指定します。[データ仕様](game-data-spec.md)と[2人対面の完全例](examples/board-viewpoint.json)を参照してください。閲覧者別の表示であり、移動処理や部品座標を回転させる指定ではありません。

処理編集の「このゲームのデータ構造」はゲーム固有の名前から参照をたどる画面です。JSONの格納構造とは異なり、グラフを保存データへ追加しません。詳細は[ゲームデータ仕様](game-data-spec.md#処理編集のデータ構造)を参照してください。

編集・確認画面は2026-10-19に一本化しました。マイゲームの「編集する」と各ボタンの処理編集はメソッド形式、確認・実部屋はスクロール盤面を使います。旧UI用のクエリや処理コード文字列をJSONへ生成しないでください。新規JSONはschemaVersion 20／operationSchemaVersion 4です。既存JSONは順次移行され、従来Actionを保持します。通常処理に統合した一時変数は型付き編集・保存・再読込・実行へ接続し、確認画面と新規server-v1部屋で登録済みゲーム参照・操作を使用します。待機中の私有チェックポイントは作者JSONへ含めません。


プレイヤーボックスの任意項目`playerBoxShowName`（省略時true）は座席別の名前・アイコン表示を制御します。通常の部品設定同期で上書きしません。透明ボックスの編集用点線は非永続の表示です。例は`examples/player-box-labels.json`を参照してください。

カードのレイアウト画面でも「カードサイズ」から既存の部品width／heightを変更できます。テンプレートに別サイズを生成しません。最小1px・0.1px刻みの編集UIで、JSONの形式・既存データの読込規則は変更しません。`examples/layout-overflow.json`のカードwidth:100／height:140も同じ欄に表示されます。

編集画面の条件の未選択表示はUI専用で、JSONへ「未選択」を出力しません。共通対象選択はPlayerTarget.select／and／or／team、turn.basis、CardSelector.selection、複数CardLocation.selectionを使用します。条件→並び順→選択数の順に評価し、省略した既存データの元の順・全件という意味は維持します。[共通対象クエリ](action-reference.md#共通対象クエリ)と[完全サンプル](examples/target-selection.json)を参照してください。

この資料は、ASOBI LABへ読み込めるゲームデータをAIが生成するための入口です。


枠外へ拡大したカード／サイコロのレイアウト例は `examples/layout-overflow.json`。完全に枠外のサンプル項目は、編集の「枠外・重複項目の整理」の削除操作で消える確認用です。一部が枠内に重なる画像は保持されます。

## 推奨手順

1. ゲーム名、人数、時間、勝敗条件、ターン進行を整理する。
2. 不明点や矛盾を確認して設計を合意する。すでに条件が確定した明示的な作成・修正依頼を不要に聞き直さない。
3. `game-data-spec.md`、`component-reference.md`、`action-reference.md`を参照する。
4. `schema/game.schema.json`でJSONを検証する。
5. ASOBI LABへ読み込み、配置警告と確認モードを確認する。

プレイヤーボックスを場所として指定する例は `examples/player-box-targets.json` を参照してください。
変更先プレイヤーごとに手札のカード変数を読む例は `examples/variable-from-hand.json` を参照してください。

## JSON作成を依頼された場合の出力

次の形式指定はJSONファイルの内容に適用します。操作質問や設計相談の回答までJSONにしないでください。

- JSON以外を含めない。
- Markdownのコードフェンスを付けない。
- 存在しないフィールドや処理を作らない。
- IDを重複させず、すべての参照先が存在することを確認する。
- 外部画像URL、SVG、`blob:` URL、`asset://` URLを生成しない。

- `examples/compound-branch.json`: 文字の状態と手札枚数をANDで組み合わせる条件分岐。

- examples/progress-controls.json: 対象プレイヤーごとの繰り返しと名前を組み合わせた通知。

- `examples/method-specialized-actions.json`: 新コードUIでも既存JSONへ戻る選択・入力・権限・選択手札判定の例。生成結果はメソッド文字列ではなくJSONにしてください。

- `examples/inline-target-editing.json`: 全プレイヤーの手札をカード変数で絞り、移動・収納先別の整列を行う例。画面のドット表記は保存しません。

一時変数は通常の「変数を変更」と「繰り返し」から使います。[統合サンプル](examples/integrated-temporary-actions.json)と[処理仕様](action-reference.md)を参照してください。コード編集は英語メソッド名・定数を使い、Tabで型に合う候補を開き、上下キーで選び、もう一度Tabで確定します。候補はコード欄内に重ね、Enterは改行します。保存時に整形します。編集上限は100万UTF-16文字で、整形エラー時は入力を保持して保存を止めます。旧専用プログラムの変換機能はありません。
チームごとの独立した手番進行は、ターン操作の任意`turnTeamId`（登録チームID）で指定します。チーム有効・ターン複数可ONが必要。省略は全体です。全解除後の直前位置保持も含め[独立チーム進行サンプル](examples/independent-team-turns.json)と[action-reference](action-reference.md#チーム別の独立進行と全解除後の再開)を参照してください。

選択待ちも戻したい場合は、同じ処理内でセーブポイントを作成してから本人1人の選択・入力へ進めます。候補や案内を再記述する必要はありません。復元時は回答要求IDを更新し、新しい秘密情報を見た後は戻せません。[仕様](phase-savepoints.md)、[最小例](examples/savepoint-choice.json)。

確認モードでも、演出ONの処理は次の入力・選択・確認待ちまで先に確定し、その後に演出を再生します。セーブポイント設定は不要です。演出のための確認ボタンや再開処理をJSONへ追加しないでください。演出中の状態変更はできず、回答画面は再生後に表示されます。

初めてのプレイはホームの「はじめての操作体験」で練習できます。作者は確認モードの「実行を調べる」で実行順・条件用の現在値を確認できます。マイゲームの「保存履歴」は直近10版を別下書きに復元します。オンラインのホストは「中断して保存」で同じ部屋を30日保持でき、再開後は24時間期限です。回答・演出・タイマーの完了後に中断してください。これらの支援機能でゲームJSON・Schemaは変更しません。

横幅をJSONで指定する例: [board-width.json](examples/board-width.json)。幅・高さは各100〜10000の整数px、省略した軸は従来のsizeの寸法です。

背景グリッドは編集画面の「タブ設定 → タブの背景」で切り替えます。このタブの編集画面・ゲーム画面に表示されます。ツールバーには切替を置きません。保存項目・初期値・JSON形式は変わりません。


### 設定を閉じると保存されますか？

変更は編集中データへすぐ反映されます。「閉じる」は保存や取消ではありません。サーバーへ残すには画面上部の保存を使います。カードの枠外・重複項目は自動削除せず、「枠外・重複項目の整理」で一覧を確認し、削除を実行します。

### 自動処理やカードのデザインはどこから編集しますか？

手番・ゲーム開始時・フェーズイベント・共通処理は「ゲーム進行」、押すボタンは「ボタン設定」、マーカー・ピースは「部品共通設定」です。カードを選択すると種類・枚数と共通デザインをそれぞれ直接開けます。手札OFFの詳細や未使用ピース設定は折り畳まれますが、値は保持されます。
