# 幸福工厂蓝图编辑器 - 项目文档 ## 项目概述 这是一个用于解析和编辑《幸福工厂》(Satisfactory)游戏蓝图(.sbp文件)的Web工具。用户可以上传蓝图文件,查看和修改其中的材料信息,然后下载修改后的蓝图文件。 ## 文件结构解析 ### 1. 文件头部 (32字节/64位十六进制) 结构如下: ``` [4位] version - 版本号 [4位] header_size - 头部大小(目前总是错误的) [4位] timestamp - 时间戳 [4位] unknown1 - 未知字段1 [4位] unknown2 - 未知字段2 [4位] unknown3 - 未知字段3 [4位] material_count - 材料数量 [4位] reserved - 保留字段 ``` ### 2. 材料部分 每个材料的结构: ``` [4位] 路径长度(包括null结束符) [变长] 材料路径(以00结束) [4位] 数量 [4位] 参数(只有最后一个材料有值) ``` 材料部分以`00000000`结束 ### 3. 建筑部分 每个建筑的结构: ``` [4位] 路径长度(包括null结束符) [变长] 建筑路径(以00结束) [4位] 参数(只有最后一个建筑有值) ``` 建筑部分以`22222222`结束 ### 4. 压缩数据部分 Zlib压缩的数据,工具不做解析 ## 功能说明 ### 主要功能 1. **文件上传**:支持.sbp蓝图文件上传 2. **头部信息展示**:显示蓝图文件的头部信息 3. **材料编辑**: - 查看所有材料及其属性 - 修改材料路径和数量 - 添加/删除材料 4. **建筑信息展示**:显示建筑信息(只读) 5. **数据下载**:将修改后的数据保存为.sbp文件 ### 特殊处理 1. 材料部分的最后一个条目必须有参数值 2. 建筑部分的最后一个条目必须有参数值 3. 自动更新材料数量计数 ## 使用说明 1. 点击"选择文件"按钮上传.sbp蓝图文件 2. 在"材料资产"部分可以: - 修改材料路径(需使用正确的游戏资源路径) - 修改材料数量 - 添加新材料(点击"添加材料"按钮) - 删除材料(点击材料条目右侧的删除按钮) 3. 修改完成后点击"下载蓝图"按钮保存文件 ## 注意事项 1. 材料路径需要正确的游戏资源路径格式,可以参考其他蓝图文件中的路径 2. 最后一个材料的参数值必须保留,不能删除 3. 建筑信息目前是只读的,不能修改 4. 压缩数据部分目前不做解析,下载时会原样保存 ## 技术实现 - 前端框架:Vue.js - UI组件库:DaisyUI - 文件处理:使用JavaScript的FileReader和ArrayBuffer处理二进制数据 - HEX转换:自定义方法实现字符串与十六进制的相互转换 ## 项目结构 ``` ├── index.html ├── src/ │ ├── App.vue # 主组件 │ ├── main.js # 入口文件 │ └── assets/ # 静态资源 └── README.md # 项目说明 ``` ## 开发说明 1. 克隆仓库: ``` git clone https://git.liulikeji.cn/xingluo/satisfactory-BlueprintsEdit.git ``` 2. 安装依赖: ``` npm install ``` 3. 运行开发服务器: ``` npm run dev ``` 4. 构建生产版本: ``` npm run build ``` ## 未来计划 1. 添加建筑配方或超频编辑功能 2. 支持压缩数据的解析和修改 3. 添加材料图标 ## 贡献指南 欢迎提交Pull Request或Issue报告问题。对于新功能建议,请先创建Issue讨论。