アンカーと修飾子体系 (Anchor-Decorator)
このページは Ktory の設計原則 に従い、現在の契約と長期目標を区別します。
アンカーと修飾子
Section titled “アンカーと修飾子”アンカーは実行する拍や選択肢を作り、.tag(args) などの修飾子が引数を付けます。拍は物語の停止位置を定め、演出方法と所要時間はホストが実装します。
ノードと構造
Section titled “ノードと構造”| 書き方 | 解析構造 | 意味 |
|---|---|---|
話者: セリフ |
TextStep |
話者を持つテキストの拍 |
: 地の文 または予約接頭辞のない本文 |
TextStep |
Speaker が空の匿名テキスト |
子項目のない #do |
DirectiveStep |
文字がなくても停止する指令の拍 |
インデントした * / + を持つ #choice |
ContainerStep |
選択肢コンテナ |
# 行が指令かコンテナかは子項目の構造で決まります。choice はパーサーの予約語ではありません。独自の名前に対応する拡張機能は実際のランタイムで確認し、名前だけで Handler の実装を仮定しないでください。
アリス: 信じられない…… .expression(surprised) .next(0.5)
#do .sfx("door")修飾子は所属するアンカーに付き、選択肢と分岐本文の範囲はインデントで決まります。.tag と .tag() は引数なし、.tag(0) は整数のゼロを渡します。.bgm("main", volume=0.6) のような位置引数と名前付き引数も使えます。これらの名前自体が音声や立ち絵の実装を提供するわけではありません。
表示時間の規約は秒単位です。.next(0.5) は全文表示の半秒後に進行を要求し、.skippable(false, 3) は最初の 3 秒間の全文即時表示を制限します。コアは宣言を解析し、ホストまたは表示コントローラーが時間を処理します。
.wait(t) は全文表示後の最低待機時間だけを指定し、自動進行を有効にしません。待機中のクリックは破棄され、手動再生では待機終了後に改めてクリックする必要があります。引数なしの .wait は推定読書時間を使います。.next(t) は全文表示後に計時して自動進行を要求し、引数の省略は 0 秒です。
両方のタイマーは同時に開始し、修飾子の記述順序には依存しません。.wait(2).next(2) と .next(2).wait(2) はどちらも 2 秒後に進行します。.wait(2).next(5) は 5 秒後に自動進行しますが、2 秒以降は新しいクリックで進めます。.wait(5).next(2) は 5 秒まで進めません。.wait.next は推定読書時間の終了後に自動進行します。#AUTO やホストの自動再生でも最低待機時間を守ります。
.skippable(false[, t]) の制限中のクリックも破棄され、制限解除時や全文表示後に実行されることはありません。
インライン書式
Section titled “インライン書式”*斜体*、**太字**、~~取り消し線~~、[書庫]{しょこ} を使えます。現在の脱糖処理は <ruby="しょこ">書庫</ruby> などのタグ文字列を出力し、独立した Ruby 構造体を出力しません。ネイティブタグもそのまま渡され、対応可否は描画側が決めます。
予約文字をそのまま表示する場合はバックスラッシュでエスケープします。Markdown の見出し、リスト、コード囲みをセリフ構造として使わないでください。Web と Unity のリッチテキスト表示はそれぞれ検証が必要です。
