紙芝居DSL 4.0 Schemaリファレンス

Copyright © 2026 Hiroya Kubo. この文書はCC BY-SA 4.0で提供します。

対象: DSL 4.0台本の作成、構造・制約の確認を行う方
対象仕様: kamishibai: '4.0'\

この文書は、台本の項目や命令について正確な値を検索するための仕様一覧です。先頭から読むチュートリアルではありません。 初めて作品を作る場合は、先に「紙芝居を作る」チュートリアルを行い、機能を 増やすときに紙芝居DSL 4.0 台本作成ガイドの必要な節をお読みください。

文書状態: 固定実装基準を説明するSchemaリファレンス(正式リリースの操作資料ではない)
Schema固定commit: 29c0dea
Schema SHA-256: 46ff159c29e13704d707dae8e0d2ad3a146b6aa8a68a968614e6ef56d112f135

権威関係と配布状態: 2026年8月20日時点でv4.0.0-rc.8はprereleaseとして公開されていますが、 正式なv4.0.0ではありません。 同一の上流完成commitに含まれる規範JSON Schema、表層仕様、適合実装・testを固定しています。 Schemaはruntime実装から生成しません。公開アプリ、配布artifact、 feature flagがDSL 4.0を有効にしているかは利用するreleaseごとに確認してください。

このリファレンスについて

この文書は、固定snapshotのDSL 4.0 JSON SchemaとCC BY-SA 4.0の日本語Annotationから 決定的に生成しています。型、必須性、既定値、数値範囲、列挙値、patternはSchemaから取得し、説明、掲載順、 注意事項、例はAnnotationで管理します。Schemaで定義される項目についてSchemaと生成物が異なる場合はSchemaを 優先します。include文はSchema検証前に処理されるためJSON Schema外であり、固定した表層仕様と実装に基づいて掲載します。

使い方: 作成中に分からない項目や命令が出たとき、その項目の節だけを開きます。表中の「field」は 台本の項目、「asset」は画像・音声などの素材、「action」は登場人物や舞台への命令を表します。

  • 上流repository: kubohiroya/tm-kamishibai
  • Schema path: schema/dsl-4.schema.json
  • 上流commit日時: 2026-08-20T20:09:38+09:00
  • 掲載範囲: トップレベル13 field、action 24種類、Annotation 93項目
  • 更新方法: pnpm docs:dsl4:sync -- --repository ../tm-kamishibai --commit <commit>
  • 差分確認: pnpm docs:dsl4:check

表中の「必須」は、そのobjectまたは形式を選んだ場合の必須性です。stableIdなどの任意fieldは、 再読み込みや診断位置の安定化に必要かを作品ごとに判断してください。Schema項目の例は各Schema断片を機械検証し、 include文の例はYAMLとして構文検証しています。アセットやシーン間の参照整合性は、source frontendまたは preview/buildでも別途確認する必要があります。

前処理

include文は台本を複数ファイルへ分けるための構文です。JSON Schemaのトップレベルfieldではないため、 指定したファイルを読み込んで一つの台本へ結合した後、 include文を取り除いてSchema検証へ渡します。

include — 別の台本ファイルを読み込む

台本を複数ファイルに分けるとき、現在のファイルから読み込む相対pathを指定します。一件は文字列、複数件はlistで書きます。

Schema位置: JSON Schema外(Schema検証前に処理)

  • includeはJSON Schemaのfieldではなく、Schema検証前に処理されます。
  • dsl4SourceIncludesまたはCLIの--enable-source-includesを明示的に有効にした環境だけで使用できます。
  • pathは記述したファイルを基準にproject内へ解決し、循環、重複宣言、root外path、件数・byte数・深さの上限違反はエラーになります。
  • kamishibaiは起点の台本だけに書きます。

書式例:

include:
  - chapters/opening.k4.yml
  - chapters/ending.k4.yml

トップレベル構造

include文で指定したファイルを読み込み、結合した後にSchema検証へ渡すroot mappingで使用できるfieldです。Schemaの additionalProperties: false により、ここにないfieldは受理されません。

kamishibai — DSL version

文書がDSL 4.0であることを文字列で宣言します。引用符を外すとYAMLの数値になるため受理されません。

Schema位置: #/properties/kamishibai

field/形式 必須性 既定値・制約
必須 固定値 4.0

kamishibai fieldの値:

'4.0'

assets — asset登録

背景、音、costume、ポーズモデル、app shell UI用画像へ安定したIDを割り当てます。実体の指定方法はasset種別を参照してください。

Schema位置: #/properties/assets

