80 lines
2.8 KiB
Markdown
80 lines
2.8 KiB
Markdown
|
|
## DataStore 改进计划(基于 Switch FS Save 示例)
|
|||
|
|
|
|||
|
|
### 阶段一:Switch 平台存档支持
|
|||
|
|
|
|||
|
|
#### 1.1 添加存档挂载管理
|
|||
|
|
- **目标**: [data.h](file:///c:/Users/soulcoco/Desktop/Easy2D/Extra2D/Extra2D/include/extra2d/utils/data.h) 和 [data.cpp](file:///c:/Users/soulcoco/Desktop/Easy2D/Extra2D/Extra2D/src/utils/data.cpp)
|
|||
|
|
- **内容**:
|
|||
|
|
- 添加 `mountSaveData()` 方法挂载存档
|
|||
|
|
- 添加 `unmountSaveData()` 方法卸载存档
|
|||
|
|
- 添加 `commitSaveData()` 方法提交更改
|
|||
|
|
- 支持自动挂载/卸载 RAII 模式
|
|||
|
|
- **预期收益**: 支持 Switch 官方存档系统
|
|||
|
|
|
|||
|
|
#### 1.2 用户账户集成
|
|||
|
|
- **目标**: [data.h](file:///c:/Users/soulcoco/Desktop/Easy2D/Extra2D/Extra2D/include/extra2d/utils/data.h)
|
|||
|
|
- **内容**:
|
|||
|
|
- 添加 `setUserId()` / `getUserId()` 方法
|
|||
|
|
- 自动获取当前用户ID(使用 `accountGetPreselectedUser`)
|
|||
|
|
- 支持用户特定的存档路径
|
|||
|
|
- **预期收益**: 支持多用户存档隔离
|
|||
|
|
|
|||
|
|
### 阶段二:事务和缓存优化
|
|||
|
|
|
|||
|
|
#### 2.1 事务支持
|
|||
|
|
- **目标**: [data.cpp](file:///c:/Users/soulcoco/Desktop/Easy2D/Extra2D/Extra2D/src/utils/data.cpp)
|
|||
|
|
- **内容**:
|
|||
|
|
- 添加 `beginTransaction()` 开始事务
|
|||
|
|
- 添加 `commit()` 提交事务
|
|||
|
|
- 添加 `rollback()` 回滚事务
|
|||
|
|
- 批量写入优化,减少文件IO
|
|||
|
|
- **预期收益**: 数据一致性和性能提升
|
|||
|
|
|
|||
|
|
#### 2.2 缓存机制
|
|||
|
|
- **目标**: [data.cpp](file:///c:/Users/soulcoco/Desktop/Easy2D/Extra2D/Extra2D/src/utils/data.cpp)
|
|||
|
|
- **内容**:
|
|||
|
|
- 添加内存缓存层
|
|||
|
|
- 延迟写入(Lazy Write)
|
|||
|
|
- 缓存失效策略
|
|||
|
|
- **预期收益**: 减少文件IO,提升读写性能
|
|||
|
|
|
|||
|
|
### 阶段三:数据格式扩展
|
|||
|
|
|
|||
|
|
#### 3.1 JSON 支持
|
|||
|
|
- **目标**: [data.h](file:///c:/Users/soulcoco/Desktop/Easy2D/Extra2D/Extra2D/include/extra2d/utils/data.h)
|
|||
|
|
- **内容**:
|
|||
|
|
- 添加 JSON 格式支持(保留 INI 兼容)
|
|||
|
|
- 嵌套数据结构支持
|
|||
|
|
- 数组类型支持
|
|||
|
|
- **预期收益**: 更灵活的数据结构
|
|||
|
|
|
|||
|
|
#### 3.2 二进制格式支持
|
|||
|
|
- **目标**: [data.cpp](file:///c:/Users/soulcoco/Desktop/Easy2D/Extra2D/Extra2D/src/utils/data.cpp)
|
|||
|
|
- **内容**:
|
|||
|
|
- 添加二进制序列化格式
|
|||
|
|
- 更小的文件体积
|
|||
|
|
- 更快的读写速度
|
|||
|
|
- **预期收益**: 性能和存储优化
|
|||
|
|
|
|||
|
|
### 阶段四:安全和备份
|
|||
|
|
|
|||
|
|
#### 4.1 数据校验
|
|||
|
|
- **目标**: [data.cpp](file:///c:/Users/soulcoco/Desktop/Easy2D/Extra2D/Extra2D/src/utils/data.cpp)
|
|||
|
|
- **内容**:
|
|||
|
|
- 添加 CRC32/MD5 校验
|
|||
|
|
- 数据完整性检查
|
|||
|
|
- 损坏数据恢复机制
|
|||
|
|
- **预期收益**: 数据可靠性
|
|||
|
|
|
|||
|
|
#### 4.2 自动备份
|
|||
|
|
- **目标**: [data.h](file:///c:/Users/soulcoco/Desktop/Easy2D/Extra2D/Extra2D/include/extra2d/utils/data.h)
|
|||
|
|
- **内容**:
|
|||
|
|
- 自动备份机制
|
|||
|
|
- 多版本存档
|
|||
|
|
- 备份恢复接口
|
|||
|
|
- **预期收益**: 数据安全
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**预计总工作量**: 6-8 小时
|
|||
|
|
**优先级**: 高(1.1, 1.2)> 中(2.1, 3.1)> 低(2.2, 3.2, 4.1, 4.2)
|