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, 云资产清单, 图形解析, 开源库, 搜索引擎爬虫, 数据库转换, 文件格式解析, 无攻击性, 游戏开发, 游戏资产解析, 粒子系统, 跨平台库, 逆向工程, 音频解析