Stardew山谷加载优化器,用于SVE-太空核心-以及更多

Stardew山谷加载优化器,用于SVE-太空核心-以及更多

重度修改的星露谷物语在打开存档或切换场景时可能需要很长时间。星露谷加载优化器会提前准备所选文件、地图和图片,并在选择存档后移除固定的等待时间,同时将存档所有权和场景切换交由游戏及与存档相关的活动mod管理。

Stardew Loading Optimizer

英文是默认文档语言。中文说明见下半部分。

安装了大量 Mod 的星露谷在打开存档或切换场景时可能需要很长时间。Stardew Loading Optimizer 会提前准备选定的文件、地图和图片,并移除选择存档后的固定等待时间,同时将存档所有权和场景切换保留给游戏及相关存档 Mod。

该 Mod 不会替换完整存档,也绝不会让缓存成为加载、保存或移除所必需的内容。缓存数据缺失、损坏或不适用时,将回退到游戏的原始路径。

环境要求

必需:

  • Stardew Valley 1.6.15 或更高版本;
  • SMAPI 4.5.0 或更高版本。

可选:

  • Content Patcher:没有它本 Mod 也能运行;
  • SpaceCore:启用本 Mod 对 SpaceCore 独立数据的安全空数据快捷方式;
  • Generic Mod Config Menu:提供游戏内设置页面;没有它仍可使用 config.json

在 Nexus 的 Requirements(依赖项)部分,只将 Stardew Valley 和 SMAPI 列为必需项。不要将 Content Patcher、SpaceCore 或 Generic Mod Config Menu 标记为必需依赖。

安装

  1. 安装 SMAPI。
  2. 下载主 Mod 压缩包。不要将测试指南压缩包放入 Mods 文件夹。
  3. 将压缩包中的 StardewLoadingOptimizer 文件夹放入游戏的 Mods 文件夹。
  4. 最终路径应类似于 Stardew Valley/Mods/StardewLoadingOptimizer/manifest.json;不要添加额外的文件夹层级。
  5. 启动游戏一次。默认设置即可直接使用。

不要将测试驱动程序、测试日志、存档、config.json 或其他 Mod 的文件放入发布压缩包中。

功能说明

  • 减少选择存档后、实际开始读取前的固定等待时间(SaveFileSlot.Activate);参考测试中约减少了 2.17 秒;
  • 在有限的内存限制内准备选定的文件、编译后的地图和解码后的图片;
  • 缩短场景切换时的黑屏淡入淡出时间(Fast Warp),但不会将地图显示或图形设备工作移至后台线程;
  • 当安装了 SpaceCore 时,仅对确认为空的数据使用快捷方式,其他情况均保留在 SpaceCore 的原始路径上;
  • 每当缓存数据缺失、损坏或不兼容时,回退到游戏或原始 Mod 的路径。

各项目技术与结果

