集成存储重制版

集成存储重制版

集成存储的扩展与优化重制。新增公会宝箱、喂食箱与冷却喂食箱,即时事件驱动的存储检测,更安全的UObject缓存,直接容器追踪并显著减少全域扫描。

集成存储 重制版

扩展的存储支持 • 事件驱动的追踪 • 减少世界扫描 • 更安全的 UObject 处理

简介

这是对 Sarfflow 的集成存储 的扩展与优化重制版。

在建造或制作时,可以使用公会所有基地中存储的材料,现在支持更广泛的存储类型,并拥有更高效的服务器端实现。

此版本增加了对 公会箱子、饲料箱和冷却饲料箱 的支持,同时显著改变了存储容器的发现和追踪方式。

保留了原始服务器权威设计:材料保留在实际容器中,并由真实的游戏/服务器消耗,而非来自虚假或重复的库存。

新增内容

  • 公会箱子支持
  • 饲料箱支持
  • 冷却饲料箱支持
  • 新增存储容器通常 立即 被检测到
  • 拆除的容器会立即从追踪中移除
  • 事件驱动的存储拓扑,而非主要依赖定期轮询
  • 直接从存储模型解析物品容器
  • 减少全局 UObject / ItemContainer 扫描
  • 更安全的经过验证的 UObject 缓存
  • 缓存常用反射函数
  • 更高效的内部营地/容器 GUID 处理
  • 实时物品数量保留 — 物品计数不会存储在过时缓存中
  • 定期对账保留为自愈回退机制
  • 改进对世界变化和对象重建的处理
  • 改进对不支持存储类型的诊断

支持的存储

常规储物箱    ✓
公会箱子      ✓
饲料箱        ✓
冷却饲料箱    ✓

为什么此版本更高效?

原始实现更依赖于定期搜索帕鲁世界的对象和容器,以确定存在哪些存储及其归属位置。

此重制版将常规路径改为 事件驱动和索引化方式

1. 事件驱动的存储追踪

当构建或拆除受支持的存储容器时,模组会挂接帕鲁世界自身的存储可用性事件。

无需等待下一次定期扫描:

存储构建完成
    ↓
帕鲁世界报告该事件
    ↓
容器被立即追踪

这意味着新存储几乎立即可供集成存储使用。

2. 正常请求期间不再重复完整 ItemContainer 搜索

服务器现在维护已发现的相关存储容器的紧凑列表。

不再是概念上的如下操作:

客户端请求材料
        ↓
搜索所有 ItemContainers
        ↓
检查哪些是相关的
        ↓
计算总计

常规路径更接近:

客户端请求材料
        ↓
检查已追踪的公会容器
        ↓
读取它们当前的内容

这在拥有许多基地、容器和生成对象的世界中应越来越有优势。

3. 直接容器解析

当发现存储模型时,其实际物品容器可以通过帕鲁世界自身的存储模型/模块关系解析。

因此,模组无需搜索世界中的每个 PalItemContainer 来找出哪个容器属于新发现的箱子。

4. 更安全的缓存替代重复搜索

常用 Unreal 对象通过全局 UObject 注册表重复定位可能代价高昂。

此版本安全地缓存常用访问对象,同时在使用前验证它们仍然存在。

如果对象已被销毁或重建,则丢弃缓存的引用并重新解析。

这提供了缓存的性能优势,而不会盲目信任过时的 UObject 指针。

5. 物品数量保持实时

优化缓存的是 [b]存储存在的位置[/b],而不是每种物品的数量。

例如,模组可能记住:

容器 A → 基地 A
容器 B → 基地 B
容器 C → 基地 C

但它不会永久缓存:

木材  = 5000
石头 = 12000

实际容器内容在需要时读取。

因此,向已知箱子中再存入 1,000 石头不需要等待另一次拓扑扫描。

6. 8 秒对账现在主要是安全网

定期对账 有意未被移除

其作用现在主要是从异常情况中恢复,例如错过的事件、世界加载、流式传输或新创建的空营地。

简而言之:

事件
= 正常快速路径

定期对账
= 备份 / 自愈

这提供了事件驱动系统的响应性,同时保留了定期验证的可靠性。

安装

需要与帕鲁世界兼容的实验性 UE4SS 构建。

复制:

ModIntegratedStorageCpp

到你的活动 UE4SS Mods 目录。

对于当前 NativeMods / Workshop 风格的 UE4SS 安装,通常位于:

Palworld\Mods\NativeMods\UE4SS\Mods\

模组本身的目录结构应类似于:

ModIntegratedStorageCpp\
├── enabled.txt
├── config.txt
└── dlls\
    └── main.dll

重要提示:

不要与其他版本的集成存储同时运行。

