Space Engineers Blueprint Editor
一款面向《Space Engineers(太空工程师)》的 Windows 蓝图查看与编辑工具。项目使用 WinUI 3 和 MVVM 构建,可读取游戏本地、Steam Cloud 与创意工坊缓存中的 .sbc 蓝图,并复用已安装游戏的定义与序列化程序集。
Important
项目仍处于早期开发阶段(当前项目版本为 0.1.0)。编辑或删除蓝图前,请先备份整个蓝图目录;本项目不是 Keen Software House 的官方工具。
文档导航
主要能力
- 自动发现 Steam 安装的《Space Engineers》,也可手动指定游戏目录。
- 浏览本地、Steam Cloud 和创意工坊缓存蓝图,并按名称搜索。
- 通过文件选择器或拖放打开任意
.sbc蓝图。 - 查看作者、文件大小、网格与方块数量、DLC 以及建造所需组件统计。
- 按网格或方块组浏览方块,并通过属性树编辑基础字段。
- 在 WebGL 三维视图中选择、移动、旋转、复制或删除方块,并支持撤销/重做。
- 编辑网格 Skeleton 中的表面角点与面中心,实现装甲钣金形变。
- 批量切换可破坏性、可编辑性、网格尺寸和轻/重装甲定义。
- 浏览游戏中的方块、组件、物品和场景定义。
- 提供中英文界面资源、主题、导航布局和缓存管理设置。
下图概括了应用处理蓝图时涉及的主要数据源:
flowchart LR
User["用户"] -->|"选择或拖放 .sbc"| UI["WinUI 3 桌面应用"]
BP["%APPDATA%/SpaceEngineers/Blueprints"] --> UI
UI --> Loader["GameAssemblyLoader"]
Loader --> Bin["游戏 Bin64 程序集"]
UI --> Core["SpaceEngineersCore"]
Core --> Content["游戏 Content 与定义"]
Core --> Model["ObjectBuilder 蓝图对象"]
Model --> Details["详情与材料统计"]
Model --> Editor["属性、三维与钣金编辑"]
Editor --> Save["核心序列化与原子替换"]
Save --> Saved["bp.sbc 与 bp.sbcB5"]
运行要求
- Windows 10 1809(Build 17763)或更高版本;建议使用 x64,并安装 Microsoft Edge WebView2 Runtime。
- 已通过 Steam 安装《Space Engineers》。
- 若从源码构建:Visual Studio 2022 与 .NET 8 SDK,并安装 Windows 应用开发相关组件。
游戏 DLL 不会提交到仓库,也不会复制到应用输出目录。构建和运行时都会直接从已安装游戏的 Bin64 加载它们,因此游戏更新后建议重新构建并做一次基本功能检查。
从源码开始
git clone https://github.com/XFEstudio/SpaceEngineersBlueprintEditorInWinUI.git
cd SpaceEngineersBlueprintEditorInWinUI
dotnet build SpaceEngineersBlueprintEditor.sln -c Debug -p:Platform=x64
若自动检测不到游戏,可显式传入 Bin64:
dotnet build SpaceEngineersBlueprintEditor.sln -c Debug -p:Platform=x64 `
-p:SpaceEngineersBinPath="D:\Games\SpaceEngineers\Bin64"
也可以设置环境变量后重新打开终端:
$env:SPACE_ENGINEERS_ROOT = "D:\Games\SpaceEngineers"
# 或:$env:SPACE_ENGINEERS_BIN = "D:\Games\SpaceEngineers\Bin64"
更完整的环境说明、检测顺序和故障排查见开发指南。
快速使用
- 启动应用,等待游戏定义加载完成。
- 将
.sbc拖入首页,或从导航栏打开本地、云端、工坊蓝图列表。 - 在详情页检查蓝图信息、DLC、网格和组件统计。
- 进入编辑器,通过网格、方块组、属性树、三维视图或钣金视图修改内容。
- 使用“保存”写回当前
.sbc,或在三维页使用“另存为”创建新文件。
Caution
蓝图列表中的“删除”会直接删除对应蓝图文件夹;保存到已有文件也可能覆盖原内容。请在游戏未写入同一蓝图时操作,并事先保留副本。
蓝图目录
应用按《Space Engineers》的默认用户数据结构读取蓝图:
| 类型 | 默认目录 |
|---|---|
| 本地蓝图 | %APPDATA%\SpaceEngineers\Blueprints\local |
| Steam Cloud 蓝图 | %APPDATA%\SpaceEngineers\Blueprints\cloud |
| 创意工坊缓存 | %APPDATA%\SpaceEngineers\Blueprints\workshop\temp\Steam |
应用会读取每个蓝图目录中的 bp.sbc 和可选的 thumb.png。
项目组成
| 项目 | 作用 | 目标框架 |
|---|---|---|
SpaceEngineersBlueprintEditor |
WinUI 3 主程序、页面、ViewModel 与应用服务 | net8.0-windows10.0.22621.0 |
SpaceEngineersBlueprintEditor.GameAssemblyLoader |
查找游戏目录并解析托管/原生依赖 | net48;net8.0 |
SpaceEngineersBlueprintEditor.SpaceEngineersCore |
初始化游戏定义、读取 ObjectBuilder、图像与网格转换支持 | net48 |
SpaceEngineersBlueprintEditor.BlueprintConverter |
独立的 JSON → .sbc 辅助转换器;主界面当前直接调用核心保存 API |
net48 |
SpaceEngineersBlueprintEditor.Installer |
WPF 安装与升级程序 | net8.0-windows |
SpaceEngineersBlueprintEditor.Test |
开发期控制台试验项目,不是标准 dotnet test 测试套件 |
net8.0 |
当前限制
- 仅支持 Windows;核心逻辑依赖已安装游戏的程序集和内容文件。
- 主编辑流程面向船舶蓝图中的第一个
ShipBlueprint定义。 - 三维视图使用方块定义包围盒而不是游戏模型;占位检测也不能覆盖所有多格方块重叠情形。
- 网格尺寸与轻/重甲转换只替换能从当前游戏定义中找到配对项的方块,未支持方块会保留并计数。
- 三维视图的撤销/重做只覆盖该视图中的移动、旋转、复制和删除,不覆盖属性、钣金或批量转换。
- SE Toolbox 格式导出入口尚未接通完整实现。
- 核心层为无窗口加载游戏定义而实现了最小平台/渲染桩,未覆盖的游戏接口可能抛出
NotImplementedException。 - 仓库暂未提供可由
dotnet test发现的自动化测试项目。
技术栈
- C#、.NET 8 与 .NET Framework 4.8
- WinUI 3 / Windows App SDK
- WPF(安装器)
- CommunityToolkit.Mvvm
- Space Engineers / VRage ObjectBuilder 与定义系统
参与贡献
欢迎提交 Issue 和 Pull Request。开始前请先阅读贡献指南,并避免提交《Space Engineers》的 DLL、游戏资源或个人蓝图数据。
许可证与声明
本项目以 MIT License 发布。《Space Engineers》及相关名称、资源和程序集的权利归其各自权利人所有;本仓库不分发游戏文件。