LU-Rebuilt/lu-assets
GitHub: LU-Rebuilt/lu-assets
一个 C++20 库,解决 LEGO Universe 客户端专有文件格式的解析与跨平台兼容问题。
Stars: 0 | Forks: 0
# lu-assets
C++20 库,用于解析 LEGO Universe 客户端文件格式。为原始客户端使用的所有主要资源类型提供完整、跨平台的解析器。
该项目是 [LU-Rebuilt](https://github.com/LU-Rebuilt) 项目的一部分。
## 支持的格式
| 类别 | 格式 |
|------|------|
| **NetDevil 归档** | PK 归档、SD0 压缩 |
| **NetDevil 数据库** | FDB(平面数据库,转换为 SQLite) |
| **NetDevil 区域** | LUZ、LVL、地形(.raw)、LU 触发器、AUD、ZAL、AST、SCM |
| **NetDevil 通用** | LDF(键值配置) |
| **Gamebryo 引擎** | NIF/KF 网格与动画、KFM 动画管理器、.settings |
| **Havok 物理** | HKX 二进制与 XML 包文件(刚体、形状、场景数据) |
| **LEGO** | LXFML 砖块模型、.g 几何体、砖块装配与颜色 |
| **Microsoft** | DDS 纹理、TGA 图像、FXO 着色器 |
| **FMOD 音频** | FEV 事件、FSB 声音库 |
| **ForkParticle** | PSB 粒子系统 |
| **Scaleform** | GFX UI 文件 |
## 构建
### 要求
- CMake 3.25+
- C++20 编译器(GCC 12+、Clang 15+、MSVC 2022+)
- zlib
- SQLite3
### 构建
```
cmake -B build
cmake --build build -j$(nproc)
```
### 运行测试
```
ctest --test-dir build
```
## 用作依赖项
### 通过 FetchContent(推荐)
```
include(FetchContent)
FetchContent_Declare(lu_assets
GIT_REPOSITORY https://github.com/LU-Rebuilt/lu-assets.git
GIT_TAG v0.1.0
)
FetchContent_MakeAvailable(lu_assets)
target_link_libraries(your_target PRIVATE lu_assets::lu_assets)
```
对于本地开发,可以覆盖 fetch 以使用本地检出:
```
cmake -B build -DFETCHCONTENT_SOURCE_DIR_LU_ASSETS=/path/to/local/lu-assets
```
### 通过 find_package(安装后)
```
cmake --install build --prefix /usr/local
```
```
find_package(lu_assets REQUIRED)
target_link_libraries(your_target PRIVATE lu_assets::lu_assets)
```
## 包含路径
头文件遵循模块结构:
```
#include "netdevil/archive/pk/pk_reader.h" // or pk_types.h for data structures only
#include "netdevil/database/fdb/fdb_reader.h"
#include "gamebryo/nif/nif_reader.h"
#include "havok/reader/hkx_reader.h" // or havok/types/hkx_types.h
#include "lego/lxfml/lxfml_reader.h"
#include "microsoft/dds/dds_reader.h"
#include "fmod/fev/fev_reader.h"
```
## 致谢
本库基于以下权威来源构建:
- **Ghidra 逆向工程** 原始 LEGO Universe 客户端二进制文件
- **[lcdr/lu_formats](https://github.com/lcdr/lu_formats)** — Kaitai Struct 格式定义
- **[lcdr/utils](https://github.com/lcdr/utils)** — Python 参考实现
- **[DarkflameServer](https://github.com/DarkflameServer/DarkflameServer)** — 服务器模拟器,兼容性目标
- **[LUDevNet/Docs](https://github.com/LUDevNet/Docs)** — 社区协议文档
- **[nif.xml](https://github.com/niftools/nifxml)** / **[NifSkope](https://github.com/niftools/nifskope)** — Gamebryo NIF 格式定义
- **[HKXDocs](https://github.com/SimonNitzsche/HKXDocs)** — HKX 二进制格式文档
- **[lu-toolbox](https://github.com/Squareville/lu-toolbox)** — Blender LXFML 参考
- **[NexusDashboard](https://github.com/DarkflameUniverse/NexusDashboard)** — LXFML 渲染参考
- **[Assembly](https://github.com/LUDevNet/Assembly)** — Rust LU 格式库
- **[FFDec](https://github.com/jindrapetrik/jpexs-decompiler)** — Flash/SWF 反编译器,用于 GFX/SWF 格式解析参考
这个项目因 LEGO Universe 社区而存在。十余年来,开发者、逆向工程师和爱好者通过服务器模拟器、格式文档和保存努力让这款游戏保持活跃。本库建立在这些集体工作之上。
## 许可证
[GNU Affero General Public License v3.0](https://www.gnu.org/licenses/agpl-3.0.html)(AGPLv3)
LEGO Universe 是 LEGO Group 的商标。本项目未得到 LEGO Group、NetDevil 或 Gazillion Entertainment 的关联或认可。
标签:3D模型, Bash脚本, C++20, CMake, DDS纹理, FMOD, Gamebryo, Havok Physics, LEGO Universe, LXFML, NetDevil Archive, NetDevil Database, NetDevil Zones, SQLite, zlib, 云资产清单, 图形解析, 开源库, 搜索引擎爬虫, 数据库转换, 文件格式解析, 无攻击性, 游戏开发, 游戏资产解析, 粒子系统, 跨平台库, 逆向工程, 音频解析