Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

pasta.toml リファレンス

クローディア(素)

ゴーストの性格を決めるのが辞書なら、その暮らし方を決めるのが pasta.toml ですわ。この頁では、わたくしが全セクション・全キーを、ひとつ残らず並べて差し上げますの。

アンソニー(素)

全部となりますと、書くことがずいぶん多そうでございますね。

クローディア(冷笑)

あら、早とちりですこと。書かねばならないのは [actor] だけ。あとは必要になったときに、この頁を引けばよろしくてよ。


pasta.toml は、ゴーストの設置ディレクトリ(ghost/master/。pasta.dll と同じ場所)に置く設定ファイルである。このページは全セクション・全キーの型・既定値・用途を示す。

概要

pasta.toml は、ゴーストの読み込みの最初に読まれる。省略したセクション・キーには実装の既定値(SSOT)が使われ、明示した値は既定値で上書きされない。[ghost] の 5 キーは、書かなかったものが読み込み時に既定値で補完されるため、Lua から @pasta_config で読んでも同じ値になる(@pasta_config)。

  • pasta.toml ファイル自体は必須である。ファイルが無い場合、または TOML として読めない場合、ゴーストの読み込みは失敗する。最小化できるのは記述量であって、ファイルの存在ではない。
  • 以下の表の「既定値」は、いずれも実装の既定値(SSOT)である。

プロファイルと3分類

既定値は、用途ごとの 2 系統を概念として持つ。伺かゴーストとして動かすための SHIORI プロファイルと、ノベルゲーム・ツールなど SHIORI 以外の用途を想定したエンジンプロファイルである。このページが定める既定値は SHIORI プロファイルのものだけで、エンジンプロファイルの既定値は定められていない。

各セクション・各キーは、次の 3 分類のどれか 1 つに属する(重複しない)。

  1. SHIORI デフォルト有(省略可) — 省略すると既定値が使われる。最小構成では書く必要がない。
  2. 必須(デフォルト不能) — ゴースト固有の値で既定値を決められないため、作者が書く。[actor](1 つ以上)と、その spot が該当する。
  3. エンジンプロファイル専用 — SHIORI 用途では使われず、書く必要もない。[package] が該当する。

値の型が合わないとき

キーに型の合わない値(整数のキーに文字列など)を書いたときの扱いは、セクションによって異なる。

セクション型の合わない値があるとき
[loader]・[scene]pasta.toml の読み込みエラーになり、ゴーストの読み込みが失敗する
[actor."名前"] の fontpasta.toml の読み込みエラーになり、ゴーストの読み込みが失敗する(装い(font))
[talk]・[persistence]・[logging]・[debug]そのセクション全体を書かなかったときと同じ扱いになる(同じセクションの正しく書いたキーも含め、すべて既定値になる)。エラーも警告も出ない

ただし [logging] の balloon_warning だけは、キー単位で既定値に戻る。balloon_warning が真偽値でないときは balloon_warning だけが既定値(true)になり、同じセクションの file_path・level・filter は書いたとおりに効く。逆に file_path・level・filter の型が合わずにそれらが既定値になっても、正しく書いた balloon_warning は効く。

例として、[talk] に script_wait_period = 300 と script_wait_normal = "x" を並べて書くと、script_wait_period も既定値(1000)になる。設定が効いていないと感じたら、同じセクションの他のキーの型を確かめる。

[scene] で型を確かめるのは scene 自体(テーブルであること)と alias の中身だけである。alias 以外のキーは読まれないため、型は確かめられない([scene])。

3分類表

全セクション・代表キーの分類と、SHIORI プロファイルの既定値を示す。既定値は実装の既定値(SSOT)である。

セクション / キー分類SHIORI デフォルト
[actor."名前"](1 つ以上)必須(デフォルト不能)(なし。作者が必ず書く)
[actor] › spot必須(デフォルト不能)(なし。ゴースト固有)
[actor] › budoux / budoux_newlines / budoux_jump / surface / dressup / fontSHIORI デフォルト有(省略可)(なし=未設定)
[loader]SHIORI デフォルト有(省略可)(下記キー参照)
[loader] › pasta_patternsSHIORI デフォルト有["dic/**/*.pasta"]
[loader] › lua_search_pathsSHIORI デフォルト有(lua_search_paths 参照)
[loader] › transpiled_output_dirSHIORI デフォルト有"profile/pasta/cache/lua"
[loader] › debug_modeSHIORI デフォルト有true
[loader] › ffiSHIORI デフォルト有false
[ghost]SHIORI デフォルト有(省略可)(下記キー参照)
[ghost] › talk_interval_minSHIORI デフォルト有180
[ghost] › talk_interval_maxSHIORI デフォルト有300
[ghost] › hour_marginSHIORI デフォルト有30
[ghost] › spot_newlinesSHIORI デフォルト有1.5
[ghost] › choice_newlinesSHIORI デフォルト有1.5
[ghost] › after_choice_newlinesSHIORI デフォルト有1.0
[scene]SHIORI デフォルト有(省略可)(下記キー参照)
[scene] › aliasSHIORI デフォルト有7 件の既定の別名表(OnTalk = ["会話"] ほか。[scene] 参照)
[talk]SHIORI デフォルト有(省略可)([talk] 参照)
[persistence]SHIORI デフォルト有(省略可)([persistence] 参照)
[logging]SHIORI デフォルト有(省略可)([logging] 参照)
[logging] › balloon_warningSHIORI デフォルト有true
[debug]SHIORI デフォルト有(省略可)enabled = false / port = 9276
[package]エンジンプロファイル専用(SHIORI では不要。予約注記 参照)

分類は一意で、同じセクション・キーが複数の分類に属することはない。

最小テンプレート

SHIORI として起動するために必須なのは [actor] だけである。他のセクションはすべて省略でき、既定値が使われる。[package]・[loader] を書く必要はない。

# 最小構成: 必須の [actor] のみ。他は SHIORI デフォルトが使われる。
[actor."女の子"]
spot = 0

[actor."男の子"]
spot = 1
  • "名前" は、辞書(.pasta)の会話行・アクター辞書で使うアクター名と一致させる。descript.txt の sakura.name・kero.name とそろえておくと対応が分かりやすい。
  • spot はゴースト固有で既定値が無いため、アクターごとに書く(0=sakura 側、1=kero 側)。
  • dic/ 配下に置いた辞書は、[loader] を書かなくても pasta_patterns の既定値で読み込まれる(pasta_patterns)。

[actor] を 1 つも書かなかった場合も起動は止まらないが、SHIORI として正しく動かない可能性があるため、警告がログに 1 回出る。

フルリファレンステンプレート

