跳到主要内容

游戏存档

schema 定义:v1示例),v2.1示例
推荐使用最新 schema

Savedata Schema 说明

Savedata Schema v1 说明

  • 配置文件必须声明$schema,其值为该配置对应的 Json Schema URL
  • 配置文件中不应出现 schema 定义以外的值
  • 每个entry包含了一个特定路径的配置,通常情况下仅需要一个
    • pathMode路径模式否则必须为相对路径,相对路径的起始路径由具体设置决定
      • absolute路径必须为绝对路径
      • game路径必须为相对路径,以用户设置的游戏可执行文件所在路径为起始(该路径由客户端持久化存储,不是本配置文件的一部分)
      • document路径必须为相对路径,以用户文档目录为起始
      • profile路径必须为相对路径,以用户主目录为起始
    • path路径信息,内容必须为有效的路径(Windows 平台下使用 Windows 平台格式,相对路径分隔符使用正斜杠/),若为文件则以文件名结尾,若为文件夹则以/结尾
    • id唯一标识符,生成的备份文件中应当有一个同名文件夹,文件夹内容为依据本entry定义应当备份的文件

Savedata Schema v2.1 说明

  • 配置文件必须声明$schema,其值为该配置对应的 Json Schema URL
  • 配置文件中不应出现 schema 定义以外的值
  • 存档文件应为一个标准zip格式的压缩文件,其中包含配置文件本体
  • platform项为存档使用的平台,目前只有windows
  • caseSensitive项为在处理该存档时,路径是否大小写敏感(windows平台默认大小写不敏感)
  • entries项包含该存档所有的处理规则,至少需有1entry
    • id项为唯一标识 id,在entries中不可重复;生成的存档根目录中需有同名文件夹,包含符合本entry定义的文件
    • entry的起始路径由baseDirMode(路径模式)以及baseDir(路径)组成,baseDirMode4种情况
      • gameRoot:以用户指定的游戏根目录为起始(该路径由客户端管理,不是本配置文件的一部分),此时baseDir需为相对路径,最终起始路径为用户指定的游戏根目录和baseDir拼接的结果
      • userDocument:以操作系统当前用户的文档目录为起始,此时baseDir需为相对路径,最终起始路径为文档目录和baseDir拼接的结果
      • userProfile:以操作系统当前用户的主目录为起始(windows平台为%USERPROFILE%目录,linux平台为~目录),此时baseDir需为相对路径,最终起始路径为用户主目录和baseDir拼接的结果
      • absolute: 绝对路径,此时baseDir需为绝对路径,最终起始路径baseDir
    • filePatterns为该entry处理的具体规则,至少需有1filePattern
      • type2种情况:include代表该规则为包含项,exclude代表该规则为排除项
      • pattern为匹配的具体规则,允许*?,不支持正则表达式,具体规则和.NET 5+System.IO.Directory.EnumerateFiles方法中searchPattern的处理规则相同(文档链接
      • exclude项将会最后处理,以保证所有exclude项不会出现在最终存档中
    • clearBaseDirBeforeRestore项为是否在还原存档前清空该entry的起始路径目录

常见游戏引擎

Ethornell/BGI

识别方法:

  • 文件说明Ethornell - BURIKO General Interpreter
  • 文件版本 1.xxx.x.x(x 为任意 0-9 数字)
  • 合法商标BURIKO General Interpreter
  • 原始文件名BGI.exe
  • 游戏安装目录下或安装目录下的Archive文件夹下有大量data0xxxx.arc文件(x 为任意 0-9 数字),可能还有BHVC.exesystem.arcsysgrp.arcsysprg.arc等文件

程序化识别:

using System.Diagnostics;
using System.Text.RegularExpressions;
// exePath 为游戏可执行文件路径, baseDirPath 为游戏根目录路径
public static bool IsBgi(string exePath, string? baseDirPath = null)
{
var versionInfo = FileVersionInfo.GetVersionInfo(exePath);
bool result = versionInfo.FileDescription == "Ethornell - BURIKO General Interpreter"
|| versionInfo.InternalName == "Ethornell"
|| versionInfo.LegalTrademarks == "BURIKO General Interpreter"
|| versionInfo.OriginalFilename == "BGI.exe";
if (!result)
{
baseDirPath ??= Path.GetDirectoryName(exePath);
if (baseDirPath == null) { return false; }
var matches = 0;
var files = Directory.EnumerateFiles(baseDirPath, "*.*", new EnumerationOptions
{
RecurseSubdirectories = true,
MaxRecursionDepth = 1
});
var matchFileNames = new string[] { "BGI.exe", "BHVC.exe", "BGI.hvl", "sysgrp.arc", "sysprg.arc", "system.arc" };
matches += files.Where(f => matchFileNames.Contains(Path.GetFileName(f))).Count();
if (matches < 3)
{
Regex regex = new(@"^data[0-9]{3,5}\.arc$");
matches += files.Where(f => (Path.GetDirectoryName(f) == baseDirPath || Path.GetFileName(baseDirPath) == "Archive")
&& regex.IsMatch(Path.GetFileName(f))).Count();
}
result = matches >= 3;
}
return result;
}

存档位置:

  • 一般为一个文件(储存进度、设置等)和一个文件夹(文件对应存档槽位)
  • 文件一般在游戏安装目录下的BGI.gdb,部分汉化程序可能会更改名称(如BGI.chs等)
  • 文件夹一般在游戏安装目录下UserData文件夹,部分汉化程序可能会更改名称(如Data_CHS等)

存档配置文件示例:链接

Kirikiri 2/Z

SiglusEngine

TyranoScript

Artemis

CatSystem2

识别方法:

  • 文件说明和产品名称为cs2
  • 原始文件名为cs2.exe
  • 游戏安装目录下有cs2conf.dllcs2conf.dll,其文件说明和产品名称为cs2conf,原始文件名为cs2conf.dll
  • 游戏安装目录下有大量int文件,其中config.intbgm.intimage??.intpcm_?.intscene.int等文件以KIF(4B 49 46)开头

QLIE

Entis GLS

SoftPal

YU-RIS

识别方法:

  • 文件说明或产品名称为YU-RIS Script Engine
  • 原始文件名可能为空或yu-ris.exe
  • 产品版本为0, 2xx, x, x0, 4xx, x, x0, 5xx, x, x
  • 游戏安装目录下可能有YS???.DLL文件
  • 游戏安装目录下的pac文件夹内有大量ypf文件,其中bn.ypfcg.ypf等文件以YPF(59 50 46)开头

Ren'Py

AdvHD

yuka script

识别方法:

  • 游戏安装目录下有DATA0?.ykc文件,以YKC001(59 4B 43 30 30 31)开头
  • 游戏安装目录下可能有Start.yks文件,以YKS001(59 4B 53 30 30 31)开头

adv32/Circus

Whale/mirai

Silky Engine

NeXAS/Giga

识别方法:

  • 文件说明和产品名称可能为空或NeXAS
  • 原始文件名可能为空或NeXAS.exe
  • 游戏安装目录下有Script.pac文件,以PAC(50 41 43)开头

Shiina Rio

RPG Maker MV/MZ

RPG Maker XP/Vx/VxAce

Wolf RPG