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 是没有用户文件夹这种东西的、这种情况,不要在 Windows 95 下运行比较好 )。
可是、System.appDataPath 所指向的文件夹,通常是隐藏文件夹。想让档案容易查看,放在「我的文档」下,也就是 System.personalPath 所指向的路径比较好。
Note
此外、
;saveDataLocation = Storages.getFullPath(System.readRegValue("HKEY_CURRENT_USER\\Software\\anycompany\\anyproduct\\savefolder"));
也可以用类似这样的形式读出注册表里存档文件夹所在的位置。