1. 非互換一覧(チートシート)

里々(およびYAYA)から湊に移るときに壊れるものの一覧です。「完全互換ではありません」。機能ごとに、どこがどう違うのかを示します。各行の右端のリンクから、詳しい説明に移れます。

  • 🔴 黙って壊れる、または起動しない。エラーも出ずに、文が消えたり、データが残らなかったりします。
  • 🟠 動くが結果が違う。見た目は同じコードで、計算や改行が変わります。
  • 🟡 湊にない機能。

本文のサンプルは、すべて実機(DLL)で動かして確認しています。

🔴 黙って壊れる・起動しない

項目里々湊詳細
辞書の形式* @ $ > の辞書(dic*.txt)名前 => { … } の .mnt。機械変換はできない。全部書き直し2.
config.toml のキャラ名—日本語のキーは必ず引用符で囲む。囲まないと loadu が失敗する2.
台本の文字コード既定 Shift_JISUTF-8(BOMなし)だけ。Shift_JISはロード失敗、BOM付きは先頭のトークだけ黙って壊れる2.、10.
変数の保存変数はすべて自動保存global save.… と書いたものだけ保存。let や global work.… は消える。書き忘れてもエラーは出ない5.
セーブデータsatori_savedata.txt(全部文字列)save.json(型あり)。引き継がれない。手動で移行。全角数字は数値にならない9.
括弧展開 ()変数・単語群・トーク・関数を () で呼ぶ${…} と call。全角 () はただの文字で、そのまま表示される5.、10.
未定義の名前括弧ごとそのまま表示されるので気づける${未定義} は空文字列(警告なし)5.
セリフ中の 英数.英数—セリフの行頭・${}直後の最初の語に . があると、変数参照になり、文が丸ごと消える(体重は57.8kgです。 など)14.
セリフ直後の代入・関数呼び出し—x = 5 や hello() が、セリフの続き行として出力される(代入されない)10.
半角コロンのある続き行—注意:これは… が話者指定になり、「注意:」が消えて改行も入らない10.
1行ブロック—OnBoot => { 湊: こんにちは } は書けない(パースエラー)10.
構文エラー—1つでもあるとゴースト全体が読み込み失敗。OnBoot でエラー表示、以降は無言2.
単語群 @専用構文ない。配列か、同名トーク + return6.
ジャンプ >移ったら戻らないcall は戻ってくる。call の後に return を書く4.
選択肢 _ラベル=ジャンプ先が自動\q[ラベル,ID] を手書き。OnChoiceSelect と call reference.0 で同じ形に7.
独自イベントなでられ、つつかれ、OnSatoriLoad などない。SSPのイベントから自作3.
自動処理自動ウェイト、replace.txt、スコープ切り替え、サーフェス戻しない。手で書くか、関数で作る7.

🟠 動くが結果が違う

項目里々湊詳細
足し算 +数式として加算文字列があると連結("1" + 2 は 12)。reference・SAORI戻り値・移行した値は文字列5.
大小比較数式< > は常に数値で比較。文字列の辞書順比較はできない("a" < "b" は偽)14.
真偽0以外が真0、空文字、null、空の配列・マップが偽。"0" は真14.
未設定の変数(変数は文字列)null。save.n == 0 は偽。+= 1 は 1 になる5.
全角の数字数として計算できる0になる。半角に直して数値で持つ14.
裸の代入 x = 5すべてグローバル・保存let がなければ起動中グローバル(他のトークから見える・保存されない)5.
let の範囲—宣言した { } の中だけ。if の中で作ると外で消える5.
改行* の中の改行は自動で \n連続したセリフ行の間だけ \n。コード行・空行・; を挟むと入らない。ループ内は入らない10.
ランダムトーク名前のない *OnRandomTalk。起動から最短5分。OnMinuteChange 駆動3.
OnAITalk・OnMinuteChange通常のイベント自分で定義しても呼ばれない(湊が内部で処理)3.
間隔の設定$喋り間隔config.toml の値は初回だけ。以降は save.json が優先9.
重複回避方式を選べる固定(一巡)。2候補なら交互。shuffle_reset は読まれない4.
採用条件トーク・単語群・ジャンプに付くトーク定義の if(…) だけ。全候補が偽なら無言(204)4.
未登録の話者名—エラーにならず \0 になる2.
ゼロ除算—null(空)+ 警告。止まらない5.
マップの順序—再起動後はキー名の辞書順になる5.
SAORIの戻りResult が括弧の位置に入るValue0 があると Result は取れない。1イベント10回、5秒で打ち切り8.
出力の文字—Shift_JISにない文字(絵文字など)は &#数値; に化ける10.
OnRandomTalkの記録—結果が save.last_talk に自動で保存される3.
foreach の1変数—foreach 配列 as v の v は添字14.
$ と ${—$ はそのまま書ける。${ は展開の始まりなので、文字として出すなら ${'${'} と書く10.
正規表現の \d—"\d" と1つ書く("\\d" は一致しない)10.
曜日文字(日月火…)now.曜日 は数値で0が月曜(YAYAは0が日曜)14.

🟡 湊にない機能

機能代替詳細
アンカー辞書、コミュニケート(→)、トーク予約($次のトーク)なし。さくらスクリプト・SSPのイベントで自作11.
辞書リロード、$辞書フォルダ、マルチキャラ辞書include だけ11.
手動セーブ、自動セーブ間隔、セーブデータの暗号化なし(保存は終了時と再読み込み時だけ)9.
NOTIFY の自動保存、情報取得変数の一部(起動回数など)自作5.、11.
YAYAの EVAL、名前空間、関数のオプション、行単位のファイル操作なし11.、付録A
各種の設定(呼び出し回数制限、重複回避方式など)固定値(制限の一覧)11.

対応があるもの

すべてが壊れるわけではありません。次のものは、ほぼそのまま移せます。

  • SSPのイベント(OnBoot、OnClose、OnMouseDoubleClick、OnChoiceSelect など)と Reference
  • さくらスクリプト(\s[0]、\w5、\q[…]、\n[half]、\![…] など)。セリフの中にそのまま書ける
  • 同名トークからのランダム選択(一巡固定で、里々の「有効」に近い)
  • SAORIの利用(呼び出し方は変わる)

次は2. 最小ゴーストの移植に進んでください。