全セクション・全キーを、分類と既定値の注記付きで並べたテンプレートである。値は、書いてある限り既定値を示す(必要な項目だけ抜き出して使う)。

# ============================================================
# pasta.toml フルリファレンステンプレート
# 各行の注記 = 分類 / SHIORI デフォルト値(実装の既定値)
# 「省略可」のセクションは丸ごと削除しても既定値が使われる。
# ============================================================

# --- 必須(デフォルト不能): 最小構成で唯一必須 ---
[actor."女の子"]
spot = 0                # 必須(デフォルト不能): 0=sakura側 / 1=kero側
budoux = [10, 12]       # 省略可: 未設定=自動改行なし
budoux_newlines = 1.5   # 省略可: 未設定=\n(budoux が入れる改行の幅。budoux を書いたときだけ効く)
budoux_jump = [10, 8]   # 省略可: 未設定=\_l[…] の後も budoux の並び(budoux を書いたときだけ効く)
surface = 0             # 省略可: 未設定=既定サーフェスなし
# font = { color = "90,110,140" }  # 省略可: 未設定=バルーンの既定の表示

[actor."男の子"]
spot = 1                # 必須(デフォルト不能)

# --- 省略可(SHIORI デフォルト有): ファイル読み込み ---
[loader]
pasta_patterns = ["dic/**/*.pasta"]            # 既定 ["dic/**/*.pasta"]
lua_search_paths = [                            # 既定(優先順位順):
  "profile/pasta/save/lua",                     #   保存領域の Lua
  "scripts",                                    #   ゴースト作者のスクリプト
  "profile/pasta/pasta_scripts",                #   pasta の内蔵スクリプト
  "profile/pasta/cache/lua",                    #   トランスパイル済みキャッシュ
  "scriptlibs",                                 #   スクリプトライブラリ
]
transpiled_output_dir = "profile/pasta/cache/lua"  # 既定 "profile/pasta/cache/lua"
debug_mode = true                                  # 既定 true
# ffi = false                                      # 既定 false(true で Lua から任意のメモリに触れられる。[loader] の ffi 参照)

# --- 省略可(SHIORI デフォルト有): ゴースト動作 ---
[ghost]
talk_interval_min = 180   # 既定 180(秒)
talk_interval_max = 300   # 既定 300(秒)
hour_margin = 30          # 既定 30(秒)
spot_newlines = 1.5       # 既定 1.5
choice_newlines = 1.5     # 既定 1.5
after_choice_newlines = 1.0   # 既定 1.0

# --- 省略可(SHIORI デフォルト有): シーン名の別名 ---
# 既定の別名表(7 件)が使われる。書いたキーだけ、既定の別名を書いた配列で置き換える。
# 書かなかったキーの既定は残る。空の配列で既定を消す。見出しだけなら既定のまま。
# [scene.alias]
# OnTalk = ["会話"]                              # 既定: *会話 を OnTalk(ランダムトーク)として登録・検索する
# "sakura.recommendsites" = ["おすすめメニュー"]   # 既定: *おすすめメニュー を本体側のおすすめのメニューのシーンにする
# (ほかの既定 5 件は [scene] の節を参照)

# --- 省略可(SHIORI デフォルト有): トーク表示制御 ---
[talk]
script_wait_normal = 50     # 既定 50(ミリ秒)
script_wait_period = 1000   # 既定 1000(ミリ秒)
script_wait_comma = 500     # 既定 500(ミリ秒)
script_wait_strong = 500    # 既定 500(ミリ秒)
script_wait_leader = 200    # 既定 200(ミリ秒)
chars_period = "。。.."      # 既定 "。。.."
chars_comma = "、,,"        # 既定 "、,,"
chars_strong = "?!!?"      # 既定 "?!!?"
chars_leader = "・・‥…"       # 既定 "・・‥…"
chars_line_start_prohibited = "゛゜ヽヾゝゞ々ー)]}」』):;]}」、・ー゙゚"  # 既定(行頭禁則文字)
chars_line_end_prohibited = "([{「『([{「"                           # 既定(行末禁則文字)

# --- 省略可(SHIORI デフォルト有): 永続化 ---
[persistence]
obfuscate = false                                   # 既定 false
file_path = "profile/pasta/save/save.toml"          # 既定 "profile/pasta/save/save.toml"
debug_mode = false                                  # 既定 false

# --- 省略可(SHIORI デフォルト有): ログ出力 ---
[logging]
file_path = "profile/pasta/logs/pasta.log"   # 既定 "profile/pasta/logs/pasta.log"
level = "info"                               # 既定 "info"
# filter = "debug,pasta_shiori=info"         # 未設定(設定時は level より優先)
balloon_warning = true                       # 既定 true(失敗表記をバルーンに出す。配る前に false)

# --- 省略可(SHIORI デフォルト有): デバッグバックエンド ---
[debug]
enabled = false             # 既定 false
port = 9276                 # 既定 9276
# present_as = "lua"        # 未設定(既定 .pasta)
source_map_sidecar = false  # 既定 false

# --- エンジンプロファイル専用: SHIORI 用途では記述不要([package] 予約注記 参照) ---
# [package] は SHIORI では使われない。書いても無視される。

[package] 予約注記

[package](name・version・edition)はエンジンプロファイル専用に分類される。

  • SHIORI 用途では不要: 伺かゴーストでは install.txt・readme.txt などでメタデータを管理できるため、[package] を書く必要はない。最小テンプレートにも、配布しているサンプルゴースト(hello-pasta)の設定にも含めていない。
  • 書いても無視される: [package] を含む pasta.toml も、エラーや警告を出さずにこれまでどおり起動する(後方互換)。エンジンは [package] の値を使わない。他のセクションと同じく @pasta_config からは読める。
  • 予約: エンジンプロファイルでの [package] の既定値と用途は定められておらず、予約されている。
キー型説明
name文字列パッケージ名(エンジンプロファイル専用)
version文字列セマンティックバージョン(エンジンプロファイル専用)
edition文字列エディション(例: "2024"。エンジンプロファイル専用)

各セクション詳細

ここから先は、各セクション・各キーの型・既定値・用途を示す。

[loader](ファイル読み込み)

辞書ファイルと Lua モジュールの読み込みを制御する。分類: SHIORI デフォルト有(省略可)。[loader] は @pasta_config に含まれない。

キー型既定値説明
pasta_patterns文字列の配列["dic/**/*.pasta"]読み込む .pasta ファイルの glob パターン
lua_search_paths文字列の配列(lua_search_paths 参照)Lua モジュールの検索パス(優先順位順)
transpiled_output_dir文字列"profile/pasta/cache/lua"トランスパイルした Lua(キャッシュ)の出力先
debug_mode真偽値truetrue のとき、読み込み時の処理件数(トランスパイル・スキップ・失敗・コピー)を info ログに出す
ffi真偽値falsetrue のとき、LuaJIT の FFI を開く(ffi 参照)