以下每项内容说明了 Mod 的实际作用及观察结果。除了存档选择边界外,大多数百分比来自一次开启/关闭对比,因此初步观察结果并不代表每台计算机都能获得固定的性能提升。

  • 项目 1:从点击存档到实际读取。 技术:该 Mod 仅将存档槽内置的固定等待时间设为零(一个修改 ActivateDelay 的 Harmony 补丁),并不会替换真实的加载路径(SaveFileSlot.ActivateSaveGame.Load)。结果:关闭时约 2,380.8 ms,开启时约 214.5 ms,减少了 2,166.2 ms,约 91.0%。这是选档后的等待时间,并非完整存档加载时间减少 91.0%
  • 项目 2:整体存档加载。 技术归因:无法安全地归因于单一技术;这是一个外部原生边界(getLoadEnumerator())观察,所有安全功能均在运行。结果:比两次未安装 Mod 的观察结果低约 24.3%-26.6%,但并非稳定的因果性完整加载百分比,也不能归因于某个缓存。
  • 项目 3:传送到矿井。 技术:仅加速了普通场景切换时的黑屏淡入淡出(在 Game1.performWarpFarmer 后确认普通传送,然后调整 ScreenFade.UpdateFadeAlpha);原生传送和位置变化保持不变。结果:某条矿井路线约快 546 ms,即 53.2%;这并非对每张地图或每条路线的保证。
  • 项目 4:编译后的地图缓存。 技术:存储并复用兼容的已解析地图结果(围绕 TMXFormat.Load(Stream) 的缓存及版本指纹检查),在不适用时回退。结果:一次观察快 2,119.0 ms,即 8.2%;仅为方向性结果,并非稳定保证。
  • 项目 5:后台地图准备。 技术:在标题画面期间预热安全的纯 CPU 地图数据(后台准备协调器和地图缓存预热);不会在后台创建或显示地图。结果:一次观察快 1,786.6 ms,即 6.8%;仅为方向性结果。
  • 项目 6:解码图片缓存。 技术:复用已由 CPU 解码的图片数据(ModContentManager.LoadRawImageData 处的缓存);GPU 纹理仍在游戏线程上创建。结果:一次观察快 3,604.2 ms,即 13.3%;仅为方向性结果,并非稳定保证。
  • 项目 7:后台图片准备。 技术:在标题画面期间准备 CPU 解码的图片数据(后台图片准备和解码图片缓存);不会在后台创建 GPU 纹理。结果:不同对比中方向相反,因此没有稳定的可发布百分比。
  • 项目 8:后台文件预取。 技术:加载完成后,以受限速率和大小读取选定资源(后台文件预取)以预热操作系统文件缓存。结果:原始对比差异约 5.3%,但预取在 SaveLoaded 之后开始,因此不发布存档加载加速百分比。
  • 项目 9:延迟非当前图块集。 技术:在初始阶段延迟当前屏幕之外的图块集,并在空闲时稍后准备(延迟图块集加载),在不安全时回退。结果:加载和传送的观察方向不同,因此不发布稳定百分比。
  • 项目 10:SpaceCore 空数据快捷方式。 技术:仅对确认为空的辅助文件跳过完整的 XML 往返(空辅助文件快速路径);非空或不确定的数据保留在 SpaceCore 的原始路径上。结果:一次观察约快 340.6 ms,即 1.4%,低于确认阈值,不宣传为稳定收益。
  • 项目 11:并行 SpaceCore 数据转换器设置。 技术:并行构建独立的数据转换器,并在全部成功后一起发布(并行序列化器初始化);失败时回退到原始路径。结果:一次观察反而慢约 874.0 ms,即 3.8%;不宣传任何收益。
  • 项目 12:FastSave。 技术状态:早期的完整存档对象替换路径(FastSave)已被证明会导致语义和运行时问题,现已退役。其早期的 49.1% 不是 rc.12 的结果,70% 是历史目标,并非已接受的结果。

安全卸载

该 Mod 不会添加 Mod 所必需的存档字段,也不会替换游戏的存档写入路径。

建议的卸载步骤:

  1. 关闭游戏并备份存档。
  2. 如果安装了 Generic Mod Config Menu,返回标题画面,启用 清理缓存并准备移除 Mod,然后点击保存。
  3. 等待日志报告完成,然后关闭游戏。
  4. 仅删除 Mods/StardewLoadingOptimizer
  5. 如果未使用准备操作,也可以在游戏关闭后删除该 Mod 的目录:%AppData%/StardewValley/ModData/neoiw.StardewLoadingOptimizer

准备操作仅在标题画面运行。它首先停止优化,移除该 Mod 的补丁,等待后台工作完成,然后删除该 Mod 自身的缓存。如果玩家仍在游戏世界中或工作程序无法安全停止,它不会强制删除;优化保持暂停状态,并在下次标题画面时重试清理。

不要删除 Saves 文件夹,不要删除其他 Mod 的 ModData,也不要在游戏运行时移除该 Mod。卸载后的首次原生加载可能会较慢。

许可证

本项目根据 GPL-3.0-only(强 Copyleft 许可证)授权。发布包包含 LICENSENOTICE。你可以使用、修改和再分发该 Mod,但修改后的分发必须遵守 GPL-3.0-only,并提供相应的源代码和许可证文本。Stardew Valley、SMAPI、MonoGame、Harmony 及其他第三方组件不属于本项目,仍受其各自许可证的约束。

支持

