This commit is contained in:
HKXluo
2025-10-18 20:22:42 +08:00

132
README.md
View File

@@ -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压缩后数据 具体内容没分析 不做分析
### 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讨论。