パスはすべて設置ディレクトリからの相対パスで書く。トランスパイル結果のキャッシュへの保存は、debug_mode の値に関わらず行われる。元のファイルが無くなったキャッシュ(孤立キャッシュ)は、debug_mode の値に関わらず warn ログに出る(削除はしない)。true のときは各パスがもう一度出る。

pasta_patterns

辞書ファイル(.pasta)を探す glob パターンの配列である。設置ディレクトリからの相対パスで書き、どれかのパターンに一致した .pasta がすべて読み込まれる。既定の ["dic/**/*.pasta"] は、dic/ の直下とその下のすべての階層に一致する。慣例どおり dic/ 配下に辞書を置けば、[loader] を書かずに起動できる。

.pasta で終わる各パターンからは、末尾を .lua に変えたパターン(既定では dic/**/*.lua)も作られ、それに一致した .lua ファイルも辞書モジュールとして読み込まれる。.lua ファイルはトランスパイルされずにそのまま読み込まれる。同じ場所に同じ名前の .pasta があるときは .pasta が優先され、.lua は警告を出して読み込まれない。.pasta で終わらないパターンからは .lua 用のパターンは作られない(警告が出る)。ファイル名が init.lua のものは init.pasta と同じく読み込みに失敗する。

[loader]
pasta_patterns = ["dic/**/*.pasta"]
  • 辞書は役割ごとに複数のファイルへ分けられる(例: アクター辞書を actors.pasta、起動・終了イベントを boot.pasta、ランダムトークと時報を talk.pasta、マウス反応を click.pasta)。パターンに一致するファイルはすべて自動で読み込まれ、ファイル間の取り込み指定は要らない。グローバルなアクター辞書・単語・シーンは、別のファイルからも参照できる。
  • dic/*.pasta のように ** を使わないパターンは、dic/ の直下だけに一致する(dic/talk/a.pasta は読み込まれない)。
  • .. を含むパターンは使われず、警告がログに出る。profile/ 配下のファイルは、パターンに一致しても読み込まれない。
  • 一致する .pasta が 1 つも無くても起動は止まらず、警告がログに出る。
  • init.pasta という名前のファイルが一致すると、ゴーストの読み込みが失敗する。

lua_search_paths

Lua の require がモジュールを探すディレクトリの一覧である。前にあるものが優先される。既定値(優先順位順):

  1. profile/pasta/save/lua — 保存領域に置かれた Lua(最優先)
  2. scripts — ゴースト作者が書くスクリプト
  3. profile/pasta/pasta_scripts — pasta が起動時に展開する内蔵スクリプト
  4. profile/pasta/cache/lua — .pasta をトランスパイルしたキャッシュ
  5. scriptlibs — スクリプトライブラリ

各ディレクトリでのファイル名の探し方とモジュール解決の詳細は モジュール検索パス を参照する。

ffi

LuaJIT の FFI を開くかどうかである。true のときだけ、Lua から require "ffi" とグローバルの ffi で同じ FFI のライブラリが使え、C の DLL の関数を呼べる。false か書かないときは FFI を開かず、ffi は nil のまま、require "ffi" は失敗する。真偽値でない値を書くと、[loader] のほかのキーの型の誤りと同じく pasta.toml の読み込みエラーになり、ゴーストの読み込みが失敗する。

[loader]
ffi = true

注意: true にすると、Lua から任意のメモリに触れられるようになる。FFI の書き間違い(関数の宣言の誤り、壊れたポインタ、範囲の外の読み書きなど)は Lua のエラーにならず、SSP ごと落ちうる。C の DLL を使うときだけ true にする。


[ghost](ゴースト動作)

ゴーストの動作パラメータを設定する。分類: SHIORI デフォルト有(省略可)。[ghost] は書かなくても必ず @pasta_config に現れ、書かなかったキーには既定値が入る。表に無いキーを書いた場合も、そのまま @pasta_config に現れる。

キー型既定値説明
talk_interval_min整数180ランダムトーク(OnTalk)の最小間隔(秒)
talk_interval_max整数300ランダムトーク(OnTalk)の最大間隔(秒)
hour_margin整数30次の正時までの残りがこの秒数未満のとき、ランダムトークを発行しない(時報を優先する)(秒)
spot_newlines数値1.5話し手の切り替えで台詞のあるバルーンへ戻るときの改行幅(\n[値×100])
choice_newlines数値1.5台詞の後に選択肢を出すときの、選択肢の前の改行幅(\n[値×100])
after_choice_newlines数値1.0選択肢の後に選択肢または台詞を出すときの改行幅(\n[値×100]。1.0 では \n)

talk_interval_min / talk_interval_max

ランダムトーク(OnTalk)の発火間隔を秒で指定する。次のトーク時刻は、この範囲の乱数秒で決まる。

[ghost]
talk_interval_min = 120
talk_interval_max = 240

spot_newlines

1 回のトークの出力(さくらスクリプト 1 本)の中で、話し手が切り替わり、すでに台詞を出したスポット(バルーン)へ戻るとき、\p[スポット番号] の直後(次の台詞の前)に改行 \n[N] を出力する。N は値を 100 倍して小数点以下を切り捨てた整数で、行の高さに対する百分率の改行幅である。既定の 1.5 では \n[150] になる。

[ghost]
spot_newlines = 2.0
*OnTalk
 さくら:やあ。
 うにゅう:はい。
 さくら:また。

この例の出力は、既定値では \p[0]やあ。\_w[950]\p[1]はい。\_w[950]\p[0]\n[150]また。\_w[950]\e、spot_newlines = 2.0 では \n[150] の位置が \n[200] になる(さくら を spot 0、うにゅう を spot 1 とした場合)。

次の 3 つの場合は、この改行 \n[N] を出力しない。選択肢の後に続く台詞の前の改行 \n は、これとは別の規則で決まる(選択肢行)。

  • そのスポットで初めて台詞を出すとき。
  • \c でバルーンを消去した後、そのスポットで最初に台詞を出すとき。引数つきの \c[…] と \x は、バルーンの消去に数えない。
  • 表情や着せ替えのタグだけの出力(\s[…]・\![bind,…] だけを返す単語など)をしたスポットへ戻るとき。そのような出力は台詞に数えない。

choice_newlines

1 回のトークの出力(さくらスクリプト 1 本)の中で、同じスポット(バルーン)に台詞を出した後に選択肢(選択肢行または act:choice)を出すとき、選択肢の直前に改行 \n[N] を出力する。値は数値で書く。N は spot_newlines と同じく、値を 100 倍して小数点以下を切り捨てた整数で、行の高さに対する百分率の改行幅である。既定の 1.5 では \n[150] になる。

[ghost]
choice_newlines = 2.0
*OnTalk
 さくら:どれにする?
 @?おやつの話
 @?おでかけの話

この例の出力は、既定値では \p[0]どれにする?\_w[450]\n[150]\![*]\q[おやつの話,おやつの話,OnTalk_1]\n\![*]\q[おでかけの話,おでかけの話,OnTalk_1]\e、choice_newlines = 2.0 では \n[150] の位置が \n[200] になる(さくら を spot 0 とした場合)。

  • 効くのは、台詞の後に出す選択肢の前の改行だけである。選択肢と選択肢の間の改行と、選択肢の後に続く台詞の前の改行は、この値では変わらない(after_choice_newlines で決まる)。
  • そのスポットで最初に表示するものが選択肢のときは、改行を出さない。\c でバルーンを消去した直後の選択肢も同じである。
  • spot_newlines とは別の値で、一方を変えても他方の改行幅は変わらない。
  • 選択肢が表示される行の決まり方は 選択肢行 を参照する。

after_choice_newlines

1 回のトークの出力(さくらスクリプト 1 本)の中で、同じスポット(バルーン)に選択肢を出した後に、続けて選択肢または台詞を出すとき、その直前に出す改行の幅である。値は数値で書く。N は spot_newlines と同じく、値を 100 倍して小数点以下を切り捨てた整数である。N が 100 のとき(既定の 1.0)は \n[100] ではなく \n を出し、それ以外は \n[N] を出す。

[ghost]
after_choice_newlines = 1.2
*OnTalk
 さくら:どれにする?
 @?おやつの話
 @?おでかけの話

この例の出力は、既定値では \p[0]どれにする?\_w[450]\n[150]\![*]\q[おやつの話,おやつの話,OnTalk_1]\n\![*]\q[おでかけの話,おでかけの話,OnTalk_1]\e、after_choice_newlines = 1.2 では 2 つの選択肢の間の \n が \n[120] になる(さくら を spot 0 とした場合)。

  • 効くのは次の 2 か所である。
    • 選択肢の後に、同じスポットへ続けて出す選択肢の前。
    • 選択肢の後に、同じスポットへ続けて出す台詞の前。
  • 話し手が切り替わり、選択肢を最後に出したスポットへ戻って台詞を出すときは、spot_newlines の改行だけを出し、この改行は重ねない。
  • 台詞の後に出す選択肢の前の改行は choice_newlines で決まり、この値では変わらない。
  • 数にできない値(true など)を書くと、選択肢の後の区切りを出すところで、トークの組み立てが Lua のエラーになる。

[scene](シーン名)

グローバルシーンの名前の別名表を設定する。分類: SHIORI デフォルト有(省略可)。書かなければ既定の別名表(7 件)が使われ、*会話 がランダムトーク(OnTalk)のシーンに、*おすすめメニュー などがおすすめメニューのシーンになる。

キー型既定値説明
aliasテーブル(置き換え先の名前 → 別名の文字列の配列)既定の別名表(7 件。下の表)グローバルシーン名の別名表

scene は予約されたセクション名である。scene はテーブル([scene])として書く。alias 以外のキーは読まれず、予約されている。

alias

キーに置き換え先の名前、値に別名(置き換え前の名前)の文字列の配列を書く。1 つの置き換え先に複数の別名を書ける。

[scene.alias]
# 置き換え先の名前 = [別名の配列]
OnTalk = ["会話", "おしゃべり"]
OnBoot = ["起動"]

この例では、*会話・*おしゃべり は OnTalk のシーンとして、*起動 は OnBoot のシーンとして登録・検索される。

  • 置き換えの規則(完全一致・1 段だけ・グローバルシーン名だけ・置き換え後は前方一致)と、置き換えが効く入口は シーン名の別名 を参照する。
  • 置き換え先の名前に英数字・_・- 以外の文字(日本語や . など)を使うときは、キーを引用符で囲む("天気の話" = ["お天気"]・"sakura.recommendsites" = ["おすすめ"])。TOML では、そのような文字を含むキーを引用符なしで書けない。

既定の別名表は次の 7 件である。

置き換え先(キー)別名使いどころ
OnTalk会話ランダムトークのシーン(OnTalk)
sakura.recommendsitesおすすめメニュー本体側のおすすめのメニューのシーン(おすすめメニュー)
kero.recommendsites相方おすすめメニュー相方側のおすすめのメニューのシーン
sakura.portalsitesポータルメニューポータルのメニューのシーン
sakura.recommendbuttoncaptionおすすめボタン名本体側のおすすめのボタンの名前の単語
kero.recommendbuttoncaption相方おすすめボタン名相方側のおすすめのボタンの名前の単語
sakura.portalbuttoncaptionポータルボタン名ポータルのボタンの名前の単語

有効な別名表は、書き方によって次のように決まる。

書き方有効な別名表
[scene] も [scene.alias] も書かない既定の表
[scene] に alias を書かない既定の表
[scene.alias] の見出しだけを書く既定の表
[scene.alias] にキーを書く既定の表の、書いたキーの別名だけを書いた配列で置き換えたもの
[scene.alias] のキーに空の配列を書く既定の表から、そのキーの別名を消したもの
[scene.alias]
OnBoot = ["起動"]
"sakura.recommendsites" = []

この例の有効な別名表は、OnBoot = ["起動"] を加え、sakura.recommendsites の既定の別名を消したものになる。書かなかった OnTalk = ["会話"] などの 5 件はそのまま残る。*おすすめメニュー はメニューのシーンにならず、書いたとおりの名前のふつうのシーンになる。

エラーになる書き方: 次の書き方をすると pasta.toml の読み込みエラーになり、ゴーストの読み込みが失敗する([loader] の型の誤りと同じ扱い)。既定の表に戻して読み込みを続けることはしない。エラーの文言には、原因のキー名・別名と、取れるときは行番号が入る。

書き方例
値が配列でないOnTalk = "会話"
配列の要素が文字列でないOnTalk = ["会話", 1]
置き換え先の名前・別名が空文字列OnTalk = [""]・"" = ["会話"]
同じ別名を 2 回以上書く(同じ配列の中でも、別の配列どうしでも)OnTalk = ["会話", "会話"]・OnTalk = ["会話"] と OnBoot = ["会話"]
別名を別の行の置き換え先にもする(連鎖。自分自身を別名にする場合を含む)OnTalk = ["会話"] と "会話" = ["おしゃべり"]・OnTalk = ["OnTalk"]
書いた別名が、残っている既定の別名と同じOnBoot = ["会話"] だけを書く(既定の OnTalk = ["会話"] とぶつかる)
書いた置き換え先が、残っている既定の別名と同じ"会話" = ["おしゃべり"] だけを書く(既定の OnTalk = ["会話"] の別名を置き換え先にしている)
alias がテーブルでない[scene] に alias = "会話"
scene がテーブルでないscene = 1

既定の別名とぶつかったときのエラーの文言には、相手が既定の表のどのキーかと、直し方(OnTalk = [] を書いて既定を消す)が入る。既定の別名を別のキーに付け替えるときは、既定のキーに空の配列を書いてから、付け替えたいキーに書く。

[scene.alias]
OnTalk = []
OnBoot = ["会話"]

既存のゴーストへの影響: 既定の別名表が 7 件になり、[scene.alias] が書いたキーだけを置き換えるようになったことで、これまでのゴーストの動きが変わることがある。

  • *おすすめメニュー・*相方おすすめメニュー・*ポータルメニュー という名前のふつうのシーンは、メニューのシーンになる。@おすすめボタン名 などの名前の単語は、ボタンの名前になる。
  • 見出しの [scene.alias] だけを書いて別名を無くしていたゴーストでは、既定の表が戻る。
  • [scene.alias] にキーを書いていたゴーストでは、書かなかったキーの既定の別名が加わる。
  • 既定の別名と同じ名前を別のキーに書いていたゴースト(OnBoot = ["会話"] など)は、読み込みエラーになる。

これまでの動きに戻すには、要らない既定のキーに空の配列を書く。書くキーと例は これまでのゴーストへの影響 を参照する。

効く範囲:

  • 別名表は、ゴーストの読み込み時にだけ読まれる。pasta.toml の別名表を変えたら、ゴーストを読み込み直すと反映される。トランスパイル済みのキャッシュは、別名表が変わると自動で作り直される(pasta の版を上げて既定の表が変わった最初の読み込みも含む)。読み込み時に、実際に使う別名表(既定と書いた行を合わせた結果)と、その出どころ(既定の表だけか、pasta.toml に書いた行があるか)が info ログ Scene alias table に 1 回出る。
  • 辞書の検査(pasta_check validate・pasta_check release の検査の段・VSCode 拡張のゴースト全体の診断)は、別名表と [loader] の pasta_patterns を読む。飛び先の検査では、実行時と同じく別名表による置き換えが効く(辞書を検査する)。
  • 開いているファイルごとのエディタの言語機能(LSP)は別名表を読まない。シーン名を書いたとおりに扱う。
  • [scene] は @pasta_config に書いたとおりに現れる。既定の別名表は補完されない(@pasta_config)。

[actor.“名前”](アクター設定)

アクターごとの設定である。"名前" は辞書で使うアクター名と一致させる(descript.txt の sakura.name・kero.name とそろえておくと分かりやすい)。複数のアクターを書ける。

分類: 必須(デフォルト不能)。SHIORI として動かすには [actor] が 1 つ以上必要で、spot はゴースト固有のため既定値が無い。budoux・budoux_newlines・budoux_jump・surface・dressup・font はアクター内の省略可のキー(未設定が既定)である。

キー型既定値分類説明
spot整数(なし)必須(デフォルト不能)バルーン位置(0=sakura 側、1=kero 側)
budoux整数の配列(なし)省略可BudouX による自動改行の幅
budoux_newlines数値(なし=\n)省略可BudouX が入れる改行の幅(\n[値×100]。1.0 では \n)。budoux を書いたときだけ効く
budoux_jump整数の配列(なし)省略可\_l[…] の後に使う自動改行の幅。budoux を書いたときだけ効く
surface整数 または 文字列(なし)省略可既定サーフェス ID(同一スポット共有時の外見の復旧に使う)
dressupテーブル(カテゴリ → パーツ → 0/1)(なし)省略可既定の着せ替え(同一スポット共有時の外見の復旧に使う)
fontテーブル(属性名 → 値)(なし=バルーンの既定の表示)省略可台詞の装い(文字の色・書体・大きさなど。装い(font))
script_wait_normal ほか script_wait_* の 5 キー整数(なし=[talk] の値)省略可このアクターだけのウェイト(アクター表のウェイト設定)
  • 表に無いキーも書ける。アクター設定のキーと値は Lua から @pasta_config の actor で読め、各アクターにはキー名と同じ値の name が入る(@pasta_config)。
  • アクター設定のキーは、そのアクターの会話行で @キー名 を書いたときの単語検索で最優先される(副作用: トーク中の @surface)。

spot

台詞を出すバルーン(スコープ)を決める。0 がメイン(sakura 側)、1 がサブ(kero 側)、2 以上は 3 人目以降のキャラクターである。アクターごとに書く。

[actor."女の子"]
spot = 0

[actor."男の子"]
spot = 1
  • シーンの % 行を実行すると、そのアクターの立ち位置は % 行の指定に置き換わる。
  • spot も % 行の指定も無いアクターは、スポット 0 で話し、警告がログに出る。
  • 立ち位置と出力の関係は バルーン連携 を参照する。

budoux

BudouX による自動改行の幅を、配列 [1 行目の幅, 2 行目以降の幅] で指定する。設定すると、そのアクターの台詞に指定の幅で自動的に改行(既定は \n。幅は budoux_newlines で決まる)が入る。

  • 幅は半角 1 文字を 1、全角 1 文字を 2 と数える(10 は全角 5 文字分)。1 文字は見た目の 1 文字(talk)で、いくつかのコードポイントでできた文字は文字全体の幅で数える(🙆‍♀️ は 2)。1 文字の途中では改行しない。
  • 要素が 1 つの場合: すべての行に同じ幅を使う(例: budoux = [10])。
  • 要素が 2 つの場合: 1 行目と 2 行目以降で別の幅を使う(例: budoux = [10, 12])。配列の最後の値が、それ以降のすべての行に使われる。
  • BudouX は日本語の自然な分かち書きの位置で改行するため、語の途中では改行しない(1 語だけで幅を超える行は、幅を超えたままになる)。
  • budoux を書かないアクター、または空の配列を書いたアクターには自動改行が入らない。
[actor."女の子"]
spot = 0
budoux = [10, 12]   # 1 行目は幅 10(全角 5 文字)まで、2 行目以降は幅 12(全角 6 文字)まで

[actor."男の子"]
spot = 1
budoux = [10]       # すべての行を幅 10(全角 5 文字)まで

改行の入れ方の詳細は pasta.toml での budoux 設定 と break_lines(text, widths) を参照する。

縦書きのバルーンでは、行が列に当たる(改行で次の列へ移る)。以下の「行」は、縦書きでは「列」と読み替える。

行を動かすタグでの数え直し: 台詞の中に次のタグがあると、BudouX はそのタグの後ろの字を数え直す。作者が台詞に書いたタグも、単語や関数が返して台詞につながったタグも同じに扱う。

タグタグの後ろの字の数え方
\n・\n[…](\n[half] を含む)次の行の頭から字数 0 で数え、配列の次の値を使う
引数の無い \c最初の行の頭から字数 0 で数え、配列の先頭の値を使う
\_l[…](相対の \_l[@…] を含む)字数 0 から数える。使う幅は budoux_jump で決まる
  • 上の表に無いタグ(\x・\x[noclear]・\_q・引数つきの \c[…]・ウェイト・表情の切り替え・\0・\1・\p[…] など)では数え直さない。
  • エスケープした \\n と、タグをそのまま表示する囲み(\_?…\_?・\_!…\_!)の中の \n・\c・\_l は、行を動かすタグとして読まない。
  • タグの直後に続く語の前には改行を入れない(行の頭に空の行を作らない)。

1 回の出力の中の持ち越し: 1 回のトークの出力(さくらスクリプト 1 本)の中では、スポット(バルーン)ごとに、行・その行の字数・使っている配列(budoux か budoux_jump か)を持ち越す。

  • 同じスポットの台詞と台詞の間に、字を表示しない指定(表情の切り替え・ウェイト・!select の制限時間)だけがあるときは、後ろの台詞を前の台詞の続きとして数える。続きの字数では最初の語が行に収まらないときは、その語の前に改行を入れる。
  • pasta が台詞と台詞の間に出す区切り(話し手の切り替えで戻るときの spot_newlines、選択肢の前後の改行、act:newline())は、改行 1 つにつき次の行へ進める。次の台詞は字数 0 から数える。
  • act:clear() で吹き出しを消すと、次の台詞は最初の行の頭から、budoux の先頭の値で数える。act:clear_spot() では、すべてのスポットが最初の行に戻る。
  • 話し手が別のスポットへ移って戻ってきたときは、戻ったスポットの行と字数を引き継ぐ。
  • 出力をまたいでは持ち越さない。どの出力も、すべてのスポットの最初の行の頭から数える。
  • 選択肢の表示の文字は、字数に数えない。

以前の版では、行を動かすタグの後・表情などを挟んだ台詞・pasta の区切りの後で、字数を引き継がなかったり、配列の先頭に戻ったりしていた。この数え方の直しで、budoux を使うゴーストでは改行の位置が変わることがある。

数えられない改行: BudouX が数えるのは、自分で入れた改行と、台詞と pasta の区切りにある改行だけである。SSP が自分で折り返した分(1 語だけでバルーンの幅を超えた行、budoux を書いていないアクターの台詞など)は数えられないため、BudouX の数える行と実際の行がずれることがある。行の数も数えないので、行が足りなくなっても BudouX は吹き出しを替えない。

budoux_newlines

BudouX が入れる改行の幅を、行の高さに対する倍率で指定する。N は値を 100 倍して小数点以下を切り捨てた整数(spot_newlines と同じ換算)で、N が 100 のときは \n、それ以外は \n[N] を入れる。書かなければ \n を入れる。

[actor."女の子"]
spot = 0
budoux = [10, 12]
budoux_newlines = 1.5   # BudouX が入れる改行が \n[150] になる
  • 効くのは、BudouX が入れる改行だけである。作者が台詞に書いた改行・単語や関数が返した改行・pasta が出す区切りの改行の幅は変わらない。
  • budoux を書かないアクター、または空の配列を書いたアクターでは、改行を入れないので効かない。
  • 数にできない値(true など)を書くと、budoux の配列に整数にできない要素があるときと同じに、そのアクターの台詞の変換がエラーになる。

budoux_jump

\_l[…] で別の位置へ飛んだ後の行に使う幅を、budoux と同じ書き方(半角 1 文字を 1、全角 1 文字を 2 と数える整数の配列)で指定する。

  • \_l[…] の後ろの行には budoux_jump の先頭の値を使い、続く改行のたびに次の値を使う。配列の最後の値が、それ以降のすべての行に使われる。
  • budoux_jump を使っている間に引数の無い \c があると、budoux の先頭の値へ戻る。もう一度 \_l[…] があると、budoux_jump の先頭の値から使い直す。
  • 書かない、または空の配列のときは、\_l[…] の所で行の番号を変えずに字数だけを 0 に戻す(budoux の同じ値を使い続ける)。
  • budoux を書かないアクター、または空の配列を書いたアクターでは、改行を入れないので効かない。
  • 整数にできない要素の扱いは budoux と同じである。

縦書きのバルーンでの例

字送り 20px・列の間隔 36px で、1 列が 20 字の縦書きのバルーンの例である。右の枠(台詞)は 20 字の列が 3 つ、\_l[-295,0] で飛ぶ左の枠は 1 列目が 20 字、2 列目以降が 14 字とする。話し手の切り替えの列の間隔を \n[180] にしているので、BudouX が入れる改行もそろえる。

[ghost]
spot_newlines = 1.8

[actor."ぱすた"]
spot = 0
budoux = [40]            # 右の枠: 20 字ずつ
budoux_jump = [40, 28]   # 左の枠: 1 列目は 20 字、2 列目以降は 14 字
budoux_newlines = 1.8    # BudouX が入れる改行を \n[180] にする
*ポエム_出来損ないのパスタ
 ぱすた:長い長い、記憶の糸。生まれてから、続いてる一本の長い記憶。@左
 :そう、きっと、一本道。いつか来る終わりの日まで。

@左 は、ゴーストが用意した \_l[-295,0] を返す単語とする。この例の出力は次のようになる(ウェイトのタグは省いた)。

\p[0]長い長い、記憶の糸。生まれてから、\n[180]続いてる一本の長い記憶。\_l[-295,0]そう、きっと、一本道。いつか来る終わりの\n[180]日まで。\e

\_l[-295,0] の所で、左の枠の 1 列目の頭から数え直している。どこで折り返すかは BudouX の語の区切りで決まる。

surface / dressup

複数のアクターが同じ spot を共有して交代で話すとき、pasta は切替先のアクターが最後に出したサーフェス・着せ替えを \p[spot] の直後へ自動で再出力(復旧)する。surface と dressup は、そのアクターがまだ一度もサーフェス変更・着せ替えを出していないときに使う既定値である。起動時に自動で適用されるのではなく、復旧が必要になったとき(専用スポットのアクターでは、起動・再読込後の最初の発話)に出力される。

  • surface: サーフェス ID(数値またはエイリアスの文字列)。\s[ID] として出力される。
  • dressup: カテゴリ → パーツ → 0(外す)/1(着ける)の入れ子のテーブル。値は数値 0・1 だけが有効で、それ以外は無視される。\![bind-noevent,カテゴリ,パーツ,値] として出力される(SSP 2.8.23 以上で動作する)。
[actor."女の子"]
spot = 0
surface = 0

[actor."女の子".dressup."帽子"]
"麦わら" = 1
  • キー名 surface・dressup・spot は、アクター単語の検索で最優先される。トーク中の @surface は設定値(例: 文字 0)に解決されるため、surface・dressup・spot という名前の単語は作らない。
  • 既定サーフェスを決めるキーは surface である。default_surface を書いても既定サーフェスにはならない。
  • 復旧の振る舞いの詳細は 同一スポット共有時の外見の復旧 を参照する。

装い(font)

そのアクターの台詞に付ける文字の装い(文字の色・書体・大きさ・太字など)を、属性名をキー、値を値とするテーブルで書く。pasta は話者がそのアクターに替わったときに、属性ごとに SSP の文字装飾タグ \f[属性名,値] を出力し、同じ吹き出しで別のアクターに替わるときに \f[default] で既定の表示へ戻す。台詞ごとに \f[…] を書かなくても、同じ吹き出しに出る台詞を誰のものか見分けられる。

[actor."おじさん"]
spot = 0
font = { color = "90,110,140", bold = true }

この例のおじさんの台詞の前には \f[color,90,110,140]\f[bold,1] が出力される。

書ける属性は、SSP の \f[…] のうち台詞の字の見た目を変える次の 12 個で、属性名は SSP と同じである。

属性変えるもの
color文字の色
name書体
height文字の大きさ
bold太字
italic斜体
underline下線
strike取り消し線
sub下付き
sup上付き
outline縁取り
shadowcolor影の色
shadowstyle影の形
  • 属性名の大文字・小文字は区別する(Color は書けない)。行の寄せ(align・valign)、選択肢とアンカーの装飾(cursor…・anchor…)、default・disable は書けない。
  • 値の中身(色の書き方・数値の範囲・書体名があるかなど)は SSP が解釈する。pasta は検査せず、書いたとおりに出力する。値の書き方は UKADOC のさくらスクリプト一覧の \f の項で確かめる。

値の書き方: 値は文字列・整数・真偽値のどれかで書く。

値の型出力例
文字列書いたとおりcolor = "#5a6e8c" → \f[color,#5a6e8c]
整数10 進の数字(負の数は - 付き)height = 12 → \f[height,12]
真偽値true は 1、false は 0bold = true → \f[bold,1]

書いた順: タグは属性を書いた順に出力される。インラインのテーブル(font = { … })、[actor."名前".font] の見出し、ドット付きのキー(font.color = …)のどれで書いても同じである。

[actor."ギャル"]
spot = 0

[actor."ギャル".font]
color = "255,0,128"
bold = true

この例の出力は \f[color,255,0,128]\f[bold,1] の順になる。

既定: font を書かないアクターと、空のテーブル(font = {})を書いたアクターは、装いの無いアクターになる。どのアクターにも font を書かなければ、出力は 1 文字も変わらない。

装いを出す時機:

  • 装いのタグは、話者の切り替えで \p[スポット番号] と立ち絵の復旧タグの後、台詞(話者の切り替えの改行を含む)の前に出力される。同じアクターが話し続ける間は出し直さない。
  • 装いのあるアクターを離れて同じ吹き出しで別のアクターが話すときは、\f[default] で既定の表示へ戻してから、切り替え先の装いを付ける。前のアクターの属性(例: bold)は持ち越されない。その吹き出しでそのトークの中ですでに装いのあるアクターが話していれば、装いの無いアクターどうしの切り替えでも \f[default] を出す(装いの無いアクターの台詞の \c で吹き出しを消して既定の表示に戻った後は数えない)。別のスポットへ移るときは、吹き出しごとに装いが保たれるので戻さない。
  • 装いのあるアクターの台詞の途中で \c(引数の無いもの)が出ると、SSP は文字の装飾を外す。pasta は \c と \x(\x[noclear] は除く)の直後に装いを出し直し、続く字もそのアクターの装いで出す。選択肢の後は SSP が装いを保つので出し直さない。
  • 装いは 1 回のトークの中だけで効く。次のトークには持ち越されない。
  • 装いのタグは字に数えない。話者の切り替えの改行(spot_newlines)と選択肢の前の改行(choice_newlines)の判定は変わらない。
  • 台詞に書いた \f[…] との関係は さくらスクリプト を、同じスポットを複数のアクターで共有する書き方は 1 つのスポットを複数のアクターで共有する を参照する。

エラーになる書き方: 次の書き方をすると pasta.toml の読み込みエラーになり、ゴーストの読み込みが失敗する。エラーの文言には、アクター名と属性名、取れるときは行番号が入る。辞書の検査(pasta_check validate・pasta_check release の検査の段)も、同じ書き方を config-actor-font のエラーとして報告する(辞書を検査する)。

書き方例
12 個に無い属性名font = { colour = "red" }・font = { Color = "red" }・font = { align = "center" }
値が文字列・整数・真偽値でない(小数・配列・テーブル・日付)font = { color = [90, 110, 140] }・font = { height = 1.5 }
値が空の文字列font = { name = "" }
値に ] か \ が含まれる(さくらスクリプトのタグが壊れるため)font = { name = "a]b" }
font がテーブルでないfont = "red"
  • キー名 font も、アクター単語の検索で最優先される。トーク中の @font は設定値(装いのタグ列)に解決されるため、font という名前の単語は作らない(副作用: トーク中の @surface)。

[talk](トーク表示制御)

台詞をさくらスクリプトにするときのウェイトの挿入を制御する。分類: SHIORI デフォルト有(省略可)。

キー型既定値説明
script_wait_normal整数50通常の文字のウェイト(ミリ秒)
script_wait_period整数1000句点のウェイト(ミリ秒)
script_wait_comma整数500読点のウェイト(ミリ秒)
script_wait_strong整数500感嘆符・疑問符のウェイト(ミリ秒)
script_wait_leader整数200リーダーのウェイト(ミリ秒)
chars_period文字列"。。.."句点として扱う文字
chars_comma文字列"、,,"読点として扱う文字
chars_strong文字列"?!!?"感嘆符・疑問符として扱う文字
chars_leader文字列"・・‥…"リーダーとして扱う文字
chars_line_start_prohibited文字列"゛゜ヽヾゝゞ々ー)]}」』):;]}」、・ー゙゚"行頭禁則文字。直前の句読点の並びに含め、並びの最後にまとめてウェイトを入れる
chars_line_end_prohibited文字列"([{「『([{「"行末禁則文字。ウェイトを入れない
  • 実際に挿入されるウェイトは、設定値から 50 を引いた値である(0 以下なら挿入しない。既定の通常文字ではウェイトが入らない)。
  • アクター設定([actor."名前"])に同じ名前の script_wait_* キーを書くと、そのアクターではアクターの値が優先される。文字の集合はアクターごとには変えられない。
  • 「1 文字」は見た目の 1 文字(拡張書記素クラスタ)を指す。組み合わせの絵文字(🙆‍♀️・👍🏽・🇯🇵)や結合文字の付いた文字は、いくつかのコードポイントでできていても 1 文字で、途中にウェイトや改行は入らない。半角カナと半角の濁点・半濁点の並び(ガ・パ など)も 1 文字になり、ウェイトは並びの後ろにだけ入る(以前の版では カ と ゙ の 2 文字として数えていた)。
  • chars_* には組み合わせの絵文字も書ける。書いた文字は 1 文字として台詞の同じ文字に当たる(chars_period = "。🙆‍♀️" なら、台詞の 🙆‍♀️ は句点になる)。
  • いくつかのコードポイントでできた文字を書くと、その文字を作る各コードポイントも集合に入る。そのため、台詞に単独で現れた部品(🙆‍♀️ を書いたときの 🙆・♀)も当たる。台詞の 1 文字は、全体で当たらなければ先頭のコードポイントで調べるため、先頭が同じ文字(🙆‍♂️)も当たる。
  • 文字の分類とウェイトの入れ方の詳細は @pasta_sakura_script の動作仕様 を参照する。

使用例: 表示速度を速くする場合。

[talk]
script_wait_normal = 30
script_wait_period = 600
script_wait_comma = 300

[persistence](永続化)

セーブデータ(save テーブル)の保存先と保存形式を制御する。分類: SHIORI デフォルト有(省略可)。

キー型既定値説明
obfuscate真偽値falsegzip 圧縮して保存する(難読化)。保存先の拡張子は .dat になる
file_path文字列"profile/pasta/save/save.toml"保存先のパス(設置ディレクトリからの相対パス)
debug_mode真偽値false読み込み・保存のたびにデバッグログを出す
[persistence]
obfuscate = true
file_path = "profile/pasta/save/save.toml"
  • 保存の形式は TOML(obfuscate = true なら gzip 圧縮した TOML)である。
  • obfuscate = true のとき、file_path の末尾が .toml ならその末尾だけを .dat に変え、.dat ならそのまま、それ以外なら末尾に .dat を足したパスへ保存する(既定では profile/pasta/save/save.dat)。
  • file_path に絶対パスや .. を含むパスを書くと、ゴーストの読み込みが失敗する。
  • 保存のしくみと API は @pasta_persistence を参照する。

[logging](ログ出力)

ログファイルの出力と、失敗表記(実行時の失敗と止まるエラーの表記)をバルーンに出すかどうかを制御する。分類: SHIORI デフォルト有(省略可)。

キー型既定値説明
file_path文字列"profile/pasta/logs/pasta.log"ログファイルのパス(設置ディレクトリからの相対パスで、profile/ ディレクトリの下だけ)
level文字列"info"記録するログレベル(error/warn/info/debug/trace)
filter文字列(なし)ログのフィルター指定(tracing の EnvFilter の書式)。設定すると level より優先される
balloon_warning真偽値true失敗表記(【…】。実行時の失敗と止まるエラーの表記)をバルーンに出す。false で出さない(ログの警告は出る)。配る前に false にする
[logging]
level = "debug"
filter = "debug,pasta_shiori=info"
  • file_path に書けるのは、profile/ ディレクトリの下を指す相対パスだけである(profile/ の後にファイル名が要る。.. を含むパスと絶対パスは不可。profile の大文字・小文字は区別する)。条件を満たさない値のときは既定のログファイル profile/pasta/logs/pasta.log へ書き、その値を示す warn をログに出す。ゴーストの起動は続き、level・filter は反映される。
  • filter・level として解釈できない値のときは info になる。
  • 環境変数 PASTA_LOG が設定されていると、filter・level より優先される。
  • balloon_warning は level・filter と独立している。false でもログの警告は出て、ログに残るかどうかは level・filter が決める。level = "error" で警告がログに残らない設定でも、失敗表記を出すかどうかは balloon_warning だけで決まる。真偽値でないときは true になり、[logging] の他のキーは既定値に戻らない(値の型が合わないとき)。表記の種類と出る位置は 実行時の失敗の出力 を参照する。
  • Lua からのログ出力は @pasta_log、起動に失敗したときのログの読み方は ゴーストが起動しない・喋らないとき を参照する。
  • balloon_warning は、Lua のエラーでシーンや要求が止まったときの表記(【スクリプトのエラー:…】・【時間切れ:…】)も切り替える。On で始まるイベントの GET の要求で止まったとき、true では応答が表記付きの 200 OK になり、false ではこれまでどおり表記の無い 500 Internal Server Error(X-Error-Reason 付き)になる(止まるエラーの表記)。
  • 既定の true のままでは、配ったゴーストの利用者のバルーンにも表記が出る。ゴーストを配る前に、次のように false にする。
[logging]
balloon_warning = false

[debug](デバッグバックエンド)

pasta に組み込まれた DAP デバッグバックエンドを制御する。上級者向けのセクションである。分類: SHIORI デフォルト有(省略可)。省略するとデバッグは無効で、本番の動作に負荷をかけない。

キー型既定値説明
enabled真偽値falseデバッグバックエンドを有効にする
port整数9276DAP リスナーが待ち受ける TCP ポート
present_as文字列(なし=.pasta)ソースの提示モード("pasta" / "lua")
source_map_sidecar真偽値false.lua.map サイドカーファイルも出力する
[debug]
enabled = true
port = 9276
present_as = "lua"

[package](パッケージ情報)

エンジンプロファイル専用で、SHIORI 用途では書く必要がない。書いても無視され、これまでどおり起動する。分類と予約の詳細は [package] 予約注記 を参照する。


クローディア(お辞儀)

これで pasta.toml の隅から隅まで、すっかり見渡せましたわね。全部を一度に覚えようなんて欲張らなくて結構。困ったときにこの頁へ戻ってくれば、わたくしがいつでもお待ちしておりますわ。

アンソニー(素)

設定が整いましたら、あとは辞書を書くばかりでございます。