1. 非互換一覧(チートシート)
里々(およびYAYA)から湊に移るときに壊れるものの一覧です。「完全互換ではありません」。機能ごとに、どこがどう違うのかを示します。各行の右端のリンクから、詳しい説明に移れます。
- 🔴 黙って壊れる、または起動しない。エラーも出ずに、文が消えたり、データが残らなかったりします。
- 🟠 動くが結果が違う。見た目は同じコードで、計算や改行が変わります。
- 🟡 湊にない機能。
本文のサンプルは、すべて実機(DLL)で動かして確認しています。
🔴 黙って壊れる・起動しない
| 項目 | 里々 | 湊 | 詳細 |
|---|---|---|---|
| 辞書の形式 | * @ $ > の辞書(dic*.txt) | 名前 => { … } の .mnt。機械変換はできない。全部書き直し | 2. |
| config.toml のキャラ名 | — | 日本語のキーは必ず引用符で囲む。囲まないと loadu が失敗する | 2. |
| 台本の文字コード | 既定 Shift_JIS | UTF-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. |
単語群 @ | 専用構文 | ない。配列か、同名トーク + return | 6. |
ジャンプ > | 移ったら戻らない | 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. 最小ゴーストの移植に進んでください。