XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEToolBox

【WPF】XFE工具箱

公开
关注 0 Fork 0 Star 0
UTF-8

太空工程师插件管理器

XFE ToolBox 的独立源码工具,包含自行实现的 XFE Loader。启动引导、插件桥、配置格式和管理界面均在本目录内;不安装或依赖 PluginLoader、Pulsar 或其他第三方加载器。

使用

  1. 在 XFE ToolBox 1.2.1 或更新版本中导入 .xfetool 包,或在编辑器打开本目录。
  2. 打开「启动与环境」,自动检测游戏,或选择安装目录下的 Bin64,点击「构建 XFE 加载器」。需要已安装的 Windows .NET Framework 4.8 和 Space Engineers。
  3. 在「插件管理」导入插件入口 DLL,或包含已编译插件的目录。入口 DLL 同目录下的依赖与资源会一起复制到工具的独立版本目录;建议每个插件使用单独的发布文件夹。
  4. 勾选需要启用的插件并应用更改,然后启动游戏。启动参数采用列表形式,每一行是一个参数;点击 + 添加。
  5. 修改启用清单后,可先正常退出游戏再应用,或启用「应用后自动重启」。游戏未运行时,应用更改不会自行启动游戏。

也可以直接启动原版游戏、正常退出或重启。退出使用游戏窗口的正常关闭流程,等待进程结束后才替换启用清单并启动;请先保存存档。游戏仍在询问是否保存或超过等待时间时,本次操作停止,不强制结束游戏。

自动同步、备份与日志

启用源文件监视并保存设置后,工具监视已启用插件的原始 DLL 目录。文件变化稳定至少 3 秒后,将入口和依赖复制为新版本;运行中的游戏会正常退出并重启,未运行的游戏只更新配置。监视仅在工具窗口打开时运行,存在未应用的插件清单更改时暂停同步。

每次覆盖已有配置都会先备份,旧 DLL 版本同时保留。在「备份与日志」可以恢复当前配置的历史版本、查看加载和管理日志、导出日志。配置被其他程序修改后,应用会提示先刷新,避免覆盖外部更改。备份仅覆盖插件清单,不包含游戏存档和插件自身运行数据。

数据保存在宿主为 xfestudio.space-engineers-plugin-manager 分配的 ToolDataStore.DataDirectory

路径 内容
settings.json 游戏路径、参数、重启和监视设置
profiles/default.json 默认插件启用清单,可在界面选择其他 JSON 配置
profiles/.xfe-backups/ 默认配置的自动备份;其他配置的备份保存在其同级目录
plugins/<版本标识>/ 入口 DLL、依赖与资源的独立副本
loader/xfe-loader-*/ 本机编译的启动引导、插件桥、完整性清单与 xfe-loader.log

自研加载流程

XfeLoaderSources.cs 包含两个 C# 5 程序的完整源码。XfeLoaderBuilder 使用 Windows Framework64 编译器,引用用户本机的游戏程序集,在工具数据目录中生成 XFE.SpaceEngineers.exeXFE.SpaceEngineers.Bridge.dll

启动引导设置游戏工作目录、程序集查找路径及当前进程的 Steam 应用标识,修正引擎的 MyFileSystem.ExePath / RootPath,调用游戏公开的 MyPlugins.RegisterUserAssemblyFiles 注册 XFE 插件桥,再调用原游戏入口。原始游戏参数逐项传递。游戏本身的程序、配置和安装目录无需改写。

插件桥按 XFE JSON 配置加载已启用 DLL 内的 VRage.Plugins.IPlugin 实现,转发 InitUpdateDispose,以及可选的 IHandleInputPlugin.HandleInput。依赖从插件所在目录解析;单个插件的构造或托管回调异常会记入日志,停止该实例并释放它,其余插件继续运行。所有插件与游戏处于同一进程,这不是进程隔离,也不能保证隔离原生崩溃或插件之间的依赖冲突。

适用于实现 SE 客户端插件接口的已编译 DLL;创意工坊世界模组、游戏内可编程方块脚本不使用此加载机制。依赖其他加载器专属 API 的插件需要适配。当前版本提供本地插件管理,不提供在线插件目录或源代码编译。

构建记录游戏关键程序集、原配置和 XFE 产物的 SHA-256。游戏更新或加载器产物变化后,启动检查会要求重新构建。工具包只分发源码,不包含游戏程序集或预编译的加载器二进制。

验证

验证项目位于仓库的 tests/SpaceEngineersPluginManager.Validation,覆盖配置冲突与恢复、参数传递、正常退出与取消、文件同步、WPF 绑定和窗口布局,并调用 ToolBox 实际宿主编译和包校验流程。

集成夹具会使用真实生成的 XFE 启动引导和插件桥启动独立的模拟游戏进程,验证七个 .NET Framework 插件的生命周期、异常隔离、依赖解析、禁用状态和退出码。另已针对本机 Space Engineers 1.210.014 的实际程序集编译通过。自动验证没有启动、关闭或修改用户的真实游戏;实际进游戏运行效果仍需首次使用时验证。