报告问题时,请提供:

  • Stardew Valley 和 SMAPI 版本;
  • 是否安装了 SpaceCore、Content Patcher 或 Generic Mod Config Menu;
  • 所选的内存配置;
  • 问题发生在存档加载、场景切换还是保存期间;
  • 是否出现错误、无限黑屏、地图缺失或存档写入失败。

不要上传存档、个人配置文件或包含私人路径的完整日志。请先备份存档,并仅提供相关的、经过审查的日志部分。


中文发布页

简介

在安装很多 Mod 的星露谷中,进入存档和切换场景可能需要等待很久。星露谷加载优化器会提前准备一部分文件、地图和图片,并缩短选中存档后的固定等待,同时保留游戏原本负责存档和场景切换的流程。

它不会替换完整存档,也不会把缓存变成存档能够打开的必要条件。缓存损坏、缺失或不适用时,会自动回到游戏原本的读取方式。

需要什么

必需:

  • Stardew Valley 1.6.15 或更高版本;
  • SMAPI 4.5.0 或更高版本。

可选:

  • Content Patcher:没有它也能使用本 Mod;
  • SpaceCore:安装后,本 Mod 可以对 SpaceCore 的独立数据使用安全的空数据快捷通道;
  • Generic Mod Config Menu:提供游戏内设置页面;没有它也能使用 config.json

在 Nexus 的 Requirements(依赖)区域,只应把 Stardew Valley 和 SMAPI 作为必需项。Content Patcher、SpaceCore、Generic Mod Config Menu 不要标为必需依赖。

安装

  1. 安装 SMAPI。
  2. 下载主 Mod 压缩包,不要下载测试说明包到 Mods 文件夹。
  3. 把压缩包里的 StardewLoadingOptimizer 文件夹放入游戏的 Mods 文件夹。
  4. 确认最终路径类似 Stardew Valley/Mods/StardewLoadingOptimizer/manifest.json,不要多套一层文件夹。
  5. 启动游戏一次。默认设置可以直接使用。

不要把测试驱动、测试日志、存档、config.json 或其他 Mod 文件放进发布包。

它会做什么

  • 减少选中存档后、真正开始读取之前的固定等待(SaveFileSlot.Activate);参考测试中约少 2.17 秒;
  • 在有内存上限的情况下准备文件、编译好的地图和已经解码的图片;
  • 缩短场景切换的黑屏淡入淡出(Fast Warp),但不把地图显示或显卡工作移到后台;
  • 如果安装了 SpaceCore,只对确定为空的独立数据使用快捷通道,其他情况继续使用 SpaceCore 原本的流程;
  • 所有不适用、损坏或不匹配的缓存都会回退到游戏或原 Mod 的正常流程。

每个项目的技术与结果

