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 つに属する(重複しない)。
- SHIORI デフォルト有(省略可) — 省略すると既定値が使われる。最小構成では書く必要がない。
- 必須(デフォルト不能) — ゴースト固有の値で既定値を決められないため、作者が書く。
[actor](1 つ以上)と、そのspotが該当する。 - エンジンプロファイル専用 — SHIORI 用途では使われず、書く必要もない。
[package]が該当する。
値の型が合わないとき
キーに型の合わない値(整数のキーに文字列など)を書いたときの扱いは、セクションによって異なる。
| セクション | 型の合わない値があるとき |
|---|---|
[loader]・[scene] | pasta.toml の読み込みエラーになり、ゴーストの読み込みが失敗する |
[actor."名前"] の font | pasta.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 / font | SHIORI デフォルト有(省略可) | (なし=未設定) |
[loader] | SHIORI デフォルト有(省略可) | (下記キー参照) |
[loader] › pasta_patterns | SHIORI デフォルト有 | ["dic/**/*.pasta"] |
[loader] › lua_search_paths | SHIORI デフォルト有 | (lua_search_paths 参照) |
[loader] › transpiled_output_dir | SHIORI デフォルト有 | "profile/pasta/cache/lua" |
[loader] › debug_mode | SHIORI デフォルト有 | true |
[loader] › ffi | SHIORI デフォルト有 | false |
[ghost] | SHIORI デフォルト有(省略可) | (下記キー参照) |
[ghost] › talk_interval_min | SHIORI デフォルト有 | 180 |
[ghost] › talk_interval_max | SHIORI デフォルト有 | 300 |
[ghost] › hour_margin | SHIORI デフォルト有 | 30 |
[ghost] › spot_newlines | SHIORI デフォルト有 | 1.5 |
[ghost] › choice_newlines | SHIORI デフォルト有 | 1.5 |
[ghost] › after_choice_newlines | SHIORI デフォルト有 | 1.0 |
[scene] | SHIORI デフォルト有(省略可) | (下記キー参照) |
[scene] › alias | SHIORI デフォルト有 | 7 件の既定の別名表(OnTalk = ["会話"] ほか。[scene] 参照) |
[talk] | SHIORI デフォルト有(省略可) | ([talk] 参照) |
[persistence] | SHIORI デフォルト有(省略可) | ([persistence] 参照) |
[logging] | SHIORI デフォルト有(省略可) | ([logging] 参照) |
[logging] › balloon_warning | SHIORI デフォルト有 | 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 | 真偽値 | true | true のとき、読み込み時の処理件数(トランスパイル・スキップ・失敗・コピー)を info ログに出す |
ffi | 真偽値 | false | true のとき、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 がモジュールを探すディレクトリの一覧である。前にあるものが優先される。既定値(優先順位順):
profile/pasta/save/lua— 保存領域に置かれた Lua(最優先)scripts— ゴースト作者が書くスクリプトprofile/pasta/pasta_scripts— pasta が起動時に展開する内蔵スクリプトprofile/pasta/cache/lua—.pastaをトランスパイルしたキャッシュ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
- 実行中は、予約グローバル変数
$*pasta_talk_interval_min・$*pasta_talk_interval_maxに入れた値がpasta.tomlの値より優先される(予約グローバル変数)。 - 数値でない値の扱い、下限(10 秒)、最小間隔が最大間隔を上回ったときの扱いは SHIORI イベントとハンドラの pasta.toml 設定 を参照する。
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 は 0 | bold = 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 | 真偽値 | false | gzip 圧縮して保存する(難読化)。保存先の拡張子は .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 | 整数 | 9276 | DAP リスナーが待ち受ける TCP ポート |
present_as | 文字列 | (なし=.pasta) | ソースの提示モード("pasta" / "lua") |
source_map_sidecar | 真偽値 | false | .lua.map サイドカーファイルも出力する |
[debug]
enabled = true
port = 9276
present_as = "lua"
- 環境変数(
PASTA_DEBUG・PASTA_DEBUG_PORTなど)が設定されていると、[debug]の値より優先される。 - 有効化の手順と優先順位は デバッグ概要、提示モードとサイドカーは .pasta ソースレベルのデバッグ操作 を参照する。
[package](パッケージ情報)
エンジンプロファイル専用で、SHIORI 用途では書く必要がない。書いても無視され、これまでどおり起動する。分類と予約の詳細は [package] 予約注記 を参照する。
これで pasta.toml の隅から隅まで、すっかり見渡せましたわね。全部を一度に覚えようなんて欲張らなくて結構。困ったときにこの頁へ戻ってくれば、わたくしがいつでもお待ちしておりますわ。
設定が整いましたら、あとは辞書を書くばかりでございます。