field/形式 必須性 既定値・制約
任意のID key 任意 文字列(compactAsset) または object または object または object(namedBackdrop) または object または object または object(namedSound) または object または object または object(namedCostume) または object または object(namedPoseModel) または object または object(namedImage)(asset

assets fieldの値:

Beach: backdrop
HeroIdle: costume:Hero
CameraMenuButton:
  kind: image
  file: select-camera.svg
  loading: eager

actors — actor初期costume

actor IDを、同じactorをtargetにするcostume asset IDへ対応付けます。参照整合性は意味検証でも確認します。

Schema位置: #/properties/actors

field/形式 必須性 既定値・制約
任意のID key 任意 文字列(literalId)(assetId

actors fieldの値:

Hero: HeroIdle

cover — 表紙

表紙に使う背景と任意のBGMを指定します。背景はbackdrop、BGMはsound assetを参照します。

Schema位置: #/properties/cover

field/形式 必須性 既定値・制約
backdrop 必須 文字列(literalId)(assetId
bgm 任意 文字列(literalId)(assetId

cover fieldの値:

backdrop: Title
bgm: Theme

textStyles — SVG Text style

Actor.setTextから参照する名前付きstyleを登録します。旧Text Assetの定義とは互換ではありません。

Schema位置: #/properties/textStyles

field/形式 必須性 既定値・制約
任意のID key 任意 object(textStyle 未知field不可

textStyles fieldの値:

caption:
  color: '#ffffff'
  size: 28
  align: center

bubbleStyles — 吹き出しstyle

Actor.sayActor.thinkから参照する文字送り、配置、見た目、portrait、音、animationを名前付きで再利用・合成します。

Schema位置: #/properties/bubbleStyles

field/形式 必須性 既定値・制約
任意のID key 任意 object(bubbleStyle 未知field不可

bubbleStyles fieldの値:

Typing:
  characterIntervalSeconds: 0.05
Hero style:
  styles:
    - Typing
  placement: FOOTER_LIKE
  visualStyle: NORMAL

bubbleClosePolicies — 吹き出し終了条件

Actor.sayActor.thinkから参照する終了条件を名前付きで登録します。秒数、advance入力、または両者の先着を再利用できます。

Schema位置: #/properties/bubbleClosePolicies

field/形式 必須性 既定値・制約
任意のID key 任意 object(bubbleClosePolicy 未知field不可
  • waitFor: advanceはステージのprimary pointer/tapまたは修飾キーを伴わないキー入力で完了します。
  • secondswaitForを両方指定すると、先に成立した方で吹き出しを閉じます。
  • policyの継承・合成は行わず、actionはclosePolicyで1件だけ参照します。

bubbleClosePolicies fieldの値:

after-3-seconds:
  seconds: 3
user-advance:
  waitFor: advance
advance-or-timeout:
  seconds: 10
  waitFor: advance

variables — runtime変数

条件式やcustom actionへ渡すstory変数の初期値を定義します。値は文字列、数値、真偽値に限定されます。

Schema位置: #/properties/variables

field/形式 必須性 既定値・制約
任意のID key 任意 文字列 または 数値 または 真偽値(variableValue
  • cameraの物理device ID、UIの選択状態、DOMやlistenerはstory変数へ保存しません。これらはapp shellがsession内だけで管理します。

variables fieldの値:

score: 0
ready: false

loading — 読み込み画面

asset準備中に表示する背景と、一つ以上のcostume列を指定します。

Schema位置: #/properties/loading

field/形式 必須性 既定値・制約
backdrop 必須 文字列(literalId)(assetId
costumes 必須 文字列(literalId)(assetId)の配列 1項目以上

loading fieldの値:

backdrop: Loading
costumes:
  - Spinner1
  - Spinner2

poseRecognition — ポーズ認識設定

認識中の任意の音、モデル初期化、判定方法、feedback、プレイ中にポーズ待ちをskipできるか、camera previewの表示と任意UIをまとめます。idle音とcharge音は独立して省略できます。

Schema位置: #/properties/poseRecognition

field/形式 必須性 既定値・制約
idleSound 任意 文字列(literalId)(assetId
chargeSound 任意 文字列(literalId)(assetId
modelInitialization 任意 object(poseModelInitialization 未知field不可
sequence 任意 object(poseSequenceRecognition 未知field不可
selection 任意 object(poseSelectionRecognition 未知field不可
feedback 任意 object(poseFeedback 未知field不可
navigation 任意 object(poseNavigation 未知field不可
preview 任意 object(posePreview 未知field不可

poseRecognition fieldの値:

idleSound: PoseIdle
chargeSound: PoseCharge
modelInitialization:
  policy: latest-needed
  parallel: true
feedback:
  mode: presenter
navigation:
  allowSkip: true
preview:
  mirroring: mirrored
  overlay:
    visible: true
    minimumConfidence: 0.5
  controls:
    cameraMenu:
      position: bottom-center
      opacity: 0.8
      buttonAsset: CameraMenuButton

controls — 操作profile

実行環境ごとのkeymapを定義し、キーをnavigationまたはhistory操作へ割り当てます。

Schema位置: #/properties/controls

field/形式 必須性 既定値・制約
keymaps 必須 mapping 1 field以上

controls fieldの値:

keymaps:
  presenter:
    Space: navigation.nextAction
    ArrowLeft: history.previousAction

branches — 条件分岐

上から評価する条件と遷移先を名前付きで登録します。各分岐にはelse規則を一つ含めます。

Schema位置: #/properties/branches

field/形式 必須性 既定値・制約
任意のID key 任意 object(conditionRule) または object(elseRule)の配列(branchRules 1項目以上

branches fieldの値:

result:
  - if: score > 0
    goto: success
  - else: retry

scenes — scene定義

一つ以上のsceneを記述します。短縮形のaction配列と、poseModelを持てるlong formがあります。

Schema位置: #/properties/scenes

field/形式 必須性 既定値・制約
任意のID key 1件以上 object(stageAction) または object(bgmAction) または object(soundAction) または object(waitAction) または object(debuggerAction) または object(broadcastMessageAndWaitAction) または object(transitionAction) または object(gotoAction) または object(branchAction) または object(keyInputAction) または object(touchInputAction) または object(poseInputAction) または mapping(showAction) または mapping(setTransparencyAction) または mapping(moveToAction) または mapping(sayAction) または mapping(thinkAction) または mapping(setSkinAction) または mapping(hideAction) または mapping(setLayerAction) または mapping(loopAction) または mapping(setTextAction) または mapping(poseAction) または mapping(customActorAction)(action)の配列(actions) または object(longScene)(scene

scenes fieldの値:

opening:
  - stage: Beach
  - wait: 1

asset種別

assetは短縮文字列または名前付きobjectで記述します。名前付きobjectでは、project内asset名、相対file、または明示的なremote sourceのいずれか一つを選びます。

assetで選べる形式

各asset IDの値は、短縮形式、背景、音、costume、ポーズモデルのいずれかです。

Schema位置: #/$defs/asset

field/形式 必須性 既定値・制約
形式1 いずれか一つ 文字列(compactAsset pattern ^(?:backdrop\|sound\|costume:[\p{L}_][\p{L}\p{N}_-]*)$
形式2 いずれか一つ object または object または object(namedBackdrop 未知field不可
形式3 いずれか一つ object または object または object(namedSound 未知field不可
形式4 いずれか一つ object または object または object(namedCostume 未知field不可
形式5 いずれか一つ object または object(namedPoseModel 未知field不可
形式6 いずれか一つ object または object(namedImage 未知field不可
  • 短縮形式はproject内に同名のassetがある場合に使います。
  • remote sourceはHTTPS URLを指定し、内容を固定する場合はSHA-256、content type、byte sizeを三つとも指定します。

Schemaで検証できる値の例:

backdrop

短縮asset

backdropsound、または costume:<actor ID> でproject内の同名assetを参照します。

Schema位置: #/$defs/compactAsset

field/形式 必須性 既定値・制約
必須 文字列 pattern ^(?:backdrop\|sound\|costume:[\p{L}_][\p{L}\p{N}_-]*)$

Schemaで検証できる値の例:

costume:Hero

名前付き背景

背景をproject内の名前、project内相対file、またはremote sourceから読み込みます。bitmapでは論理解像度を1倍または2倍で指定できます。

Schema位置: #/$defs/namedBackdrop

field/形式 必須性 既定値・制約
kind 必須 固定値 backdrop
name 任意 文字列 1文字以上
file 任意 文字列(filePath 1文字以上、pattern ^(?!/)(?![A-Za-z]:[\\/])(?![A-Za-z][A-Za-z0-9+.-]*:)[^\\\u0000]+$
source 任意 object(remoteAssetSource 未知field不可
bitmapResolution 任意 1 / 2 既定値 1
delivery 任意 embedded / remotedeliveryPolicy 既定値 embedded
loading 任意 eager / lazyloadingPolicy 既定値 eager
retention 任意 scene / storyretentionPolicy

Schemaで検証できる値の例:

kind: backdrop
file: beach.png
bitmapResolution: 2
loading: eager
retention: story

名前付き音

音をproject内の名前、project内相対file、または固定remote sourceから読み込みます。

Schema位置: #/$defs/namedSound

field/形式 必須性 既定値・制約
kind 必須 固定値 sound
name 任意 文字列 1文字以上
file 任意 文字列(filePath 1文字以上、pattern ^(?!/)(?![A-Za-z]:[\\/])(?![A-Za-z][A-Za-z0-9+.-]*:)[^\\\u0000]+$
source 任意 object(remoteAssetSource 未知field不可
delivery 任意 embedded / remotedeliveryPolicy 既定値 embedded
loading 任意 eager / lazyloadingPolicy 既定値 eager
retention 任意 scene / storyretentionPolicy

Schemaで検証できる値の例:

kind: sound
name: Theme
loading: lazy

名前付きcostume

costumeではtarget actorを必ず指定します。bitmapでは論理解像度を1倍または2倍で指定でき、参照側actorとの一致も意味検証の対象です。

Schema位置: #/$defs/namedCostume

field/形式 必須性 既定値・制約
kind 必須 固定値 costume
target 必須 文字列(id)(actorId
name 任意 文字列 1文字以上
file 任意 文字列(filePath 1文字以上、pattern ^(?!/)(?![A-Za-z]:[\\/])(?![A-Za-z][A-Za-z0-9+.-]*:)[^\\\u0000]+$
source 任意 object(remoteAssetSource 未知field不可
bitmapResolution 任意 1 / 2 既定値 1
delivery 任意 embedded / remotedeliveryPolicy 既定値 embedded
loading 任意 eager / lazyloadingPolicy 既定値 eager
retention 任意 scene / storyretentionPolicy

Schemaで検証できる値の例:

kind: costume
target: Hero
file: hero-happy.png
bitmapResolution: 2

名前付きポーズモデル

ポーズモデルは埋め込む相対file、通常のTurboWarp TM directory URL、または検証付きremote archiveで指定します。project内の表示名だけを使う形式はありません。

Schema位置: #/$defs/namedPoseModel

field/形式 必須性 既定値・制約
kind 必須 固定値 poseModel
file 任意 文字列(filePath 1文字以上、pattern ^(?!/)(?![A-Za-z]:[\\/])(?![A-Za-z][A-Za-z0-9+.-]*:)[^\\\u0000]+$
source 任意 object(remotePoseModelSource 未知field不可
delivery 任意 embedded / remotedeliveryPolicy 既定値 embedded
loading 任意 eager / lazyloadingPolicy 既定値 eager
retention 任意 scene / storyretentionPolicy

Schemaで検証できる値の例:

kind: poseModel
delivery: remote
loading: lazy
source:
  url: https://example.com/models/rescue/

名前付きUI画像

app shellが表示するpreview control iconを、project内相対fileまたは固定remote sourceとして登録します。

Schema位置: #/$defs/namedImage

field/形式 必須性 既定値・制約
kind 必須 固定値 image
file 任意 文字列(filePath 1文字以上、pattern ^(?!/)(?![A-Za-z]:[\\/])(?![A-Za-z][A-Za-z0-9+.-]*:)[^\\\u0000]+$
source 任意 object(remoteAssetSource 未知field不可
delivery 任意 embedded / remotedeliveryPolicy 既定値 embedded
loading 任意 eager / lazyloadingPolicy 既定値 eager
retention 任意 scene / storyretentionPolicy
  • camera preview controlから参照する画像は、preview開始時に必要なためloading: eagerにします。

Schemaで検証できる値の例:

kind: image
file: select-camera.svg
loading: eager

actor・表示・認識・分岐設定

トップレベルfieldが参照するobjectの詳細です。表の必須性は、それぞれのobjectを記述した場合に適用されます。

actor mapping

任意のactor IDを初期costume asset IDへ対応付けます。

Schema位置: #/$defs/actors

field/形式 必須性 既定値・制約
任意のID key 任意 文字列(literalId)(assetId

Schemaで検証できる値の例:

Hero: HeroIdle

表紙設定

表紙背景は必須、BGMは任意です。asset種別の一致は意味検証で確認します。

Schema位置: #/$defs/cover

field/形式 必須性 既定値・制約
backdrop 必須 文字列(literalId)(assetId
bgm 任意 文字列(literalId)(assetId

Schemaで検証できる値の例:

backdrop: Title
bgm: Theme

SVG Text style

背景色、文字色、font、size、文字揃えを名前付きstyleとして再利用します。吹き出しの位置はbubble styleで指定します。

Schema位置: #/$defs/textStyle

field/形式 必須性 既定値・制約
background 任意 文字列
color 任意 文字列
font 任意 文字列 1文字以上
size 任意 数値 0より大きい
align 任意 left / center / right

Schemaで検証できる値の例:

background: '#00000080'
color: '#ffffff'
font: Noto Sans JP
size: 28
align: center

吹き出しstyle

文字送り、配置、見た目、portrait、音、animationを再利用できる部分styleとして定義します。stylesで既存styleを順に合成できます。

Schema位置: #/$defs/bubbleStyle

field/形式 必須性 既定値・制約
styles 任意 文字列(bubbleStyleName)の配列 1項目以上
textStyle 任意 文字列(id)(styleId
maxWidth 任意 数値 0より大きい
textLocale 任意 文字列 1文字以上
placement 任意 up / up-up-right / up-right / right-up-right / right / right-down-right / down-right / down-down-right / down / down-down-left / down-left / left-down-left / left / left-up-left / up-left / up-up-left / north / north-northeast / northeast / east-northeast / east / east-southeast / southeast / south-southeast / south / south-southwest / southwest / west-southwest / west / west-northwest / northwest / north-northwest / HEADER_LIKE / CENTER / FOOTER_LIKE または 数値
distance 任意 数値 0以上
tailLength 任意 数値 0より大きい
offset 任意 使用不可の配列 または 使用不可の配列
visualStyle 任意 NORMAL / THINKING / DREAMING / YELLING / OFF_PANEL / WAVY / WHISPERING / ANNOUNCEMENT / NARRATION / NO_BUBBLE
portrait 任意 object(bubblePortrait 未知field不可
characterIntervalSeconds 任意 数値 0より大きい
characterSound 任意 文字列(literalId)(assetId
noSoundCharacters 任意 文字列 1文字以上
restCharacters 任意 文字列 1文字以上
restCharacterIntervalSeconds 任意 数値 0より大きい
continueIndicator 任意 object(bubbleContinueIndicator 未知field不可
reveal 任意 object(bubbleReveal 未知field不可
audio 任意 object(bubbleAudio 未知field不可
showAnimation 任意 object(bubbleMotion 未知field不可
hideAnimation 任意 object(bubbleMotion 未知field不可
visibleAnimations 任意 object(bubbleMotion)の配列 1項目以上
  • 各styleは部分設定として記述できます。参照先を順に合成したeffective styleに対する依存関係は意味検証で確認します。

Schemaで検証できる値の例:

styles:
  - Typing
textStyle: caption
placement: FOOTER_LIKE
visualStyle: NARRATION
characterIntervalSeconds: 0.05
continueIndicator:
  frames: [Next1, Next2]
  frameIntervalSeconds: 0.12

吹き出しstyle mapping

人が読めるstyle名を吹き出しstyleへ対応付けます。Actor.sayActor.thinkstyles配列から参照します。

Schema位置: #/$defs/bubbleStyles

field/形式 必須性 既定値・制約
任意のID key 任意 object(bubbleStyle 未知field不可

Schemaで検証できる値の例:

Typing:
  characterIntervalSeconds: 0.05
Hero style:
  styles:
    - Typing
  placement: FOOTER_LIKE

入力待ちindicator

全文表示後にadvance入力を待っている間、2枚以上のimage assetを順番に表示します。

Schema位置: #/$defs/bubbleContinueIndicator

field/形式 必須性 既定値・制約
frames 必須 文字列(literalId)(assetId)の配列 2項目以上
frameIntervalSeconds 必須 数値 0より大きい

Schemaで検証できる値の例:

frames: [Next1, Next2]
frameIntervalSeconds: 0.12

portrait frame animation

portraitのまばたきや口パクに使う1枚以上のimage assetと表示間隔です。

Schema位置: #/$defs/bubbleFrameAnimation

field/形式 必須性 既定値・制約
frames 必須 文字列(literalId)(assetId)の配列 1項目以上
frameIntervalSeconds 必須 数値 0より大きい

Schemaで検証できる値の例:

frames: [EyesOpen, EyesClosed]
frameIntervalSeconds: 0.4

吹き出しportrait

基本画像と、任意のまばたき・口パクframe animationを指定します。

Schema位置: #/$defs/bubblePortrait

field/形式 必須性 既定値・制約
base 必須 文字列(literalId)(assetId
blink 任意 object(bubbleFrameAnimation 未知field不可
lipSync 任意 object(bubbleFrameAnimation 未知field不可

Schemaで検証できる値の例:

base: HeroFace
blink:
  frames: [EyesOpen, EyesClosed]
  frameIntervalSeconds: 0.4
lipSync:
  frames: [MouthClosed, MouthOpen]
  frameIntervalSeconds: 0.08

本文の段階表示

文字、単語、行、blockの単位と、layout、間隔、任意の効果音を指定します。

Schema位置: #/$defs/bubbleReveal

field/形式 必須性 既定値・制約
unit 必須 CHARACTER / WORD / LINE / BLOCK
delimiters 任意 文字列 1文字以上
showDelimiters 任意 真偽値
layout 任意 DYNAMIC / RESERVED
intervalSeconds 任意 数値 0以上
sound 任意 文字列(literalId)(assetId

Schemaで検証できる値の例:

unit: CHARACTER
layout: RESERVED
intervalSeconds: 0.05
sound: Typewriter

吹き出し音声

音声、本文の段階表示、完了時に使うsound assetを個別に指定します。

Schema位置: #/$defs/bubbleAudio

field/形式 必須性 既定値・制約
voice 任意 文字列(literalId)(assetId
reveal 任意 文字列(literalId)(assetId
finish 任意 文字列(literalId)(assetId

Schemaで検証できる値の例:

voice: HeroVoice
reveal: Typewriter
finish: ContinueSound

吹き出しanimation

表示・非表示・表示中に適用するanimation名と時間、easing、方向などを指定します。

Schema位置: #/$defs/bubbleMotion

field/形式 必須性 既定値・制約
name 必須 fadeIn / fadeOut / floatIn / floatOut / zoomIn / zoomOut / riseUp / sink / shake / explode / animateBubbleShape
durationSeconds 任意 数値 0以上
ease 任意 linear / easeIn / easeOut / easeInOut
direction 任意 数値 または 文字列
count 任意 整数 1以上
relativeScale 任意 数値 0以上
speed 任意 数値 0以上
visualStyle 任意 NORMAL / THINKING / DREAMING / YELLING / OFF_PANEL / WAVY / WHISPERING / ANNOUNCEMENT / NARRATION / NO_BUBBLE

Schemaで検証できる値の例:

name: floatOut
durationSeconds: 0.15
ease: easeOut
direction: down

runtime変数mapping

変数IDごとに文字列、数値、真偽値の初期値を保持します。objectや配列はcore変数値ではありません。

Schema位置: #/$defs/variables

field/形式 必須性 既定値・制約
任意のID key 任意 文字列 または 数値 または 真偽値(variableValue
  • 端末固有のcamera device IDやpreview controlの一時状態はこのmappingへ永続化せず、app shellのsession stateとして扱います。

Schemaで検証できる値の例:

message: start
score: 0
ready: true

読み込み画面設定

読み込み用背景と、一つ以上のcostumeを指定します。

Schema位置: #/$defs/loadingScreen

field/形式 必須性 既定値・制約
backdrop 必須 文字列(literalId)(assetId
costumes 必須 文字列(literalId)(assetId)の配列 1項目以上

Schemaで検証できる値の例:

backdrop: Loading
costumes:
  - Spinner1

ポーズ認識全体設定

共通音と、モデル初期化、sequence、selection、feedback、navigation、camera previewの任意設定をまとめます。

Schema位置: #/$defs/poseRecognition

field/形式 必須性 既定値・制約
idleSound 任意 文字列(literalId)(assetId
chargeSound 任意 文字列(literalId)(assetId
modelInitialization 任意 object(poseModelInitialization 未知field不可
sequence 任意 object(poseSequenceRecognition 未知field不可
selection 任意 object(poseSelectionRecognition 未知field不可
feedback 任意 object(poseFeedback 未知field不可
navigation 任意 object(poseNavigation 未知field不可
preview 任意 object(posePreview 未知field不可

Schemaで検証できる値の例:

idleSound: PoseIdle
chargeSound: PoseCharge
modelInitialization:
  policy: latest-needed
  parallel: true
sequence:
  confidenceThreshold: 0.6
feedback:
  mode: scratchMirror
navigation:
  allowSkip: false
preview:
  mirroring: mirrored
  overlay:
    visible: true

Poseモデル初期化

従来互換のlegacyと、不要になった初期化をcancelして最新要求だけを準備するlatest-neededを選びます。camera準備とモデル準備の並行化も明示します。

Schema位置: #/$defs/poseModelInitialization

field/形式 必須性 既定値・制約
policy 任意 legacy / latest-needed 既定値 legacy
parallel 任意 真偽値 既定値 false
  • 省略時はpolicyがlegacy、parallelがfalseです。
  • latest-neededでは重い初期化を実行中1件と最新待機1件までに制限します。
  • 実行にはTurboWarp TM 1.10.0以降が必要です。4.0.0-rc.8はTurboWarp TM 1.12.0をexact pinします。

Schemaで検証できる値の例:

policy: latest-needed
parallel: true

sequence認識設定

連続ポーズのconfidence閾値、満点保持時間、idle時のcharge量を調整します。

Schema位置: #/$defs/poseSequenceRecognition

field/形式 必須性 既定値・制約
confidenceThreshold 任意 数値 既定値 0.5、0以上、1以下
fullConfidenceHoldSeconds 任意 数値 既定値 1、0より大きい
idleChargePerSecond 任意 数値 既定値 0、0以上

Schemaで検証できる値の例:

confidenceThreshold: 0.6
fullConfidenceHoldSeconds: 1.2
idleChargePerSecond: 0

selection認識設定

複数候補の蓄積速度、減衰、決定scoreを調整します。

Schema位置: #/$defs/poseSelectionRecognition

field/形式 必須性 既定値・制約
accumulationPerSecond 任意 数値 既定値 1、0以上
decayPerSecond 任意 数値 既定値 0.9、0以上、1以下
scoreThreshold 任意 数値 既定値 0、0以上

Schemaで検証できる値の例:

accumulationPerSecond: 1
decayPerSecond: 0.9
scoreThreshold: 2

ポーズfeedback mode

Scratch mirror、Scratch binding、presenter UIのどこへ認識状態を反映するかを選びます。

Schema位置: #/$defs/poseFeedback

field/形式 必須性 既定値・制約
mode 必須 scratchMirror / scratchBinding / presenter

Schemaで検証できる値の例:

mode: presenter

ポーズ中のnavigation

プレイ中にポーズ待ちをskipできるかを明示します。

Schema位置: #/$defs/poseNavigation

field/形式 必須性 既定値・制約
allowSkip 必須 真偽値

Schemaで検証できる値の例:

allowSkip: true

camera previewのstory設定

preview canvasの左右反転と任意の関節・ボーンoverlayをstory既定として指定し、必要な場合だけapp shell所有の操作UIを構成します。

Schema位置: #/$defs/posePreview

field/形式 必須性 既定値・制約
mirroring 必須 mirrored / unmirrored
overlay 任意 object(poseOverlay 1 field以上、未知field不可
controls 任意 object(posePreviewControls 1 field以上、未知field不可
  • mirroringの省略時はmirroredです。操作UIはcontrolsを省略すると生成されません。
  • overlayを省略した既存台本では関節とボーンを表示しません。
  • この設定はpreview canvasの表示だけを変更し、認識frame、confidence、sequence/selection判定には影響しません。

Schemaで検証できる値の例:

mirroring: mirrored
overlay:
  visible: true
  jointStyles:
    leftWrist:
      color: '#ff00aa'
      opacity: 0.8
      radius: 6
  boneStyle:
    color: '#00e5ff'
    opacity: 0.9
    width: 3
  minimumConfidence: 0.5
  confidenceScaling:
    jointOpacity: true
    jointRadius: false
    boneOpacity: true
    boneWidth: false
controls:
  mirroring:
    position: top-center
    opacity: 0.8
    assets:
      showMirrored: ShowMirroredButton
      showUnmirrored: ShowUnmirroredButton

関節とボーンのoverlay

TurboWarp TM 1.12.0のSVG overlayについて、表示、関節別style、共通bone style、最低confidence、confidence連動を宣言します。

Schema位置: #/$defs/poseOverlay

field/形式 必須性 既定値・制約
visible 任意 真偽値 既定値 true
jointStyles 任意 mapping 1 field以上
boneStyle 任意 object(poseBoneStyle 1 field以上、未知field不可
minimumConfidence 任意 数値 既定値 0.5、0以上、1以下
confidenceScaling 任意 object(poseOverlayConfidenceScaling 1 field以上、未知field不可
  • overlayを記述した場合の省略値はvisibleがtrue、minimumConfidenceが0.5です。overlay自体を省略した既存台本は非表示のままです。
  • previewを隠すとoverlayも隠れます。overlayだけを隠しても認識は停止しません。認識停止では描画を消去し、camera停止ではSVG要素も破棄します。
  • 実行にはTurboWarp TM 1.12.0以降が必要です。専用feature flagはなく、問題時はoverlay設定を台本から削除すると既存台本と同じ非表示へ戻ります。

Schemaで検証できる値の例:

visible: true
jointStyles:
  leftWrist:
    color: '#ff00aa'
    opacity: 0.8
    radius: 6
boneStyle:
  color: '#00e5ff'
  opacity: 0.9
  width: 3
minimumConfidence: 0.5
confidenceScaling:
  jointOpacity: true
  jointRadius: false
  boneOpacity: true
  boneWidth: false

関節別style

一つのPoseNet関節を描く円のCSS color、opacity、radiusから一つ以上を上書きします。

Schema位置: #/$defs/poseJointStyle

field/形式 必須性 既定値・制約
color 任意 文字列 既定値 #00e5ff、pattern \S
opacity 任意 数値 既定値 1、0以上、1以下
radius 任意 数値 既定値 4、0以上
  • 省略値はcolorが#00e5ff、opacityが1、radiusが4です。opacityは0〜1、radiusは0以上の有限値です。

Schemaで検証できる値の例:

color: '#ff00aa'
opacity: 0.8
radius: 6

ボーン共通style

12本の標準PoseNet bone connectionで共有するCSS color、opacity、線幅から一つ以上を上書きします。

Schema位置: #/$defs/poseBoneStyle

field/形式 必須性 既定値・制約
color 任意 文字列 既定値 #00e5ff、pattern \S
opacity 任意 数値 既定値 0.9、0以上、1以下
width 任意 数値 既定値 3、0以上
  • 省略値はcolorが#00e5ff、opacityが0.9、widthが3です。opacityは0〜1、widthは0以上の有限値です。

Schemaで検証できる値の例:

color: '#00e5ff'
opacity: 0.9
width: 3

confidenceによる見た目の拡縮

関節のopacityとradius、boneのopacityとwidthをconfidenceに応じて個別に0から設定値まで変化させます。

Schema位置: #/$defs/poseOverlayConfidenceScaling

field/形式 必須性 既定値・制約
jointOpacity 任意 真偽値 既定値 false
jointRadius 任意 真偽値 既定値 false
boneOpacity 任意 真偽値 既定値 false
boneWidth 任意 真偽値 既定値 false
  • 四項目の省略値はすべてfalseです。関節はその関節のconfidence、boneは両端のうち低いconfidenceを倍率に使います。

Schemaで検証できる値の例:

jointOpacity: true
jointRadius: false
boneOpacity: true
boneWidth: false

PoseNet関節名

jointStylesのkeyに指定できる17個のPoseNet関節名です。

Schema位置: #/$defs/poseKeypointName

field/形式 必須性 既定値・制約
必須 nose / leftEye / rightEye / leftEar / rightEar / leftShoulder / rightShoulder / leftElbow / rightElbow / leftWrist / rightWrist / leftHip / rightHip / leftKnee / rightKnee / leftAnkle / rightAnkle
  • nose、leftEye、rightEye、leftEar、rightEar、leftShoulder、rightShoulder、leftElbow、rightElbow、leftWrist、rightWrist、leftHip、rightHip、leftKnee、rightKnee、leftAnkle、rightAnkleを指定できます。

Schemaで検証できる値の例:

leftWrist

scene固有のpreview表示

長形式sceneで左右反転だけを上書きします。上書きはそのsceneだけに適用され、次のsceneへ持ち越しません。

Schema位置: #/$defs/scenePosePreview

field/形式 必須性 既定値・制約
mirroring 必須 mirrored / unmirrored

Schemaで検証できる値の例:

mirroring: unmirrored

preview controlの配置

preview表示矩形を基準に、上下左右と四隅を含む8個のanchorから選びます。

Schema位置: #/$defs/posePreviewControlPosition

field/形式 必須性 既定値・制約
必須 top-center / bottom-center / left-center / right-center / top-right / bottom-right / top-left / bottom-left

Schemaで検証できる値の例:

bottom-center

左右反転button

押した後のtarget stateを示す2画像、配置、任意のopacityで反転buttonを構成します。

Schema位置: #/$defs/posePreviewMirroringControl

field/形式 必須性 既定値・制約
position 必須 top-center / bottom-center / left-center / right-center / top-right / bottom-right / top-left / bottom-leftposePreviewControlPosition
opacity 任意 数値 既定値 1、0以上、1以下
assets 必須 object 未知field不可
  • 現在がunmirroredならshowMirrored、mirroredならshowUnmirroredを表示し、操作成功後だけiconを切り替えます。

Schemaで検証できる値の例:

position: top-center
opacity: 0.8
assets:
  showMirrored: ShowMirroredButton
  showUnmirrored: ShowUnmirroredButton

camera選択menu button

camera選択menuを開くbutton画像、配置、任意のopacityを指定します。

Schema位置: #/$defs/posePreviewCameraMenuControl

field/形式 必須性 既定値・制約
position 必須 top-center / bottom-center / left-center / right-center / top-right / bottom-right / top-left / bottom-leftposePreviewControlPosition
opacity 任意 数値 既定値 1、0以上、1以下
buttonAsset 必須 文字列(literalId)(assetId
  • menuは開くたびに利用可能なcameraを列挙します。物理device IDは台本やruntime変数へ保存しません。

Schemaで検証できる値の例:

position: bottom-center
opacity: 0.8
buttonAsset: CameraMenuButton

camera preview操作UI

左右反転buttonとcamera選択menuのうち、一つ以上を任意に有効化します。

Schema位置: #/$defs/posePreviewControls

field/形式 必須性 既定値・制約
mirroring 任意 object(posePreviewMirroringControl 未知field不可
cameraMenu 任意 object(posePreviewCameraMenuControl 未知field不可
  • 同じanchorでは左右反転button、camera menuの順に一つのgroupとして並べます。暗黙の標準iconはありません。

Schemaで検証できる値の例:

cameraMenu:
  position: bottom-right
  buttonAsset: CameraMenuButton

操作profile

一つ以上のkeymapを名前付きprofileとして登録します。キー衝突は意味検証でも確認します。

Schema位置: #/$defs/controls

field/形式 必須性 既定値・制約
keymaps 必須 mapping 1 field以上

Schemaで検証できる値の例:

keymaps:
  presenter:
    Space: navigation.nextAction

分岐規則列

条件規則を上から評価し、一つだけ含めたelse規則をfallbackにします。

Schema位置: #/$defs/branchRules

field/形式 必須性 既定値・制約
各項目 1件以上 object(conditionRule) または object(elseRule

Schemaで検証できる値の例:

- if: score >= 10
  goto: success
- else: retry

共通型と制約

複数のfieldやactionから参照される値の型です。ID、path、key codeのpatternは移行時に特に確認してください。

ID

actor、style、variable、branchなどの構文識別子です。Unicode文字またはunderscoreで始まり、以降に文字、数字、underscore、hyphenを使えます。

Schema位置: #/$defs/id

field/形式 必須性 既定値・制約
必須 文字列 pattern ^[\p{L}_][\p{L}\p{N}_-]*$

Schemaで検証できる値の例:

Hero_1

asset・sceneのliteral ID

Scratch上の名前をそのまま保持できる空でない文字列です。空白や記号を含められ、trimやUnicode正規化を行いません。

Schema位置: #/$defs/literalId

field/形式 必須性 既定値・制約
必須 文字列 1文字以上

Schemaで検証できる値の例:

救助 Scene 1

吹き出しstyle名

内部の空白や日本語を含められる人向けの名前です。先頭・末尾の空白、改行、tab、制御文字は使用できません。

Schema位置: #/$defs/bubbleStyleName

field/形式 必須性 既定値・制約
必須 文字列 1文字以上、pattern ^(?!\s)(?!.*\s$)[^\p{Cc}\p{Cs}\p{Zl}\p{Zp}]+$

Schemaで検証できる値の例:

日本語 ナレーション

安全な相対file path

絶対path、Windows drive path、URL scheme、backslash、NULを許可しないproject内相対pathです。

Schema位置: #/$defs/filePath

field/形式 必須性 既定値・制約
必須 文字列 1文字以上、pattern ^(?!/)(?![A-Za-z]:[\\/])(?![A-Za-z][A-Za-z0-9+.-]*:)[^\\\u0000]+$

Schemaで検証できる値の例:

hero.svg

読み込みpolicy

story開始前に読むeagerと、利用時に読むlazyから選びます。

Schema位置: #/$defs/loadingPolicy

field/形式 必須性 既定値・制約
必須 eager / lazy 既定値 eager

Schemaで検証できる値の例:

lazy

保持policy

assetをsceneの範囲で保持するか、story全体で保持するかを指定します。

Schema位置: #/$defs/retentionPolicy

field/形式 必須性 既定値・制約
必須 scene / story

Schemaで検証できる値の例:

story

配布policy

成果物へ埋め込むembeddedと、明示的にURLから取得するremoteから選びます。

Schema位置: #/$defs/deliveryPolicy

field/形式 必須性 既定値・制約
必須 embedded / remote 既定値 embedded

Schemaで検証できる値の例:

remote

remote asset source

HTTPS URLを指定します。内容を固定する場合はSHA-256、content type、byte sizeを三つとも指定します。三項目の一部だけは指定できません。

Schema位置: #/$defs/remoteAssetSource

field/形式 必須性 既定値・制約
url 必須 文字列 pattern ^https://[^\s]+$
integrity 任意 文字列 pattern ^sha256-[0-9a-f]{64}$
contentType 任意 文字列 pattern ^[a-z0-9][a-z0-9!#$&^_.+-]*/[a-z0-9][a-z0-9!#$&^_.+-]*$
size 任意 整数 1以上

Schemaで検証できる値の例:

url: https://example.com/audio.ogg
integrity: sha256-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
contentType: audio/ogg
size: 1024

remote pose model source

通常のTurboWarp TM directoryはHTTPS URLだけで参照できます。検証付きremote archiveにする場合はintegrity、content type、byte sizeを三つとも指定します。

Schema位置: #/$defs/remotePoseModelSource

field/形式 必須性 既定値・制約
url 必須 文字列 pattern ^https://[^\s]+$
integrity 任意 文字列 pattern ^sha256-[0-9a-f]{64}$
contentType 任意 文字列 pattern ^[a-z0-9][a-z0-9!#$&^_.+-]*/[a-z0-9][a-z0-9!#$&^_.+-]*$
size 任意 整数 1以上

Schemaで検証できる値の例:

url: https://example.com/models/rescue/

key code

文字そのものではなく、Schemaが列挙するKeyboardEvent code形式を使用します。

Schema位置: #/$defs/keyCode

field/形式 必須性 既定値・制約
必須 文字列 pattern ^(?:Space\|Enter\|Escape\|Tab\|Backspace\|Delete\|Home\|End\|PageUp\|PageDown\|Arrow(?:Up\|Down\|Left\|Right)\|Digit[0-9]\|Key[A-Z]\|Numpad[0-9]\|F(?:[1-9]\|1[0-2]))$

Schemaで検証できる値の例:

Space

通常の次action/次scene、実行履歴上の前後、リハーサル用のpose/action/scene skipへ操作を割り当てます。

Schema位置: #/$defs/navigationCommand

field/形式 必須性 既定値・制約
必須 navigation.nextAction / navigation.nextScene / rehearsal.skipPose / rehearsal.skipAction / rehearsal.skipScene / history.previousAction / history.previousScene / history.nextScene

Schemaで検証できる値の例:

rehearsal.skipScene

変数・custom引数の値

core schemaで保持できるscalarは文字列、数値、真偽値です。

Schema位置: #/$defs/variableValue

field/形式 必須性 既定値・制約
形式1 いずれか一つ 文字列
形式2 いずれか一つ 数値
形式3 いずれか一つ 真偽値

Schemaで検証できる値の例:

42

sceneとaction列

sceneはaction配列の短縮形、またはposeModelとaction列を持つlong formで記述します。scene間参照は意味検証の対象です。

action配列

各項目にはglobal actionまたはactor actionを一つだけ記述します。

Schema位置: #/$defs/actions

field/形式 必須性 既定値・制約
各項目 任意件数 object(stageAction) または object(bgmAction) または object(soundAction) または object(waitAction) または object(debuggerAction) または object(broadcastMessageAndWaitAction) または object(transitionAction) または object(gotoAction) または object(branchAction) または object(keyInputAction) または object(touchInputAction) または object(poseInputAction) または mapping(showAction) または mapping(setTransparencyAction) または mapping(moveToAction) または mapping(sayAction) または mapping(thinkAction) または mapping(setSkinAction) または mapping(hideAction) または mapping(setLayerAction) または mapping(loopAction) または mapping(setTextAction) または mapping(poseAction) または mapping(customActorAction)(action

Schemaで検証できる値の例:

- stage: Beach
- wait: 1

long form scene

scene固有のposeModelまたはpreview左右反転を指定する場合に、設定とactionsをobjectへまとめます。

Schema位置: #/$defs/longScene

field/形式 必須性 既定値・制約
poseModel 任意 文字列(literalId)(assetId
posePreview 任意 object(scenePosePreview 未知field不可
actions 必須 object(stageAction) または object(bgmAction) または object(soundAction) または object(waitAction) または object(debuggerAction) または object(broadcastMessageAndWaitAction) または object(transitionAction) または object(gotoAction) または object(branchAction) または object(keyInputAction) または object(touchInputAction) または object(poseInputAction) または mapping(showAction) または mapping(setTransparencyAction) または mapping(moveToAction) または mapping(sayAction) または mapping(thinkAction) または mapping(setSkinAction) または mapping(hideAction) または mapping(setLayerAction) または mapping(loopAction) または mapping(setTextAction) または mapping(poseAction) または mapping(customActorAction)(action)の配列(actions
  • posePreviewはそのsceneだけの非stickyな上書きです。次のsceneに指定がなければstory既定へ戻ります。

Schemaで検証できる値の例:

poseModel: StoryPose
posePreview:
  mirroring: unmirrored
actions:
  - wait: 1

sceneで選べる形式

短いaction配列またはlong formのいずれかを使用します。

Schema位置: #/$defs/scene

field/形式 必須性 既定値・制約
形式1 いずれか一つ object(stageAction) または object(bgmAction) または object(soundAction) または object(waitAction) または object(debuggerAction) または object(broadcastMessageAndWaitAction) または object(transitionAction) または object(gotoAction) または object(branchAction) または object(keyInputAction) または object(touchInputAction) または object(poseInputAction) または mapping(showAction) または mapping(setTransparencyAction) または mapping(moveToAction) または mapping(sayAction) または mapping(thinkAction) または mapping(setSkinAction) または mapping(hideAction) または mapping(setLayerAction) または mapping(loopAction) または mapping(setTextAction) または mapping(poseAction) または mapping(customActorAction)(action)の配列(actions
形式2 いずれか一つ object(longScene 未知field不可

Schemaで検証できる値の例:

- wait: 1

scene mapping

一つ以上のscene IDを定義します。通常実行は記述順で最初のsceneから始まります。

Schema位置: #/$defs/scenes

field/形式 必須性 既定値・制約
任意のID key 1件以上 object(stageAction) または object(bgmAction) または object(soundAction) または object(waitAction) または object(debuggerAction) または object(broadcastMessageAndWaitAction) または object(transitionAction) または object(gotoAction) または object(branchAction) または object(keyInputAction) または object(touchInputAction) または object(poseInputAction) または mapping(showAction) または mapping(setTransparencyAction) または mapping(moveToAction) または mapping(sayAction) または mapping(thinkAction) または mapping(setSkinAction) または mapping(hideAction) または mapping(setLayerAction) または mapping(loopAction) または mapping(setTextAction) または mapping(poseAction) または mapping(customActorAction)(action)の配列(actions) または object(longScene)(scene
  • YAML 1.2一般ではmappingのkey順にapplication上の意味はありません(YAML 1.2.2 Mapping Key Order)。DSL 4.0は固有規則として、source YAMLのserialization treeに現れるpair順をscene順として使用します。JSON Schemaはmappingのshapeを検証しますが、この順序セマンティクスは検証しません。
  • scene keyをsortするformatter、serializer、editorを使用しないでください。並べ替え後もSchema検証には成功しますが、台本の実行順が変わります。
  • 現行frontendでは数字だけのscene IDをJavaScript objectへ変換すると数値順に列挙される場合があります。これは意図したDSL仕様ではない既知の実装制約であり、修正までは数字以外を含むscene IDを使用します。

Schemaで検証できる値の例:

opening:
  - wait: 1

Global action

actor名を付けずにstage、音、時間、scene遷移、入力待ちを制御するcore actionです。

stage

背景assetへ切り替えます。短縮値またはstableId付きobjectを使用できます。

Schema位置: #/$defs/stageAction

field/形式 必須性 既定値・制約
stage 必須 文字列(literalId)(assetId) または object(stageArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ 文字列(literalId)(assetId
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

stage: Beach

bgm

BGMとしてsound assetを開始します。

Schema位置: #/$defs/bgmAction

field/形式 必須性 既定値・制約
bgm 必須 文字列(literalId)(assetId) または object(soundArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ 文字列(literalId)(assetId
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

bgm: Theme

sound

効果音としてsound assetを再生します。

Schema位置: #/$defs/soundAction

field/形式 必須性 既定値・制約
sound 必須 文字列(literalId)(assetId) または object(soundArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ 文字列(literalId)(assetId
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

sound:
  stableId: opening-chime
  sound: Chime

wait

指定秒数だけaction列の進行を待ちます。0秒も受理します。

Schema位置: #/$defs/waitAction

field/形式 必須性 既定値・制約
wait 必須 数値 または object(waitArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ 数値 0以上
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

wait: 1.5

debugger

development debug実行でaction開始前に停止する境界です。productionや埋め込み作品では副作用のないno-opです。

Schema位置: #/$defs/debuggerAction

field/形式 必須性 既定値・制約
debugger 必須 Schemaで定義された値

Schemaで検証できる値の例:

debugger:

broadcastMessageAndWait

Scratch/TurboWarpのmessageを送り、そのmessageで開始されたreceiver threadがすべて終了するまで待ちます。

Schema位置: #/$defs/broadcastMessageAndWaitAction

field/形式 必須性 既定値・制約
broadcastMessageAndWait 必須 文字列 または object(broadcastMessageAndWaitArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ 文字列 1文字以上
形式2 いずれか一つ object 未知field不可
  • receiverが終了しない場合は台本も次のactionへ進みません。有限時間で完了する処理へ使用します。

Schemaで検証できる値の例:

broadcastMessageAndWait:
  stableId: play-mini-game
  message: playMiniGame

transition

名前付きeffectを指定秒数で実行します。利用できるeffectはruntime capabilityとも照合します。

Schema位置: #/$defs/transitionAction

field/形式 必須性 既定値・制約
transition 必須 object(transitionArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId
effect 必須 文字列(id pattern ^[\p{L}_][\p{L}\p{N}_-]*$
seconds 必須 数値 0以上

Schemaで検証できる値の例:

transition:
  effect: fadeOut
  seconds: 0.5

goto

指定sceneへ無条件に遷移します。

Schema位置: #/$defs/gotoAction

field/形式 必須性 既定値・制約
goto 必須 文字列(literalId)(sceneId) または object(sceneReferenceArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ 文字列(literalId)(sceneId
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

goto: ending

branch

名前付き分岐規則を評価し、選ばれたsceneへ遷移します。

Schema位置: #/$defs/branchAction

field/形式 必須性 既定値・制約
branch 必須 文字列(id) または object(branchReferenceArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ 文字列(id pattern ^[\p{L}_][\p{L}\p{N}_-]*$
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

branch: result

keyInputToChangeScene

キー入力と遷移先sceneのmappingを待ちます。navigation keymapとの衝突に注意します。

Schema位置: #/$defs/keyInputAction

field/形式 必須性 既定値・制約
keyInputToChangeScene 必須 mapping(keyRoutes) または object(keyInputArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ mapping(keyRoutes 1 field以上
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

keyInputToChangeScene:
  Space: nextScene
  Escape: cancelScene

touchInputToChangeScene

touchされたactor IDに応じてsceneを選びます。

Schema位置: #/$defs/touchInputAction

field/形式 必須性 既定値・制約
touchInputToChangeScene 必須 mapping(touchRoutes) または object(touchInputArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ mapping(touchRoutes 1 field以上
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

touchInputToChangeScene:
  Hero: heroRoute
  Guide: guideRoute

poseInputToChangeScene

認識されたpose IDに応じてsceneを選びます。

Schema位置: #/$defs/poseInputAction

field/形式 必須性 既定値・制約
poseInputToChangeScene 必須 mapping(poseRoutes) または object(poseInputArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ mapping(poseRoutes 1 field以上
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

poseInputToChangeScene:
  wave: greeting
  jump: celebration

Actor action

<actor ID>.<action名>をkeyにするactionです。core action名とcustom action名は同じpattern空間を使います。

Actor.show

costume、座標、scaleを指定してactorを表示します。

Schema位置: #/$defs/showAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.show$ 1件以上 object(showArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId
skin 必須 文字列(literalId)(assetId
x 必須 数値
y 必須 数値
scale 必須 数値 0より大きい

Schemaで検証できる値の例:

Hero.show:
  skin: HeroHappy
  x: 0
  y: -60
  scale: 30

Actor.setTransparency

Scratch/TurboWarpの幽霊効果と同じ0〜100の値でactorの透明度を即時設定するか、指定秒数で線形に変化させます。

Schema位置: #/$defs/setTransparencyAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.setTransparency$ 1件以上 数値 または object または object(setTransparencyArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ 数値 0以上、100以下
形式2 いずれか一つ object 未知field不可
形式3 いずれか一つ object 未知field不可
  • 0は完全不透明、100は完全透明です。値を反転または換算しません。
  • background: falseまたは省略時は完了まで待ち、trueでは開始直後に次actionへ進みます。

Schemaで検証できる値の例:

Hero.setTransparency:
  from: 0
  to: 50
  seconds: 1
  background: true

Actor.moveTo

指定秒数でactorを座標へ移動します。任意のeasingでlinear、ease-in、ease-out、ease-in-outを選べます。

Schema位置: #/$defs/moveToAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.moveTo$ 1件以上 object(moveToArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId
x 必須 数値
y 必須 数値
seconds 必須 数値 0以上
easing 任意 linear / easeIn / easeOut / easeInOut

Schemaで検証できる値の例:

Hero.moveTo:
  x: 40
  y: -57
  seconds: 1.5
  easing: easeInOut

Actor.say

actorのsay吹き出しへテキストを表示し、名前付きclosePolicyまたはinlineの秒数/advance入力で完了します。複数の吹き出しstyleを順に合成できます。

Schema位置: #/$defs/sayAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.say$ 1件以上 object(speechArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId
text 必須 文字列
closePolicy 任意 文字列(bubbleStyleName)(bubbleClosePolicyName
seconds 任意 数値 0以上
waitFor 任意 固定値 advance
styles 任意 文字列(bubbleStyleName)の配列 1項目以上
characterIntervalSeconds 任意 数値 0より大きい
startSound 任意 文字列(literalId)(assetId
characterSound 任意 文字列(literalId)(assetId
noSoundCharacters 任意 文字列 1文字以上
restCharacters 任意 文字列 1文字以上
restCharacterIntervalSeconds 任意 数値 0より大きい
  • closePolicyとaction内のsecondswaitForは併用できません。
  • closePolicyはトップレベルのbubbleClosePoliciesに存在する名前を参照します。

Schemaで検証できる値の例:

Hero.say:
  text: こんにちは!
  closePolicy: advance-or-timeout
  styles:
    - Typing
    - Hero style
  startSound: GreetingVoice

Actor.think

Actor.sayと同じspeech lifecycleを使い、think吹き出しへテキストを表示します。

Schema位置: #/$defs/thinkAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.think$ 1件以上 object(speechArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId
text 必須 文字列
closePolicy 任意 文字列(bubbleStyleName)(bubbleClosePolicyName
seconds 任意 数値 0以上
waitFor 任意 固定値 advance
styles 任意 文字列(bubbleStyleName)の配列 1項目以上
characterIntervalSeconds 任意 数値 0より大きい
startSound 任意 文字列(literalId)(assetId
characterSound 任意 文字列(literalId)(assetId
noSoundCharacters 任意 文字列 1文字以上
restCharacters 任意 文字列 1文字以上
restCharacterIntervalSeconds 任意 数値 0より大きい

Schemaで検証できる値の例:

Hero.think:
  text: どうしよう……
  waitFor: advance
  characterIntervalSeconds: 0.1

Actor.setSkin

actorのcostumeを切り替えます。短縮値、またはscaleとstableIdを持つobjectを使用できます。

Schema位置: #/$defs/setSkinAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.setSkin$ 1件以上 文字列(literalId)(assetId) または object(setSkinArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ 文字列(literalId)(assetId
形式2 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

Hero.setSkin:
  skin: HeroHappy
  scale: 100

Actor.hide

actorのvisible stateをfalseにします。透明度とは別で、次のActor.showで再表示します。

Schema位置: #/$defs/hideAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.hide$ 1件以上 object(hideArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId

Schemaで検証できる値の例:

Hero.hide: {}

Actor.setLayer

front/backで絶対位置へ、正負の数値で現在位置から前後のlayerへ移動します。

Schema位置: #/$defs/setLayerAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.setLayer$ 1件以上 front / back または 数値 または object(setLayerArgs

引数の詳細:

field/形式 必須性 既定値・制約
形式1 いずれか一つ front / back
形式2 いずれか一つ 数値
形式3 いずれか一つ object 未知field不可

Schemaで検証できる値の例:

Hero.setLayer: front

Actor.loop

costumeと表示秒数のstep列をbackgroundで繰り返します。少なくとも一つのstepは正の秒数にします。

Schema位置: #/$defs/loopAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.loop$ 1件以上 object(loopArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId
steps 必須 object(loopStep)の配列 1項目以上

Schemaで検証できる値の例:

Hero.loop:
  steps:
    - skin: HeroWalk1
      seconds: 0.2
    - skin: HeroWalk2
      seconds: 0.2

Actor.setText

SVG Text actorの本文と名前付きstyleを更新します。旧Text Assetの更新命令ではありません。

Schema位置: #/$defs/setTextAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.setText$ 1件以上 object(setTextArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId
text 必須 文字列
style 必須 文字列(id)(styleId

Schemaで検証できる値の例:

Caption.setText:
  text: おしまい
  style: title

Actor.pose

一つ以上のpose stepを順に認識し、任意のcostumeとsoundでfeedbackします。

Schema位置: #/$defs/poseAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.pose$ 1件以上 object(poseArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId
steps 必須 object(poseStep)の配列 1項目以上

Schemaで検証できる値の例:

Hero.pose:
  steps:
    - pose: wave
      skin: HeroWave
      sound: Success

Actor.<customAction>

core action名以外の名前をcapability registryへ委譲します。引数値は文字列、数値、真偽値です。

Schema位置: #/$defs/customActorAction

field/形式 必須性 既定値・制約
key pattern ^[\p{L}_][\p{L}\p{N}_-]*\.(?!(?:show\|hide\|setTransparency\|moveTo\|say\|think\|setSkin\|setLayer\|loop\|setText\|pose)$)[\p{L}_][\p{L}\p{N}_-]*$ 1件以上 object(customActorActionArgs 未知field不可

引数の詳細:

field/形式 必須性 既定値・制約
stableId 任意 文字列(id)(stableId
arguments 任意 mapping(customArguments
  • Schemaを通ることは、そのcustom actionを実行環境が提供することを意味しません。
  • 公開前にcapability、引数契約、rollback時の扱いを確認してください。

Schemaで検証できる値の例:

Hero.wave:
  stableId: hero-wave
  arguments:
    speed: 1
    reverse: false

台本作成での使い方

  1. projectに4.0用の.k4.ymlを作る
  2. 利用するpreview/build/公開アプリがDSL 4.0を有効にしていることを確認する
  3. 本リファレンスでfield、型、必須性、core actionの引数を確認する
  4. Schema検証、参照検証、previewを通してから4.0の成果物をbuildする

作例とprojectの構成は紙芝居DSL 4.0 台本作成ガイドを参照してください。