下面每项单独说明“做了什么”和“测到了什么”。除了选档固定等待外,带百分比的功能大多只做了一次开启/关闭对比,所以初步观察不等于每台电脑都能得到的固定收益。

  • 项目一:点击存档到真正开始读取。 技术:只把选档槽自带的固定等待归零(修改 ActivateDelay 的 Harmony 补丁),不替换真正读档(SaveFileSlot.ActivateSaveGame.Load)。结果:关闭约 2,380.8 ms,开启约 214.5 ms,少 2,166.2 ms,约 91.0%。这是“选档后的固定等待”,不是完整进档减少 91.0%
  • 项目二:整体进档。 技术归因:没有能安全单独分配的技术;这是所有安全功能一起运行时的共同原生边界(getLoadEnumerator())观察。结果:比两次无 Mod 观察低约 24.3%–26.6%,但不是完整进档的稳定因果百分比,不能分给某个缓存。
  • 项目三:传送到矿井。 技术:只加快普通场景切换的黑屏淡入淡出(Game1.performWarpFarmer 后确认普通传送,并调整 ScreenFade.UpdateFadeAlpha),原生传送和地点切换不变。结果:这条矿井路线一次观察少约 546 ms,约 53.2%;不代表所有地图和路线。
  • 项目四:编译好的地图缓存。 技术:保存并复用兼容的地图解析结果(TMXFormat.Load(Stream) 缓存和版本指纹检查),不适用时回退原路径。结果:一次观察少 2,119.0 ms,约 8.2%;方向性数字,不是稳定承诺。
  • 项目五:提前准备地图。 技术:标题界面后台预热安全的 CPU 地图数据(后台准备协调器和地图缓存预热),不在后台创建或显示地图。结果:一次观察少 1,786.6 ms,约 6.8%;方向性数字。
  • 项目六:已解码图片缓存。 技术:复用已经由处理器解码好的图片数据(ModContentManager.LoadRawImageData 缓存),显卡贴图仍在游戏线程创建。结果:一次观察少 3,604.2 ms,约 13.3%;方向性数字,不是稳定承诺。
  • 项目七:进档前提前准备图片。 技术:标题界面提前准备处理器解码的图片数据(后台图片准备和已解码图片缓存),不在后台创建显卡贴图。结果:不同对比方向相反,暂时没有可发布的稳定百分比。
  • 项目八:后台预读文件。 技术:读档完成后,以有上限的速度和容量读取资源(后台文件预取),只预热系统文件缓存。结果:原始差异约 5.3%,但预读在 SaveLoaded 之后才开始,所以没有可发布的进档加速百分比。
  • 项目九:延后加载当前画面外的图集。 技术:初始加载时暂缓非当前画面的图集,之后空闲时再准备(延迟图集加载),不适用时回退。结果:进档和传送观察方向不同,没有稳定百分比。
  • 项目十:SpaceCore 空数据快捷通道。 技术:只有确认附属文件为空时才跳过完整 XML 往返(空侧车快捷通道);有内容或不确定时仍走 SpaceCore 原路径。结果:一次观察少约 340.6 ms,约 1.4%,低于确认门槛,不宣传为稳定收益。
  • 项目十一:并行建立 SpaceCore 数据转换器。 技术:并行建立互不共享的数据转换器,全部成功后一起发布(并行序列化器初始化);失败时回退原路径。结果:一次观察反而慢约 874.0 ms,约 3.8%,不宣传收益。
  • 项目十二:FastSave。 技术状态:早期完整存档对象替换(FastSave)已被证明存在语义和运行错误,已经退休,不属于 rc.12。早期 49.1% 不属于当前版本,70% 是历史目标,不是验收结果。

安全卸载

本 Mod 不向存档写入必须依赖它的字段,也不负责替换游戏的存档保存流程。

推荐卸载步骤:

  1. 先关闭游戏,并备份存档。
  2. 如果安装了 Generic Mod Config Menu,回到标题界面,打开本 Mod 设置,启用“清理缓存并准备移除 Mod”,点击保存。
  3. 等日志显示清理完成后,关闭游戏。
  4. 只删除 Mods/StardewLoadingOptimizer 文件夹。
  5. 如果没有使用准备卸载功能,关闭游戏后也可以删除本 Mod 专属目录:%AppData%/StardewValley/ModData/neoiw.StardewLoadingOptimizer

准备卸载功能只在标题界面执行。它会先停止优化、撤销本 Mod 的补丁、等待后台工作结束,再删除本 Mod 自己的缓存。如果当前仍在游戏世界中,或后台工作没有安全结束,它不会强行删除,而是保持优化暂停并等待下一次标题界面重试。

不要删除 Saves 文件夹,不要删除其他 Mod 的 ModData,也不要在游戏运行时删除 Mod。卸载后的第一次原生读档可能较慢,这是正常现象。

许可

本项目使用 GPL-3.0-only(强传染式开源许可)。发布包包含 LICENSENOTICE。你可以使用、修改和再发布本 Mod,但分发修改版本时必须遵守 GPL-3.0-only 并提供相应的源代码和许可文本。Stardew Valley、SMAPI、MonoGame、Harmony 及其他第三方组件不属于本项目,仍适用各自的许可。

支持与问题报告

报告问题时,请说明:

  • Stardew Valley 和 SMAPI 版本;
  • 是否安装 SpaceCore、Content Patcher 或 Generic Mod Config Menu;
  • 使用的内存档位;
  • 问题发生在进入存档、切换场景还是保存时;
  • 是否出现错误、黑屏不结束、地图为空或存档写入失败。

不要上传存档、个人配置或包含私人路径的完整日志。先备份存档,再提供经过检查的相关日志片段。


Credits / 致谢

  • AI-assisted development and review / AI 辅助开发与检查:DeepSeek & Sol & Opus