# 栞の保存場所

KAGの栞の保存場所は Config.tjs の `saveDataLocation` で指定します。吉里吉里本体の実行可能ファイルと同じフォルダに保存する方法と、(マルチユーザ環境下において) ユーザごとのフォルダに保存する方法があります。いずれの場合も該当するサブフォルダがなかった場合は自動的に作成されます。
`;saveDataLocation = "savedata";
`
のように指定すると、この場合は単純に吉里吉里本体の実行可能ファイルの下の savedata フォルダに栞が保存されます。
`;saveDataLocation = System.personalPath + "吉里吉里の栞データ";`
あるいは
`;saveDataLocation = System.appDataPath + "吉里吉里の栞データ";`
のように指定すると、ユーザごとのフォルダの下に "吉里吉里の栞データ" というフォルダが作られ、そこに栞が保存されるようになります。
ユーザごとのフォルダは、System.personalPath を指定した場合は「マイ ドキュメント」になります。これは、Windows 95/NT4.0 では Windows をインストールしたフォルダ下の "Personal" フォルダの場合があります。また Windows 95 の初期のバージョンではマイ ドキュメントに相当するフォルダがないため、吉里吉里の実行可能ファイルと同じフォルダが使用される場合があります。
System.appDataPath を指定した場合は、通常、以下のようになります ( 内部的にはレジストリの `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders` の `AppData` を読み出しています )。

