スクリプト・描画

対応 SAKURA SCRIPT (Ourin)

開発版の資料です。仕様・設計の記述には実装予定や過去の記述を含みます。現在の対応範囲は対応状況・既知の問題と合わせて確認してください。配布中のアプリへの収録状況はリリースノートをご確認ください。 対応状況 · 既知の問題

本文書は、Ourin で現在実装されている SakuraScript コマンドを、SakuraScriptEngine.swift のパース処理と GhostManager.swift の実行パスに基づいて一覧にしたものです。

本ファイルは要約です。全コマンドの網羅リスト(\![set,...]/\![enter,...]/\![lock,...] 等の全サブコマンドを含む)は SAKURASCRIPT_COMMANDS_SUPPORTED_ja-jp.md を参照してください。

ステータスマーク: - ✅ 実装済み - ⚠️ 部分実装 / オプション限定 - ❌ 未実装

スコープコマンド

  • ✅ \0 / \1 / \h / \u
  • ✅ \p[n]

バルーン表示寿命とスコープ切替の動作

SSP 互換の実装として、スコープ切替(\0 / \1 / \p[n])はバルーンテキストを消去しません。各スコープのバルーン表示は独立しており、スコープを切り替えるだけで他スコープや切替先スコープ自身の表示が失われることはありません。これにより複数キャラクターが同時にバルーンを表示し続けることができます(SSP の動作に準拠)。

スコープを切り替えた後に同一スコープへ戻った場合、既存のバルーンテキストへ追記する形になります(上書きや消去はしません)。

バルーンが消去されるタイミング:

契機 詳細
スクリプト開始(新発話) runScript / runNotifyScript(テキストあり)/ runPluginScript(nobreak なし)の呼び出し時に全スコープのバルーンテキストを一括クリア(GhostManager.swift の各 vm.text = "")
明示的消去コマンド \c、\e[clear]、\x(noclear なし)

スコープ切替自体(\0 / \1 / \p[n])はバルーンを消去しません(GhostManager.swift processNextUnit .scope ケース参照)。

サーフェスコマンド

  • ✅ \s[n]
  • ✅ \i[n], \i[n,wait]
  • ✅ \![anim,clear,ID]
  • ✅ \![anim,pause,ID] / \![anim,pauseID]
  • ✅ \![anim,resume,ID]
  • ✅ \![anim,offset,ID,x,y]
  • ✅ \![anim,add,overlay|overlayfast,ID[,x,y]]
  • ✅ \![anim,add,overlay,ID,x,y,表示時間,...[,runonce|always]]
  • ✅ \![anim,add,base,ID] / \![anim,add,move,x,y] / \![anim,add,bind,ID]
  • ✅ \![anim,add,text,x,y,横幅,縦幅,文字列,...](文字列まで必須)
  • ✅ \![anim,stop] / \![anim,stop,ID]
  • ✅ \![bind,category,part,value]

バルーン / テキストコマンド

  • ✅ \n, \n[half], \n[percent]
  • ✅ \b[n], \b[...]
  • ✅ \C
  • ✅ \c[...]
  • ⚠️ \f[...] (主要なスタイル制御は実装済み。未対応のサブコマンドは無視)
  • ✅ \_l[x,y]
  • ✅ \_v / \_V
  • ✅ \![execute,resetballoonpos]

キャラクター変更コマンド

  • ✅ \4 / \5
  • ✅ \![change,ghost,...]
  • ✅ \![change,shell,...]
  • ✅ \![change,balloon,...]
  • ✅ \![save,wallpaper] / \![restore,wallpaper]

待機コマンド

  • ✅ \w[n]
  • ✅ \_w[ms]
  • ✅ \__w[...] (clear, 数値タイミング、および animation,ID 待機は実装済み)
  • ✅ \![wait,syncobject,name,timeout] / \![set,syncobject,name] / \![reset,syncobject,name]
  • ✅ \t
  • ✅ \x, \x[noclear]

選択肢コマンド

  • ✅ \q[...]
  • ✅ \*
  • ✅ \a
  • ✅ \z
  • ✅ \-
  • ✅ \__q[...]

イベントコマンド

  • ✅ \![raise,...]
  • ✅ \![notify,...]
  • ✅ \![raiseother,...] / \![notifyother,...]
  • ✅ \![raiseplugin,...] / \![notifyplugin,...]
  • ✅ \![timerraise,...] / \![timernotify,...]
  • ✅ \![timerraiseother,...] / \![timernotifyother,...]
  • ✅ \![timerraiseplugin,...] / \![timernotifyplugin,...]
  • ✅ \![embed,...]

サウンドコマンド

  • ✅ \8[filename]
  • ✅ \![sound,play,...]
  • ✅ \![sound,load,...]
  • ✅ \![sound,loop,...]
  • ✅ \![sound,wait,...]
  • ✅ \![sound,pause,...]
  • ✅ \![sound,resume,...]
  • ✅ \![sound,stop,...]
  • ✅ \![sound,option,...]

オープンコマンド

  • ✅ \v
  • ✅ \6
  • ✅ \7
  • ✅ \+
  • ✅ \_+
  • ⚠️ \![open,...] (多くのサブコマンドが実装済み。動作は OS 機能に応じて異なる)

プロパティ操作

  • ✅ %property[...] 展開
  • ✅ \![get,property,key]
  • ✅ \![set,property,key,value]

既知の部分的動作を持つ関連コマンド

  • ✅ \![move,...] (名前付き・レガシー位置指定構文、fix の軸別保持、アンカー、duration、method、scope、--wait に対応;2026-08-14更新)
  • ✅ \![moveasync,...] (キュー中・実行中のアニメーションを \![moveasync,cancel] でキャンセル可能;レガシー構文の fix に対応;2026-08-14更新)
  • ✅ \![set,scaling,...] (等倍/非等倍スケーリング、duration、名前付きオプション、--wait に対応;2026-08-14更新)
  • ✅ \![set,alpha,...] (0–100値、負値の再描画のみ挙動、duration、名前付きオプション、--wait に対応;2026-08-14更新)
  • ⚠️ \![set,zorder,...] (コア順序付けは実装済み;複雑な組み合わせは未実装)
  • ⚠️ \![set,sticky-window,...] (基本的なグループ化は実装済み;複雑なグループ処理は未実装)

出典と編集について

Ourin / Furin Lab・contributors。文書はCC BY-SA 4.0(第三者の個別表記を除く)。Web版は見出し・リンクの整備とローカルパスの一般化を行っています。更新基準日: 2026-10-30。

元資料: docs/SUPPORTED_SAKURA_SCRIPT_ja-jp.md
ソース SHA-256: fc2a22e00be48faa09d091d50884b66d685c1858b1f0b0961dec1baee4f9bd68

ライセンス · 出典一覧 · 資料一覧に戻る