変数
変数はあなたのワールドのゲーム状態です。数値、テキスト、フラグ、複雑なオブジェクト、ターンをまたいで永続する何でも。AIがそれらを読み、ディレクティブを通して更新し、あなたの自動化が変更に反応できます。
変数を平易な言葉で説明するだけ
変数のビヘイビアルールでは、変数が何を表し、いつ変化すべきかを平易な日本語(または英語)で説明するだけで十分です。AIに [health: -1] の構文の書き方を教えようとしないでください。エンジンがディレクティブ書式を自動的にプロンプトに焼き込むので、AIはすでに書き方を知っています。
✅ これを書く: 「プレイヤーが物理ダメージを受けたとき減少。重さに比例。パンチ-5〜-10、剣で斬りつけ-15〜-25。休息でゆっくり回復。」
❌ これは書かない: 「プレイヤーがダメージを受けたら、応答に [health: -X] を追加して、Xはダメージ量。」
エディタで変数セクションを開きます。各変数には名前、タイプ、デフォルト値、ビヘイビアルールがあります。

エントリページのホラーワールドは5つの変数を使っています: health(number、0-5)、energy(number、0-8)、day count(number、1-14)、game phase(string、「Night」または「Day」)、armed status(boolean)。これで14夜のサバイバルゲームを動かすのに十分です。
毎ターン、AIは現在値を読み、応答に [health: -1] のようなディレクティブを書き、エンジンがそれらを抽出して状態を更新します。プレイヤーはナラティブだけを見ます。
変数のタイプ
Number
数量を追跡: 体力、ゴールド、好感度、日数カウント、空腹度。
[health: -15] → 15減らす
[gold: +50] → 50加える
[day-count: set 3] → ちょうど3に設定
[damage: *2] → 2倍にする最小/最大の境界を設定できます。エンジンが自動的にクランプします。
String
テキスト状態を追跡: 場所、気分、現在のクエスト、時間帯。
[location: set "dark forest"]
[mood: set "suspicious"]
[time-period: set "night"]Boolean
真偽値のフラグを追跡: 鍵を持っているか、NPCと会ったか、イベントが発火したか。
[has-key: toggle] → true ↔ false を切り替え
[met-elder: set true]JSON
複雑な構造を追跡: インベントリ配列、NPCのリレーションシップオブジェクト、クエストログ、マップデータ。
[inventory: push {"name": "Iron Sword", "damage": 10}]
[npcs.aria.affinity: +5]
[npcs.aria.mood: set "happy"]
[quest-log: merge {"main": "completed"}]JSON変数はドットパス更新をサポートします。オブジェクト全体を書き直すことなく、入れ子のフィールドを変更できます。
注意:
deleteは常にその後にJSON形式の値を必要とします。オブジェクトキーには引用符付き文字列([npcs: delete "aria"])、配列インデックスには数値([inventory: delete 0])。素の形式[var: delete]は機能しません。パーサーは暗黙のsetにフォールバックし、変数にリテラル文字列"delete"を書き込んでしまいます。一括削除には、<UpdateVariable>JSON Patchアクションを持つビヘイビア、または上書きする[inventory: set [...]]のどちらも適切な代替です。
ビヘイビアルール — 最も重要な部分
ビヘイビアルールは、いつ、どのように変数を変えるかをAIに教える平易な日本語(英語)の指示です。これがないと、AIはあなたの変数を確実に使ってくれません。
悪いビヘイビアルール
プレイヤーの体力を追跡する。
AIは「追跡する」が何を意味するか知りません。いつ変えるべきか? どれくらい? ゼロは何を意味するのか?
良いビヘイビアルール
0 = 死。死亡シーンを描写してゲームを終了する。1-20 = 危機(出血、呼吸困難)。20-50 = 負傷(痛みが行動に影響)。50-80 = 打撲(軽い不快感)。80-100 = 健康。
物理ダメージで減少。重さに比例。パンチ: -5〜-10。剣の斬撃: -15〜-25。高所からの落下: -20〜-40。休息するとゆっくり増加(休息シーンあたり+5)、または治療で増加(+10〜+30)。1ターンで30を超えて変化させない。
これは具体的です。AIはスケール、しきい値、トリガー、上限を知っています。
機能するパターン
数値範囲 — 各範囲がナラティブで何を意味するか定義:
0 = ゲームオーバー。1-25 = 絶望的。26-50 = 苦戦。51-75 = 健闘。76-100 = 自信満々。
トリガー — いつ変化すべきか:
プレイヤーが村人を助けたとき、贈り物をしたとき、または彼らを守ったとき増加。窃盗、脅迫、または約束を破ったとき減少。
上限 — 大きな揺れを防ぐ:
1ターンで10を超えて変化させない。最小0、最大100。
変数間のリレーションシップ — 相互作用:
空腹度が0に達したとき、毎ターン体力を5減らし始める。
TIP
2〜4文で通常十分です。ビヘイビアルールが短い段落より長くなったら、簡素化してください。AIは賢いので、概念と境界を与えてください。500語のエッセイではありません。
ヒント
- マクロで機能するIDスタイルを選ぶ: 変数マクロはIDが文字/数字/アンダースコアのときだけ解決されます。エントリ内で二重ブレースマクロとして変数を参照したい場合は、
snake_case(例:player_health) またはcamelCaseを使ってください。kebab-caseは[player-health: +5]のようなディレクティブでは問題ありませんが、マクロとしては解決されません。 - 複雑な何かにはJSON: 1つ以上の値が必要な場合(プロパティ付きのインベントリアイテム、複数フィールドのNPCデータ)、JSONを使う
- 追跡しすぎない: すべてに変数が必要なわけではありません。AIがナラティブで処理できるなら、変数を飛ばしてください
- ビヘイビアルールをテスト: ワールドをプレイして、期待するときにAIが変数を更新するか確認してください。そうでなければ、指示をもっと具体的にする必要があります
