跳转到内容

支持的引擎

Sakura 在底层使用两套独立的引擎框架来运行游戏:经典引擎(NScripter/ONScripter)和 ONScripter-RU——一个 GPU 加速的分支,用于《海猫鸣泣之时》(Umineko no Naku Koro ni)等更新、要求更高的作品。

引擎显示为徽标用于
NScripter / ONScripter(Shift-JIS)ONScripterNScr经典日文编码游戏
NScripter / ONScripter(UTF-8)ONScripterNScrUTF-8 汉化/翻译版及重新打包版
ONScripter-RUONScripter-RURUUmineko 等 GPU 时代游戏

这两个经典变体只是编码方式不同,而非不同的引擎——两者在你的资料库中都显示为”ONScripter”,编码方式(Shift-JIS 或 UTF-8)会单独显示在游戏详情的芯片中。

导入游戏时,Sakura 会扫描其文件以判断需要哪种引擎——除非你想手动选择,否则无需自行判断。检测按以下顺序进行:

  1. 存在 script.file → ONScripter-RU。这是 ONScripter-RU 使用的打包脚本文件名;经典引擎从不生成此名称的文件,因此这本身就是一个可靠的信号。

  2. fonts/ 文件夹加上 0.txt → ONScripter-RU。部分重新打包的 RU 游戏会附带一个普通的 0.txt,但与之相伴的必需 fonts/ 子文件夹才是关键标志——经典游戏从不附带此文件夹。

  3. 散装启动脚本 → 经典 ONScripter:

    • 0.txt / 00.txt → Shift-JIS
    • 0.utf / 0.utf.txt / 00.utf / 00.utf.txt → UTF-8
    • nscr_sec.dat / nscript.___ / nscript.dat → Shift-JIS
    • pscript.dat → UTF-8

    (如果某个游戏同时带有 Shift-JIS 和 UTF-8 标志文件,则以 Shift-JIS 为准。)

  4. 仅含压缩包的导入——如果文件夹中只包含一个打包压缩包(arc*.nsa*.ns2*.sar)而没有散装启动脚本,仍会被标记为经典 ONScripter,以便获得正确的资料库徽标。

  5. 否则该游戏将被标记为未知。

每个游戏的设置 → 引擎选择器都可让你强制指定自动 / ONScripter / ONScripter-RU,而不依赖检测结果。这是一项针对单个游戏的内在设置——不受”使用全局设置”开关的影响,并会在你下次启动该游戏时生效。

经典引擎和 ONScripter-RU 的功能并不对等。RU 是一个更新的、基于 GPU 的分支,专注于让高要求的游戏顺利运行,因此它并未为经典引擎的多项附加功能提供接口。

经典 ONScripter(NScripter/ONScripter,Shift-JIS 或 UTF-8)

Section titled “经典 ONScripter(NScripter/ONScripter,Shift-JIS 或 UTF-8)”
  • 渲染缩放、放大滤镜(平滑/xBRZ/锐利)以及对照自适应锐化(CAS),可按游戏单独调整,也可在游戏悬浮层中实时调整
  • 回退/倒带,可调整回退深度
  • 跳过未读文本
  • 运行时字体切换(游戏文件夹字体、Sakura 内置字体,或你导入的字体库)
  • 自动翻译(Apple 设备端翻译,需 iOS 18+)——详见翻译
  • 文本语言/菜单语言自动检测
  • 自动模式计时和音频缓冲区大小(与经典引擎共用)
  • 游戏 ID 和 NSA 偏移量覆盖(与经典引擎共用)
  • 不支持显示滤镜(渲染缩放/放大/CAS)、不支持回退、不支持跳过未读开关、不支持运行时字体切换,也不支持翻译——RU 没有针对这些功能的控制接口,因此 Sakura 会为 RU 游戏完全隐藏这些设置,而不是显示不起作用的控件。单个游戏的设置界面会显示一段简短的”引擎限制”提示来说明这一点。
  • 游戏内悬浮层也反映了同样的限制:RU 的快捷菜单只显示跳过和自动前进控件(没有倒带),完整悬浮层菜单中的”重置到标题界面”和引擎内菜单快捷方式也会被禁用,因为 RU 同样没有提供这些接口。

“每次会话仅限一个引擎家族”规则

Section titled ““每次会话仅限一个引擎家族”规则”

两套引擎框架都是各自独立的原生库,各自链接了自己的一份 SDL2 副本。在同一个运行中的 App 内同时加载两者并不安全,因此 Sakura 在每次 App 会话中只允许使用一个引擎家族:一旦你启动了经典游戏或 ONScripter-RU 游戏中的任意一个,本次会话中启动的其他所有游戏都必须使用同一家族。此外,ONScripter-RU 在每次会话中只能运行一次,因为其干净关闭路径比经典引擎的实现更新、更年轻。

如果你尝试启动一个所需引擎家族与当前会话中已使用的家族不同的游戏,Sakura 会显示需要重新启动提示,而不会启动它:

“此游戏使用的引擎与本次会话中已使用的引擎不同。请关闭并重新打开 App,然后先启动此游戏。”

选择关闭 App 会退出 Sakura,以便你重新启动它并从另一个游戏开始。如果你需要在经典游戏和 Umineko 这样的 RU 游戏之间切换,请预期需要在两者之间重启 App。