仕組み
Yuminaでは、プレイヤーがメッセージを送るたびに、以下の一連の処理が起こります。これさえ理解すれば、あなたが書いた一字一句、設定した一つひとつのルールを、エンジンがいつ使うのかが正確にわかります。
サイクル
プレイヤー入力(メッセージまたはUI操作)
↓
① エンジンがプロンプトを組み立てる:エントリ + 変数 + 会話履歴
↓
② AIが応答を生成:ナラティブ + [状態ディレクティブ]
↓
③ エンジン:状態ディレクティブを抽出 → 変数を更新 → ルールを評価 → ルールの結果を発火(変数の変化、オーディオの発火)
↓
プレイヤーが見るもの:ストーリー + 更新されたUI + オーディオ
↓
次のターンへクリエイターであるあなたは、このループに何を入れるかを決められます。AIが何を見るか(エントリ)、何を追跡するか(変数)、何が自動で起こるか(ビヘイビア)、そしてプレイヤーにどう見せるか(フロントエンド)です。
1ターンを具体的に
サバイバルホラーのワールドで、プレイヤーが「ポーションを飲む」と入力します。このターンで何が起きるかを見てみましょう。
① エンジンが組み立てるプロンプト
エンジンはあなたが書いたもの、変数、会話履歴を1つのプロンプトに縫い合わせ、AIに送信します。
// —— あなたが書いたワールド設定 ——
[system]
あなたはこのサバイバルホラーゲームのナレーターです。文体は冷たく抑制的に、
感覚的な描写を多めに、プレイヤーの行動を決して代わりに決めないこと。
[system]
長く放棄された松崎療養院。1987年の冬に封鎖された。
プレイヤーは行方不明の友人を捜してここへ来た大学生。
// —— あなたが定義した変数(エンジンがAIの理解できる形式に自動変換) ——
[system]
<behavior-rules>
[health] プレイヤーの体力。負傷時に10〜30減少、休息時に5〜15回復
[sanity] 恐ろしいものを見ると5〜15減少、休息時に5〜10回復
</behavior-rules>
// —— 会話履歴 ——
[user]
ドアを押し開ける
[assistant]
手があなたの手首をつかむ — その肌は異常に冷たい...
[user]
ポーションを飲む
// —— 現在の状態(毎ターン、AIが出すディレクティブに応じて更新され、エンジンが各変数の最新値を記録し続ける) ——
[system]
<game-state>
health: 45
sanity: 30
day: 3
</game-state>② AIの生の出力
ポーションが喉を焼くように流れ落ちるが、あなたは気分が良くなる。
[health: +20] (AIが出力した[状態ディレクティブ])③ プレイヤーが実際に見るもの
ポーションが喉を焼くように流れ落ちるが、あなたは気分が良くなる。
❤️ health 45 → 65
エンジンはAIの出力の末尾から [health: +20] を取り出し、状態に適用し、関連するルール(満タン時に発火すべきものは?)をチェックし、テキストからディレクティブを取り除いて、きれいなナラティブだけをプレイヤーに見せます。
AIはデータを書き換えません。AIはディレクティブを書き、エンジンがそれを実行します。
カードの構成要素
1. エントリ — AIが読むもの
エントリは、AIが応答を生成するときに目にするもので、何を書くかは完全にあなた次第です。キャラクター説明、世界設定、文体ガイド — これらはすべてエントリです。
エントリは常にオンにもできますし(世界の背景設定など)、キーワードトリガーにもできます。会話中のキーワードで起動するものです。たとえば酒場に「酒」というキーワードを設定すると、プレイヤーかAIが「酒」と言ったときにあなたが書いた酒場のロアエントリが自動的に取り込まれ、誰も言わなければAIには送られません。
エントリは贅肉なく保つほど、AIはよく従います。 AIは毎ターンすべてのエントリを読みます。不要なエントリを1つ増やすと、本当に重要な1つが見落とされやすくなります。
2. 変数 — AIが追跡する状態
変数はゲーム状態です — 体力、ゴールド、場所、好感度、インベントリなど。AIは毎ターン現在の値を読み、応答の中でシンプルなディレクティブを使って更新します。
盗賊の刃があなたの腕をかすめる。
[health: -15]
[location: set "暗い森"]プレイヤーが見るのはナラティブです。エンジンは裏側でこれらの角括弧ディレクティブを静かに抽出し、ゲーム状態を更新します。ワールドに変数がある限り、エンジンが自動的にAIへディレクティブの書式を教えてくれるので、あなたはこの変数が何を表し、どう変化すべきかを書くだけでOKです( •̀ ω •́ )✧。たとえば「物理ダメージを受けたら体力を10〜30減少、1ターンで最大30まで」のように。
変数も多すぎないのがベストです。 どの変数も毎ターン、プロンプトに1行を占めます。実際には使わない変数を足すのは、AIの注意の無駄づかいです。
3. ビヘイビア — エンジンが完全に自動で動かすこと
ビヘイビアは、AIが忘れがちだったり一貫性を欠いたりすることを処理するのに使えます。AIの関与は不要です。
- When 体力が10を下回る → 「死にかけている!」という警告を表示
- When 好感度が75を超える → AIのプロンプトにロマンス方向のディレクティブを注入
- Every 5ターン → 雷鳴の環境音を再生
どのビヘイビアも、「いつ(When)」トリガー、任意の「もし(If)」条件、そして「ならば(Then)」アクションを持ちます。
ビヘイビアは任意です。ただ、精密なしきい値を持つゲームメカニクスを作りたいなら、ビヘイビアがゲームの一貫性を保ってくれます。
4. ビジュアルとオーディオ — プレゼンテーション層(任意)
デフォルトでは、プレイヤーが見るのはシンプルなチャットインターフェースで、ほとんどのワールドにはこれで十分です。
でももっと先へ行きたいなら、カスタムUIとオーディオを加えて、ワールドの視覚と聴覚の体験をかたちづくれます。カスタムUIなら、スタイル付きのメッセージバブルから、体力バー・マップ・インベントリを備えた完全なゲームインターフェースまで何でも作れます。オーディオはBGM・効果音・環境音を加え、AIがナラティブの中で自然にトリガーします。
コードが書けなくても大丈夫です。 スタジオに入れば、中のAIアシスタントが説明をもとにカスタムインターフェースを生成してくれます。やりたいことを説明するだけ(「私のこの世界のテーマに合った、超絶イケてるAAA級のフロントエンドを作って」)で、組み上げてくれます。
AIが見る順序
ターンごとにAIのプロンプトへ組み立てられる内容の正確な順序がこちらです。AIは先頭と末尾のコンテンツに最も注意を払い、中央のコンテンツは注目度が下がります。これを理解すると、最もインパクトのある場所にコンテンツを配置できます。
| 順序 | 何 | どこで設定するか |
|---|---|---|
| 1 | 常時オンのエントリ(キャラクター、ワールド、ナレーター指示) | エントリ → System Presetsセクション |
| 2 | プレイヤーのアクティブなペルソナ(名前、外見、背景) | プレイヤーの設定。あなたの設定ではありません |
| 3 | 変数のビヘイビアルール + 現在値 | 変数タブ |
| 4 | サンプルダイアログ | "example"ロールのエントリ |
| 5 | 会話履歴 | 自動 |
| 6 | キーワードトリガーのエントリ(関連メッセージの近くに注入) | エントリ → Keyword-Triggeredセクション |
| 7 | ポスト指示(最終強調、スタイル徹底) | エントリ → Post Instructionsセクション |
AIを使った作り方
Studio AIを使う(推奨)
Studioエディタを開き、やりたいことを説明すると、組み込みのAIアシスタントがエントリ、変数、自動化を作成してくれます。プラットフォームの隅々まで知っています — 有効な構文、実証済みのパターン、参照整合性。
「体力、正気度、空腹度を持つサバイバルホラーのワールドを作って。プレイヤーは廃病院に閉じ込められている。動揺するものを見ると正気度が下がる。正気度ゼロでAIは幻覚を描写する」
Studio AIはエントリ、ビヘイビアルール付きの変数、正気度ゼロで発火するルールを生成し、すべて正しく結線します。(もちろん、最後にこれらのエントリの中身を自分の手で一度レビューして手直しすれば、ワールドはぐっと魅力的になりますよ╰(°▽°)╯)
自分のAI + World Specを使う
Claude Code、Cursor、ChatGPTで作業する方が好みなら、World Specをダウンロードしてください。AIツールに与えるために設計された完全な技術リファレンスです。あなたのAIがspecを読み、あなたがやりたいことを説明すると、AIがインポート可能な有効なワールドスキーマを生成します。
始める準備はできましたか?
エディタを開いて新しいワールドを作るか、各ビルディングブロックの詳細を学ぶために読み進めてください。
