From 7a4f83efaddfa95244c091be225937841b8e5721 Mon Sep 17 00:00:00 2001 From: xingluo Date: Sat, 18 Oct 2025 01:21:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 132 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 119 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index e4564c1..fe81976 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,124 @@ -#文件前32个十六进制位是头部数据, -分别是[4位表示的version][4位表示的header_size][4位表示的timestamp][4位表示的unknown1][4位表示的unknown2][4位表示的unknown3][4位表示的material_count][4位表示的reserved] -其中header_size不知为何总为错误的 +# 幸福工厂蓝图编辑器 - 项目文档 -#下面为蓝图材料数据: +## 项目概述 -[4位表示的路径长度(包括00结束符)] [材料路径(结束用1位的00表示)] [4位表示的数量] [4位表示的参数] -当所有材料结束时,在末尾添加4个十六进制未表示的0代表材料部分结束 -注:[4位表示的参数] 目前具体是什么未知. 但只有蓝图的最后一个材料才会有数据其他都为0. 其数值可能和蓝图绑定不得修改,蓝图的最后一个的参数必须有数据 +这是一个用于解析和编辑《幸福工厂》(Satisfactory)游戏蓝图(.sbp文件)的Web工具。用户可以上传蓝图文件,查看和修改其中的材料信息,然后下载修改后的蓝图文件。 -#下面为建筑部分: +## 文件结构解析 -[4位表示的路径长度(包括00结束符)] [建筑路径(结束用1位的00表示)] [4位表示的参数] -当建筑部分结束时尾部添加4个十六进制未的22222222代表建筑部分结束 -注:[4位表示的参数] 目前具体是什么未知. 但只有蓝图的最后一个建筑才会有数据其他都为0. 其数值可能和蓝图绑定不得修改,蓝图的最后一个的参数必须有数据 +### 1. 文件头部 (32字节/64位十六进制) +结构如下: +``` +[4位] version - 版本号 +[4位] header_size - 头部大小(目前总是错误的) +[4位] timestamp - 时间戳 +[4位] unknown1 - 未知字段1 +[4位] unknown2 - 未知字段2 +[4位] unknown3 - 未知字段3 +[4位] material_count - 材料数量 +[4位] reserved - 保留字段 +``` -#下面是压缩部分: -此部分为Zlib压缩后数据 具体内容没分析 不做分析 \ No newline at end of file +### 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讨论。 \ No newline at end of file