KAG では、ゲームのセーブ・ロードを、しゃれて(?)「栞」にたとえています。( この表記が納得行かない方は、MainWindow.tjs を書き換えてください )。
栞データに関しては
栞のデータに関して も参照してください。
残念ながら、KAG でのセーブ・ロードは任意の場所でできません。必ず、
セーブ可能なラベルを目印として、セーブ・ロードする「場所」が必要となります。
・・・とはいってもセーブ・ロード自体は、メニューの「栞をはさむ」「栞をたどる」で、ほぼいつでもできるのですが、セーブするときは、一番最近に通った「セーブの場所」がセーブされます。
そのため、プレーヤーがその「場所」から少し離れたところでセーブしても、ロードするとその一番最後に通った「場所」の位置からまたスタートすることになります。
そのセーブの場所となるのが、ラベルです。ただし、セーブの場所となるラベルは、普通のラベルとはすこし違った書き方をします。
以下の例を見てください。
[wait time=20]
*start|スタート
[cm]
ここがスタートです[l][r]
*label2|セーブ場所2
[cm]
ここはセーブ場所2[l][r]
*label3|セーブ場所3
[cm]
ここはセーブ場所3[l][r]
[jump target=*start]
このように、ラベルの後に | ( 縦棒 ) を指定し、その後にそのセーブ場所の名前となる物を「
見出し」としてつけます。見出しは名前が重複していてもかまいません。見出しは「栞をはさむ」メニュー内の、メニュー項目の所にも表示される物ですので、ユーザーにわかりやすい名前を付けるべきです。また、フリーセーブモードにおいてはデフォルトのファイル名にもなります。
jump タグなどで | つきのラベルにジャンプさせたい場合は、 | 以降は指定してはいけません。上記では [jump target=*start] とありますが、このように target 属性などでラベルを指定する場合は、 | 以降は省略する必要があります。
見出しは、たとえば以下のように省略することができます。
*label|
この場合は、前回通過した時点での見出しを引き継ぎます。
また、| の後に & をつけると、変数の内容を見出しにできます。たとえば、
*label|&f.title
とすると、f.title の変数の中身を見出しとして使用するようになります。
ラベル名 ( | より前の部分 ) は、同じシナリオファイルの中では、重複する名前があってはなりません ( 違うシナリオファイル中では重複していても OK です )。それに対して見出しは内部的に扱われるだけですので、シナリオファイルを作る側だけが注意していれば OK です。
また、このようなラベルの後には必ず [cm] を書きます。
Note
[cm] でなくて [ct] でもかまいません。両者の違いは、ct が操作対象のメッセージレイヤを表ページの message0 に設定するのに対し、cm はすべてのメッセージレイヤをクリアするだけで、操作対象のメッセージレイヤは変更しないということです。
このようなメッセージレイヤをクリアするタグを書かなければならないのは、
メッセージレイヤになにが書かれているかまでは栞に保存されないためです。
また、セーブ可能なラベルを trans タグと wt タグの間に書くなど、「何か時間を行って処理をするタグ」と「それを待つタグ」の間には書かないことをおすすめします。
また、| を書かずに、普通にラベル名だけを記述したラベルのカ所ではセーブできません。
・・・注意すべき事はこれだけです
(^^)
このような、セーブ場所としてのラベルは増やせば増やすほど、ユーザーにセーブできるカ所を増やすことができます。ラベルは作るだけで、べつに作ったらそこに必ずジャンプするようなタグを書かなければならないというわけではありません。
ただ、このようなラベルの後は必ず [cm] を書かなければならないということは、よく注意してください。
Note
内部的には、KAG は | 付きの ( セーブ可能な ) ラベルを通過するときに、KAG はその時点での状態をいったん内部に保存します。ユーザが栞の保存を選んだときに保存されるのはそのときのデータです。