游戏存档文件相关

优质
小牛编辑
139浏览
2023-12-01

 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 FoldersAppData 键值 )。

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"));

 也可以用类似这样的形式读出注册表里存档文件夹所在的位置。

自由存档模式

 KAG 存档管理有两种方法。

  • 在预设的存档文件夹下保存档案模式
  • 由玩家选择保存到任意文件夹(自由存档模式)

 这些可以在 Config.tjs 的 freeSaveDataMode 处设定。

 「在预设的存档文件夹下保存档案模式」的情况、菜单栏的「保存档案」「读取档案」下,会列出存档栏,只要点击对应的一行,就可以进行存取操作。

 以此对应的「自由存档模式」是自 KAG3 3.09 beta 5 后可以使用的功能、选择「保存档案」或「读取档案」后,会跳出WINDOWS的文件选择对话框、可以自由为存档文件命名,并保存到自行选择的文件夹。

 「在预设的存档文件夹下保存档案模式」下,可以限制最大存档数量。

 「自由存档模式」下,最大存档数量没有限制。各存档文件可以分开管理。使用文件夹进行分类,为文件起名和加入注释都是可以的。也可以使用Explorer将存档文件自由移动。假如想要保护某个重要的存档不被误删,请将文件设成「只读」即可。
 「自由存档模式」下,默认的存档文件名是可存档标签竖线后面的「提示语」。

 「自由存档模式」下,有一点必须要注意。尤其是和系统变量有密切关联的游戏。例如、作品重新安装,系统变量没有保留的情况下,载入旧存档可能会出现错误 ( 特别是对制作者…… )。
 即使是自由存档模式,系统变量、系统状态(例如窗口/全屏、字体)等的记录,也是保存在上面提到的「存档的路径」下。

 此外,为了自由存档的档案文件不会和其他的吉里吉里/KAG作品档案混起来。可以对 Config.tjs 的 saveDataID 进行设定 ( 按照默认设定也是可以的,但不保证不出问题 )。
 saveDataID 是会被记入每个档案文件的标记。为了不和其他的吉里吉里/KAG作品(例如其他人做的游戏)混用存档,给作品设定专属 ID 是很有必要的。这里指定的 ID 只是为了区别档案文件使用,没有必要特别说明。使用关键字自行输入,长度 30 字也可以。如果觉得自己想 ID 很麻烦,请使用 http://kikyou.info/uuidgen/uuidgen.php 自动生成 ID 。 ( 这里生成的 ID ,基本上是不可能和其他 ID 重名的 )。

缩略图的保存

 Config.tjs 的 saveThumbnail 设为 true 的情况下,存档文件的扩展名会变成 .BMP ,既是图片,又是有效的档案文件。这种情况下,图片的内容是保存时,游戏画面的小截图 (缩略图) 。因为不是存档可能标签所在位置的截图,读取档案的时候,并不会回到这个画面,而是回到之前最近一个可存档标签的位置 (也就是说缩略图显示的图象和读取后显示的游戏画面可能会有错位)。
像这样,特别是自由存档模式的情况下,使用Explorer或者画像管理软件的缩略图功能,就可以方便地管理游戏档案了。此外,自由存档模式的文件选择窗口里,选择查看-「缩略图」的话,就可以直接看到图片档案了。

带有缩略图的存档文件,虽然和普通的 BMP 文件无异,可以使用图片处理软件查看。但是,使用其他图片处理软件编辑的话,存档信息就会丢失,这一点请注意。

 使用右键菜单/自制存取界面的情况,保存档案为缩略图时,也有一些注意事项(请参考指令 locksnapshot 和 unlocksnapshot )。

游戏版本更新与档案的可继承性

 在 KAG 里,存储、读取时必须要通过可存档标签,因此,一定程度上可以保证当剧本档内容改变的时候,旧的档案依然可以正常使用。
 但以下将列出一些典型的、档案无法继承的情况。

  • 剧本档中,可存档标签名改变或者被删除(无法从这个标签开始继续进行游戏)
  • 进行事件呼叫后返回,但返回处的剧本已被改变(无法返回呼叫时所在的正确位置)

像这样的情况是可能发生的。

 使用游戏补丁进行版本更新的情况下,请注意这些。