Windows 95, 98, 98SE, ME でマルチユーザ環境でない場合
  `C:\Windows\Application Data\` ( C:\Windows の部分は Windows をインストールした場所です )
Windows 95 (初期型でない場合), 98, 98SE, ME でマルチユーザ環境の場合
  `C:\Windows\Profiles\<ユーザ名>\Application Data\` ( C:\Windows の部分は Windows をインストールした場所です )
Windows NT 4.0 の場合
  `C:\WINNT\Profiles\<ユーザ名>\Application Data\` ( C:\WINNT の部分は Windows をインストールした場所です )
Windows 2000, Xp の場合
  `C:\Documents and Settings\<ユーザ名>\Application Data\` ( C: の部分は環境によって異なります )
何らかの理由で レジストリキー ( 上記参照 ) を読み出せなかった場合か、初期の Windows 95
  吉里吉里の実行可能ファイルのあるフォルダになります

System.personalPath を指定する場合も、System.appDataPath を指定する場合も、同じマシンに複数の吉里吉里/KAG 作品、あるいはユーザごとのフォルダにフォルダを作成する他のアプリケーションと競合しないように、例で示した "吉里吉里の栞データ" の部分は、十分に他のアプリケーションなどと重ならなさそうな名前を選ぶ必要があり、また、十分に説明的な名前が良いでしょう ( "<作品名>のセーブデータ" など )。
これらの方法 ( 吉里吉里の実行可能ファイルのあるフォルダと同じフォルダの下に作成するか、あるいはユーザごとのフォルダに作成するか ) のどちらが良いかは作品の配布形態によります。
たとえば、ユーザにダウンロードしてもらって展開、そのまま ( インストールなどの手順を踏まずに ) プレイという形態 (インストーラを使用しない場合) では、わざわざユーザごとのフォルダに保存する必要はないでしょう。吉里吉里の実行可能ファイルと同じフォルダの下に保存できた方が便利です。
しかし、たとえばインストーラを用いて Program Files 以下にインストールするときなどでマルチユーザ環境を対象にする場合はユーザごとのフォルダ ( System.appDataPath か System.personalPath を指定する ) にファイルを保存できた方が良いでしょう。特に Windows NT 系の OS ( 4.0/2000/Xp ) をターゲットにする場合でかつ、Program Files 以下にインストールするときは ユーザごとのフォルダに栞データを保存する形態をおすすめします。通常、一般ユーザは Program Files 以下にファイルを書き込む権限を持っていないためです。
また、ユーザのフォルダに栞データを保存すれば、吉里吉里の実行可能ファイル以下には通常ファイルを書き込む動作を行いません。CD-ROM から直接実行する場合などでもデータを保存することができます ( ただし Windows 95 の中にはユーザごとのフォルダが存在しないものがあるので、この場合は対応 OS から Windows 95 を除いた方が良いかと思います )。
ただし、System.appDataPath で示されるフォルダは、通常、隠しフォルダになってるので注意が必要です。データの置いてある場所の見通しをよくするには「マイ ドキュメント」下になる System.personalPath を使った方が良いでしょう。
Note
このほかにも、
`;saveDataLocation = Storages.getFullPath(System.readRegValue("HKEY_CURRENT_USER\\Software\\anycompany\\anyproduct\\savefolder"));`
等のようにレジストリから栞の保存場所の値を読み出すようにすることもできます。

# フリーセーブモード

KAG が栞を管理する方法には２つあります。

- あらかじめ用意された栞の場所にのみ保存できるモード
- 自由な場所に栞を保存できるモード(フリーセーブモード)

これらは Config.tjs の `freeSaveDataMode` で設定します。
「あらかじめ用意された栞の場所にのみ保存できるモード」では、メニューバーの「栞をたどる」「栞をはさむ」の下に、栞を保存可能な各場所を表すサブメニュー項目ができ、ユーザはそれらを選択することで栞を保存したり読み込んだりすることができます。
これに対して「フリーセーブモード」は KAG3 3.09 beta 5 から使用可能になったモードで、「栞をたどる」や「栞をはさむ」を選択すると、ファイル選択のダイアログボックスが開き、自由に栞ファイルを選んだり、自由な名前や自由な場所に栞ファイルを保存することができます。
「あらかじめ用意された栞の場所にのみ保存できるモード」では栞の最大数を作品を作る側で制限することができます。
「フリーセーブモード」では栞の最大数の制限はありません。各栞を単一のファイルとして管理できるため、フォルダごとに分類して保存したり、ファイル名としてコメントを記入したりする事ができます。エクスプローラでフォルダ間を移動させたりできますし、ファイルに「読みとり専用属性」をつければ、大切なデータに上書きすることも回避できます。
「フリーセーブモード」でのデフォルトのファイル名となるのは、セーブ可能なラベルの「見出し」です。
「フリーセーブモード」で注意しなければならないのは、特にシステム変数と通常の変数の関係が密接な作品の場合に、たとえば、作品を再インストールしてシステム変数がクリアされている状態で、古い栞のデータを読み込もうとするとデータに矛盾が生じるかもしれないということです ( 作品の作り方によります )。
フリーセーブモードであっても、システム変数やシステムの状態を保存するファイルは、上記「栞の保存場所」で説明した場所に保存されます。
また、他の吉里吉里/KAGの作品のデータを間違って読み込んでしまわないように、Config.tjs の saveDataID を設定しておくことをおすすめします ( デフォルトのままでも動作はしますがおすすめできません )。
saveDataID は、栞データに埋め込まれる ID を指定するもので、他の吉里吉里/KAGの作品と(たとえ他の方などの作品であっても)重ならないように、作品ごとに異なっている必要があります。ここで指定する ID は栞データに埋め込まれ、他の栞データと区別されるためだけに使用されるので、説明的である必要はありません。キーボードを適当に叩いた文字３０文字などでも良いのですが、ここの ID を思いつくのが面倒な方は http://kikyou.info/uuidgen/uuidgen.php でも ID を取得することができます ( ここで取得できる ID は、絶対に他の ID と重ならないと見なすことができます )。

# サムネイル画像の保存

Config.tjs の `saveThumbnail` を true に設定することで、栞データの拡張子は .BMP になり、画像としても栞データとしても有効なファイルを出力することができます。この場合、画像としては、栞を保存した時点での 画面のスナップショットが縮小された画像 (サムネイル画像) になります。セーブ可能なラベル位置でのスナップショットではありませんので、その栞から再開するときは、その場面そのものの位置からではなくて、その直前のセーブ可能なラベルから開始されます (サムネイルの画像と再開される実際の位置が少々食い違う可能性があるということです)。
これにより、とくにフリーセーブモードにおいて、エクスプローラや画像管理ソフトの「縮小表示」や「縮小版」、「サムネイル」などで栞データを管理しやすくなります。また、フリーセーブモードのファイル選択ダイアログのファイルの表示形式で「縮小表示(縮小版)」を選択することにより、サムネイルから栞を選択することが可能になります。
サムネイル画像を持った栞データは BMP ですので、他のアプリケーションなどで開くこともできますが、通常、他のアプリケーションなどでいったん開いて保存しなおすと、KAG の栞データとしては読み込めない物になるので注意が必要です。
右クリックサブルーチンで栞の保存を行う場合はすこし注意が必要になります ( locksnapshot タグと unlocksnapshot タグを参照してください )。

# アップデートと栞データの互換性

KAG ではセーブ/ロードは必ずラベルを目印にして行われているため、ある程度のシナリオファイルの変更でも、栞データの互換性を保つことができます。
互換性が失われる例はいくつかありますが、代表的なものとして

- シナリオファイル中でセーブ可能なラベルが変更されたり、消えたりした ( そのラベルから開始できないため )
- サブルーチンからの戻り先の構造が変わった ( 正しくサブルーチンの呼び出し元に戻れないため )

などがあります。
パッチなどを後から配布してアップデートをおこう場合はこのようなことに注意してください。