移除或禁用:

  • Sarfflow 的原始集成存储 DLL
  • 集成存储 - 非官方社区修复版
  • 此重制版的任何旧版本

同一时间只能激活 一个 ModIntegratedStorageCpp

专用服务器

对于专用多人游戏,需在以下位置安装 相同版本

  • 专用服务器
  • 每个连接的客户端

服务器负责执行权威的跨营地存储整合和实际物品消耗。

远程客户端处理帕鲁世界建造/制作菜单所需的本地材料显示。

配置

默认配置:

verbose = true
reconcile_interval_ms = 8000
isi_refresh_ms = 1500
include_guild_chests = true
include_feed_boxes = true

verbose

首次测试时请保持启用:

verbose = true

一切正常后,可以使用:

verbose = false

以减少 UE4SS 日志输出。

reconcile_interval_ms

默认值:

reconcile_interval_ms = 8000

我建议保持 8000。

新增和移除容器现在通常通过事件处理,因此定期扫描主要用于恢复和自愈。通常没有必要激进地降低此值。

include_guild_chests

include_guild_chests = true

如果你特别希望排除公会箱子,请设置为 false。

include_feed_boxes

include_feed_boxes = true

如果你希望排除饲料箱 / 冷却饲料箱,请设置为 false。

故障排除

如果出现问题:

  • 设置 verbose = true
  • 重启游戏/服务器
  • 复现问题
  • 打开 UE4SS.log
  • 搜索 [ISGATE]

报告问题时,请包含:

  • 相关的 [ISGATE] 日志行
  • 单机 / 主机 / 专用服务器
  • 所有客户端是否安装了相同版本
  • 确切不工作的存储类型
  • 正在使用的其他物品、存储或建筑模组

如果未来的帕鲁世界更新引入了新的不支持存储模型,详细日志可能会显示:

[ISGATE] SRV skipped map-object class: ...

请在报告中包含该行。

鸣谢

主要功劳归于 Sarfflow。

Sarfflow 创造了集成存储以及此重制版所基于的核心架构,包括跨营地存储概念、服务器权威消耗、远程客户端材料显示系统以及客户端/服务器传输。

没有 Sarfflow 的工作,这个模组就不会存在。

原始模组 - 整合所有营地存储

原始源代码

Sarfflow 的源代码以 MIT 许可证发布,此衍生作品保留了原始版权/许可声明。

额外感谢 Bohamad98,集成存储 - 非官方社区修复版的作者。

他们在识别和处理公会箱子支持以及对象查找/性能问题方面的工作,对此重制版是重要的技术参考。

集成存储 - 非官方社区修复版

此版本基于 Sarfflow 的源代码,不会 重新分发 Bohamad98 的 DLL 或 Nexus 资源。

同时感谢 Okaetsu 和 UE4SS 贡献者 维护了与帕鲁世界兼容的 UE4SS 实现,使此类原生 C++ 模组成为可能。

这是一个非官方衍生/重制版本,与原版作者无关联或背书关系。

更新日志

3.3.1-Reworked

  • 添加了公会箱子支持
  • 添加了饲料箱支持
  • 添加了冷却饲料箱支持
  • 添加了事件驱动的存储添加/移除追踪
  • 添加了直接物品容器解析
  • 为新构建的存储添加了延迟初始化重试
  • 减少了全局 ItemContainer/UObject 扫描
  • 添加了经过验证的 UObject 缓存
  • 缓存了常用反射函数
  • 改进了内部 GUID/容器索引
  • 保持物品数量实时而非缓存堆叠计数
  • 将定期对账改为主要作为自愈回退机制
  • 改进了世界转换状态清理
  • 添加了不支持存储类的诊断
  • 添加了公会箱子和饲料箱配置开关
  • 保留了 Sarfflow 的服务器权威消耗和远程客户端显示架构

常见问题

问:这会使我的材料重复吗?

不会。材料保留在实际容器中。模组将适当的同公会存储暴露给帕鲁世界现有的建造/制作逻辑。

问:建造新箱子后需要等待 8 秒吗?

通常情况下不需要。存储的创建/移除现在由事件驱动。8 秒扫描主要是备份。

问:如果我向现有箱子放入更多物品,需要等待重新扫描吗?

不需要。容器位置被追踪,但其物品数量在需要时实时读取。

问:支持公会箱子吗?

支持。

问:支持饲料箱吗?

支持。

问:支持冷却饲料箱吗?

支持。

问:我能与原始集成存储一起安装吗?

不能。只能使用一个集成存储 DLL。

问:我能与社区修复版一起安装吗?

不能。此重制版已包含/重新实现了相关修复,并且两个版本都会尝试作为 ModIntegratedStorageCpp 运行。

如果原始模组对你有帮助,请也访问并支持 Sarfflow 的原始发布页面。