From ca371b6904173ccafb0499465e4fb4741f78d78a Mon Sep 17 00:00:00 2001 From: konsti219 <37149441+konsti219@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:17:50 +0200 Subject: [PATCH 1/7] unreal_helpers: Improved README --- unreal_helpers/README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/unreal_helpers/README.md b/unreal_helpers/README.md index 24b81480..a46fba37 100644 --- a/unreal_helpers/README.md +++ b/unreal_helpers/README.md @@ -1,6 +1,11 @@ # unreal_helpers -The unreal_helpers crate is a Rust library that implements common functionality for reading Unreal Engine files. +[![Documentation](https://docs.rs/unreal_helpers/badge.svg)](https://docs.rs/unreal_helpers/) +[![Crates.io](https://img.shields.io/crates/v/unreal_helpers.svg)](https://crates.io/crates/unreal_helpers) +[![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) + +The `unreal_helpers` crate is a Rust library that implements common functionality for reading Unreal Engine files. ## Documentation @@ -14,9 +19,13 @@ The crate can be added to a Rust project as a dependency by running the command ## Features -* `read_write` - enables read/write extensions for unreal binary files -* `bitvec` - enables bitvec extensions commonly used when working with unreal bitvecs -* `path` - enables path conversion extensions used to convert paths in pak files +All content in this crate is hidden behind feature flags. Enabling most features will also enable further dependencies. + +* `read_write`: Enables extension Traits `UnrealReadExt` and `UnrealWriteExt` which help with parsing Unreal data formats. +* `path`: Enables `game_to_absolute` function. +* `guid`: Enables `Guid` type. +* `serde`: Enables `serde` support for `Guid` type. +* `bitvec`: Enables extension Trait `BitVecExt`. ## Examples From 03f1f5af0c0a78c5883fed2b2c115267c08f6f3c Mon Sep 17 00:00:00 2001 From: konsti219 <37149441+konsti219@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:31:12 +0200 Subject: [PATCH 2/7] use the same repofor all crates but different homepages --- Cargo.toml | 2 +- dll_injector/Cargo.toml | 3 +++ github_helpers/Cargo.toml | 5 +++-- unreal_asset/Cargo.toml | 3 ++- unreal_asset/unreal_asset_base/Cargo.toml | 3 ++- unreal_asset/unreal_asset_exports/Cargo.toml | 3 ++- unreal_asset/unreal_asset_kismet/Cargo.toml | 3 ++- unreal_asset/unreal_asset_proc_macro/Cargo.toml | 5 +++-- unreal_asset/unreal_asset_properties/Cargo.toml | 3 ++- unreal_asset/unreal_asset_registry/Cargo.toml | 3 ++- unreal_cpp_bootstrapper/Cargo.toml | 3 +++ unreal_helpers/Cargo.toml | 3 ++- unreal_mod_integrator/Cargo.toml | 5 ++++- unreal_mod_manager/Cargo.toml | 3 +++ unreal_mod_metadata/Cargo.toml | 3 +++ unreal_pak/Cargo.toml | 3 +++ unreal_pak_cli/Cargo.toml | 3 +++ 17 files changed, 43 insertions(+), 13 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a16be1ef..f2bd2a61 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ version = "0.1.16" authors = ["AstroTechies", "localcc", "konsti219"] license = "MIT" description = "Tools for making and loading Unreal Engine Mods." -homepage = "https://github.com/AstroTechies/unrealmodding" +repository = "https://github.com/AstroTechies/unrealmodding" [workspace.dependencies] dll_injector = { path = "./dll_injector", version = "0.1.16" } diff --git a/dll_injector/Cargo.toml b/dll_injector/Cargo.toml index 326f24cc..88de6f28 100644 --- a/dll_injector/Cargo.toml +++ b/dll_injector/Cargo.toml @@ -4,6 +4,9 @@ version.workspace = true authors.workspace = true description.workspace = true license.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/dll_injector" +documentation = "https://docs.rs/dll_injector" edition = "2021" [target.'cfg(windows)'.dependencies] diff --git a/github_helpers/Cargo.toml b/github_helpers/Cargo.toml index 818c6803..8fbc869c 100644 --- a/github_helpers/Cargo.toml +++ b/github_helpers/Cargo.toml @@ -4,10 +4,11 @@ version.workspace = true authors.workspace = true description.workspace = true license.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/github_helpers" +documentation = "https://docs.rs/github_helpers" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - [dependencies] reqwest.workspace = true serde.workspace = true diff --git a/unreal_asset/Cargo.toml b/unreal_asset/Cargo.toml index f8aaf469..37ff508b 100644 --- a/unreal_asset/Cargo.toml +++ b/unreal_asset/Cargo.toml @@ -4,7 +4,8 @@ version.workspace = true authors.workspace = true description = "Unreal Engine 4/5 game asset serialization library." license.workspace = true -homepage.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_asset" documentation = "https://docs.rs/unreal_asset" edition = "2021" exclude = ["tests/*"] diff --git a/unreal_asset/unreal_asset_base/Cargo.toml b/unreal_asset/unreal_asset_base/Cargo.toml index 60f4eaf1..b18a2c6d 100644 --- a/unreal_asset/unreal_asset_base/Cargo.toml +++ b/unreal_asset/unreal_asset_base/Cargo.toml @@ -4,7 +4,8 @@ version.workspace = true authors.workspace = true description = "Base unreal_asset implementations" license.workspace = true -homepage.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_asset/unreal_asset_base" documentation = "https://docs.rs/unreal_asset_base" edition = "2021" diff --git a/unreal_asset/unreal_asset_exports/Cargo.toml b/unreal_asset/unreal_asset_exports/Cargo.toml index dfc7f4f1..de950d15 100644 --- a/unreal_asset/unreal_asset_exports/Cargo.toml +++ b/unreal_asset/unreal_asset_exports/Cargo.toml @@ -4,7 +4,8 @@ version.workspace = true authors.workspace = true description = "Exports implementations for unreal_asset" license.workspace = true -homepage.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_asset/unreal_asset_exports" documentation = "https://docs.rs/unreal_asset_exports" edition = "2021" diff --git a/unreal_asset/unreal_asset_kismet/Cargo.toml b/unreal_asset/unreal_asset_kismet/Cargo.toml index 64206a02..bc16c5bd 100644 --- a/unreal_asset/unreal_asset_kismet/Cargo.toml +++ b/unreal_asset/unreal_asset_kismet/Cargo.toml @@ -4,7 +4,8 @@ version.workspace = true authors.workspace = true description = "Kismet implementations for unreal_asset" license.workspace = true -homepage.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_asset/unreal_asset_kismet" documentation = "https://docs.rs/unreal_asset_kismet" edition = "2021" diff --git a/unreal_asset/unreal_asset_proc_macro/Cargo.toml b/unreal_asset/unreal_asset_proc_macro/Cargo.toml index d8e8fb1e..1ac6543e 100644 --- a/unreal_asset/unreal_asset_proc_macro/Cargo.toml +++ b/unreal_asset/unreal_asset_proc_macro/Cargo.toml @@ -4,8 +4,9 @@ version.workspace = true authors.workspace = true description = "Proc macro implementations for unreal_asset" license.workspace = true -homepage.workspace = true -documentation = "https://docs.rs/unreal_asset" +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_asset/unreal_asset_proc_macro" +documentation = "https://docs.rs/unreal_asset_proc_macro" edition = "2021" [lib] diff --git a/unreal_asset/unreal_asset_properties/Cargo.toml b/unreal_asset/unreal_asset_properties/Cargo.toml index 806f4428..e2b6f9b5 100644 --- a/unreal_asset/unreal_asset_properties/Cargo.toml +++ b/unreal_asset/unreal_asset_properties/Cargo.toml @@ -4,7 +4,8 @@ version.workspace = true authors.workspace = true description = "Properties implementations for unreal_asset" license.workspace = true -homepage.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_asset/unreal_asset_properties" documentation = "https://docs.rs/unreal_asset_properties" edition = "2021" diff --git a/unreal_asset/unreal_asset_registry/Cargo.toml b/unreal_asset/unreal_asset_registry/Cargo.toml index 78e3bab4..c8f668f1 100644 --- a/unreal_asset/unreal_asset_registry/Cargo.toml +++ b/unreal_asset/unreal_asset_registry/Cargo.toml @@ -4,7 +4,8 @@ version.workspace = true authors.workspace = true description = "Asset registry implementations for unreal_asset" license.workspace = true -homepage.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_asset/unreal_asset_registry" documentation = "https://docs.rs/unreal_asset_registry" edition = "2021" diff --git a/unreal_cpp_bootstrapper/Cargo.toml b/unreal_cpp_bootstrapper/Cargo.toml index 4627b7dc..81ede09e 100644 --- a/unreal_cpp_bootstrapper/Cargo.toml +++ b/unreal_cpp_bootstrapper/Cargo.toml @@ -4,6 +4,9 @@ version.workspace = true authors.workspace = true description.workspace = true license.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_cpp_bootstrapper" +documentation = "https://docs.rs/unreal_cpp_bootstrapper" edition = "2021" [dependencies] diff --git a/unreal_helpers/Cargo.toml b/unreal_helpers/Cargo.toml index 0e8b52e2..e20c3282 100644 --- a/unreal_helpers/Cargo.toml +++ b/unreal_helpers/Cargo.toml @@ -4,7 +4,8 @@ version.workspace = true authors.workspace = true description.workspace = true license.workspace = true -homepage.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_helpers" documentation = "https://docs.rs/unreal_helpers" edition = "2021" diff --git a/unreal_mod_integrator/Cargo.toml b/unreal_mod_integrator/Cargo.toml index be42af07..0af3a964 100644 --- a/unreal_mod_integrator/Cargo.toml +++ b/unreal_mod_integrator/Cargo.toml @@ -4,11 +4,14 @@ version.workspace = true authors.workspace = true description.workspace = true license.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_mod_integrator" +documentation = "https://docs.rs/unreal_mod_integrator" edition = "2021" [features] no_bulk_data = [] -# Ue versions +# UE versions # If you want support for other ue versions, you can make a pull request with the support added, # or make an issue asking for a specific ue version to be supported. ue4_23 = [] diff --git a/unreal_mod_manager/Cargo.toml b/unreal_mod_manager/Cargo.toml index caa5868c..0bd5a8bf 100644 --- a/unreal_mod_manager/Cargo.toml +++ b/unreal_mod_manager/Cargo.toml @@ -4,6 +4,9 @@ version.workspace = true authors.workspace = true description.workspace = true license.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_mod_manager" +documentation = "https://docs.rs/unreal_mod_manager" edition = "2021" [features] diff --git a/unreal_mod_metadata/Cargo.toml b/unreal_mod_metadata/Cargo.toml index d96f0d56..d6395462 100644 --- a/unreal_mod_metadata/Cargo.toml +++ b/unreal_mod_metadata/Cargo.toml @@ -4,6 +4,9 @@ version.workspace = true authors.workspace = true description.workspace = true license.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_mod_metadata" +documentation = "https://docs.rs/unreal_mod_metadata" edition = "2021" [dependencies] diff --git a/unreal_pak/Cargo.toml b/unreal_pak/Cargo.toml index 8a646ea6..fb3d57f5 100644 --- a/unreal_pak/Cargo.toml +++ b/unreal_pak/Cargo.toml @@ -4,6 +4,9 @@ version.workspace = true authors.workspace = true description.workspace = true license.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_pak" +documentation = "https://docs.rs/unreal_pak" edition = "2021" [dependencies] diff --git a/unreal_pak_cli/Cargo.toml b/unreal_pak_cli/Cargo.toml index ca96fad2..676216c5 100644 --- a/unreal_pak_cli/Cargo.toml +++ b/unreal_pak_cli/Cargo.toml @@ -4,6 +4,9 @@ version.workspace = true authors.workspace = true description.workspace = true license.workspace = true +repository.workspace = true +homepage = "https://github.com/AstroTechies/unrealmodding/tree/main/unreal_pak_cli" +documentation = "https://docs.rs/unreal_pak_cli" edition = "2021" [dependencies] From 7a7985ca0e88ddef59cacd44cb6a573edce96ee5 Mon Sep 17 00:00:00 2001 From: konsti219 <37149441+konsti219@users.noreply.github.com> Date: Wed, 20 Sep 2023 18:22:18 +0200 Subject: [PATCH 3/7] unreal_pak: improved README --- unreal_helpers/README.md | 6 ++-- unreal_pak/README.md | 65 +++++++++++++++++++++++++++++++++---- unreal_pak/src/pakwriter.rs | 12 ++++--- unreal_pak_cli/README.md | 42 ++++++++++++++++++++++-- 4 files changed, 108 insertions(+), 17 deletions(-) diff --git a/unreal_helpers/README.md b/unreal_helpers/README.md index a46fba37..4a1f758d 100644 --- a/unreal_helpers/README.md +++ b/unreal_helpers/README.md @@ -9,13 +9,11 @@ The `unreal_helpers` crate is a Rust library that implements common functionalit ## Documentation -Crate documentation is published to -[docs.rs/unreal_helpers](https://docs.rs/unreal_helpers/). +Crate documentation is published to [docs.rs/unreal_helpers](https://docs.rs/unreal_helpers/). ## Usage -The crate can be added to a Rust project as a dependency by running the command -`cargo add unreal_helpers`. +The crate can be added to a Rust project as a dependency by running the command `cargo add unreal_helpers`. ## Features diff --git a/unreal_pak/README.md b/unreal_pak/README.md index 68a7c7d6..0342d13d 100644 --- a/unreal_pak/README.md +++ b/unreal_pak/README.md @@ -1,11 +1,64 @@ # unreal_pak +[![Documentation](https://docs.rs/unreal_pak/badge.svg)](https://docs.rs/unreal_pak/) +[![Crates.io](https://img.shields.io/crates/v/unreal_pak.svg)](https://crates.io/crates/unreal_pak) +[![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) + Library crate for working with Unreal Engine .pak files. -Features: +## Features + +This crates support reading and writing most Unreal Engine `.pak` files. + +There are multiple APIs available to fit your use case. + +- [`PakReader`](https://docs.rs/unreal_pak/pakreader/struct.PakReader.html) for lazily reading large (multiple GB) + `.pak` files. This reader only parses the relatively small index when loading a file and single entries can then + be extarcted or all entries can be lazily read via in iterator based API. +- [`PakWriter`](https://docs.rs/unreal_pak/pakwriter/struct.PakWriter.html) for incrementally writing large `.pak` + files. +- [`PakMemory`](https://docs.rs/unreal_pak/pakmemorey/struct.PakMemory.html) which is an entirely in-memory + representation of a `.pak` file which allows arbitrary entries to be modified/added/removed. A file on disk can + be loaded as a `PakMemory` or an empty one can be created. Once finsihed it can be writtin to disk all at once. + +## Documentation + +Crate documentation is published to [docs.rs/unreal_pak](https://docs.rs/unreal_pak/). + +## Usage + +The crate can be added to a Rust project as a dependency by running the command `cargo add unreal_pak`. + +## Compatibility + +| UE Version | Version | Version Feature | Read | Write | +|------------|---------|-----------------------|--------------------|--------------------| +| | 1 | Initial | :grey_question: | :grey_question: | +| 4.0-4.2 | 2 | NoTimestamps | :heavy_check_mark: | :heavy_check_mark: | +| 4.3-4.15 | 3 | CompressionEncryption | :heavy_check_mark: | :heavy_check_mark: | +| 4.16-4.19 | 4 | IndexEncryption | :heavy_check_mark: | :heavy_check_mark: | +| 4.20 | 5 | RelativeChunkOffsets | :heavy_check_mark: | :heavy_check_mark: | +| | 6 | DeleteRecords | :grey_question: | :grey_question: | +| 4.21 | 7 | EncryptionKeyGuid | :heavy_check_mark: | :heavy_check_mark: | +| 4.22 | 8A | FNameBasedCompression | :x: | :x: | +| 4.23-4.24 | 8B | FNameBasedCompression | :heavy_check_mark: | :heavy_check_mark: | +| 4.25 | 9 | FrozenIndex | :heavy_check_mark: | :heavy_check_mark: | +| | 10 | PathHashIndex | :grey_question: | :grey_question: | +| 4.26-4.27 | 11 | Fnv64BugFix | :heavy_check_mark: | :x: | + +| Feature | Read | Write | +|--------------------|--------------------|--------------------| +| Compression (Zlib) | :heavy_check_mark: | :heavy_check_mark: | +| Encrypted Index | :x: | :x: | +| Encrypted Data | :x: | :x: | + +### Missing feature for your use case? + +This crate was originally developed for use within [unrealmodding](https://github.com/AstroTechies/unrealmodding) and +therefore does not support every feature of `.pak` files. If you are looking to use this crate for your project but +need a currently unsupported feature please open an Issue/PR and we will try to help you. + +## Examples -- Supports reading and writing .pak files. -- Can partially read files or load them entirely into memory depending on you API needs. -- Aims to support all .pak versions. Currently all can be read but only writing up to version 9. -- Supports compression with Zlib. -- Encryption support planned. +An example use of the crate can be found in the [unreal_pak_cli](../unreal_pak_cli) tool source. diff --git a/unreal_pak/src/pakwriter.rs b/unreal_pak/src/pakwriter.rs index a8a903d9..7b3ce9e7 100644 --- a/unreal_pak/src/pakwriter.rs +++ b/unreal_pak/src/pakwriter.rs @@ -12,19 +12,21 @@ use crate::pakversion::PakVersion; /// An Unreal pak file writer which allows incrementally writing data. /// Good for working with very large files, but it has restrictions when it -/// comes to writing files. For a more flexible alternative see \ PakMemory +/// comes to writing files. For a more flexible alternative see [`PakMemory`]. +/// +/// [`PakMemory`]: crate::pakmemory::PakMemory #[derive(Debug)] pub struct PakWriter where W: Write + Seek, { - /// version of the pak file format this one is using + /// Version of the pak file format this one is using pub pak_version: PakVersion, - /// mount point (Unreal stuff) + /// Mount point. Typically `../../../`. pub mount_point: String, - /// the compression method preferred for this file + /// Compression method preferred for this file compression: CompressionMethods, - /// the compression block size + /// Compression block size pub block_size: u32, entries: BTreeMap, writer: W, diff --git a/unreal_pak_cli/README.md b/unreal_pak_cli/README.md index bce6cf9b..e5cb6dab 100644 --- a/unreal_pak_cli/README.md +++ b/unreal_pak_cli/README.md @@ -1,5 +1,43 @@ # unreal_pak_cli -Cli interface for working with Unreal Engine .pak files. +[![Documentation](https://docs.rs/unreal_pak_cli/badge.svg)](https://docs.rs/unreal_pak_cli/) +[![Crates.io](https://img.shields.io/crates/v/unreal_pak_cli.svg)](https://crates.io/crates/unreal_pak_cli) +[![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) -For usage see `unreal_pak_cli --help`. +CLI for working with Unreal Engine `.pak` files. + +## Installation + +Install using cargo + +```sh +cargo install unreal_pak_cli +``` + +## Usage + +```text +Usage: unreal_pak_cli.exe + +Commands: + check Check an entire .pak file if it is valid + check-header Only check the header of a .pak file if it is valid + extract Extract a .pak file to a directory + create create a new .pak file from the files from a directory, optionally disabling compression + help Print this message or the help of the given subcommand(s) + +Options: + -h, --help Print help + -V, --version Print version +``` + +Also available under + +```sh +unreal_pak_cli -h +``` + +## Compatibility + +See the [Compatibility of unreal_pak](../unreal_pak#Compatibility) for what `.pak` versions and features are supported. From 8b2d3d6f4477b313f7ec5a2885cf0a586e121bfb Mon Sep 17 00:00:00 2001 From: konsti219 <37149441+konsti219@users.noreply.github.com> Date: Wed, 20 Sep 2023 22:13:18 +0200 Subject: [PATCH 4/7] improved main README --- LICENSE | 23 +++++++++++++++++ README.md | 50 +++++++++++++++++++++++++++++++++++- unreal_asset/README.md | 17 +++++++----- unreal_mod_manager/README.md | 7 ++++- 4 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..31aa7938 --- /dev/null +++ b/LICENSE @@ -0,0 +1,23 @@ +Permission is hereby granted, free of charge, to any +person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without +limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software +is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions +of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF +ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 1e8c2116..92a63242 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,50 @@ # unrealmodding -Tools for making and loading Unreal Engine Mods. Developed for Astroneer + +[![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) + +Tools for creating and loading Unreal Engine Mods. Developed for Astroneer. + +## Crates + +This repo contrains multiple user facing crates for working with Unreal Engine file formats and creating Mods. + +### [unreal_asset](./unreal_asset/) + +[![Documentation](https://docs.rs/unreal_asset/badge.svg)](https://docs.rs/unreal_asset/) +[![Crates.io](https://img.shields.io/crates/v/unreal_asset.svg)](https://crates.io/crates/unreal_asset) + +This core crate allows for parsing of Unreal asset binary files. It is internally split into multiple sub crates to +improve compile times. + +### [unreal_mod_manager](./unreal_mod_manager/) + +[![Documentation](https://docs.rs/unreal_mod_manager/badge.svg)](https://docs.rs/unreal_mod_manager/) +[![Crates.io](https://img.shields.io/crates/v/unreal_mod_manager.svg)](https://crates.io/crates/unreal_mod_manager) + +Crate that allows creating Modmanagers/Modloaders for individual games. Typically used together with +[unreal_mod_integrator](./unreal_mod_integrator/) and [unreal_asset](./unreal_asset/) (both reexported) to create +asset transformation logic for specific games. + +### [unreal_pak](./unreal_pak/) + +[![Documentation](https://docs.rs/unreal_pak/badge.svg)](https://docs.rs/unreal_pak/) +[![Crates.io](https://img.shields.io/crates/v/unreal_pak.svg)](https://crates.io/crates/unreal_pak) + +Library crate for working with Unreal Engine .pak files. The CLI tool [unreal_pak_cli](./unreal_pak_cli/) is built on +this crate to provide a simple way to use this library. + +### [unreal_helpers](./unreal_helpers/) + +[![Documentation](https://docs.rs/unreal_helpers/badge.svg)](https://docs.rs/unreal_helpers/) +[![Crates.io](https://img.shields.io/crates/v/unreal_helpers.svg)](https://crates.io/crates/unreal_helpers) + +Core crate that provides utilities for wotking with Unreal Engine binary files. It is relied on by all the other binary +parsing crates in this repo. + +## License + +Licensed under [MIT license](./LICENSE). + +Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion by you, shall be licensed +as above, without any additional terms or conditions. diff --git a/unreal_asset/README.md b/unreal_asset/README.md index e6bfd46f..970c2fac 100644 --- a/unreal_asset/README.md +++ b/unreal_asset/README.md @@ -1,16 +1,22 @@ # unreal_asset -The unreal_asset crate is a Rust library that allows parsing of Unreal Engine binary asset files. +[![Documentation](https://docs.rs/unreal_asset/badge.svg)](https://docs.rs/unreal_asset/) +[![Crates.io](https://img.shields.io/crates/v/unreal_asset.svg)](https://crates.io/crates/unreal_asset) +[![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) + +The `unreal_asset` crate is a Rust library that allows parsing of Unreal Engine binary asset files. ## Documentation -Crate documentation is published to -[docs.rs/unreal_asset](https://docs.rs/unreal_asset/). +Crate documentation is published to [docs.rs/unreal_asset](https://docs.rs/unreal_asset/). ## Unreal Engine binary asset files Unreal Engine binary asset files are usually stored with the following extensions: -* `.uasset` - The file that has asset metadata as well as some information, if the game is built without split bulk data files, then it also contains all of asset data. + +* `.uasset` - The file that has asset metadata as well as some information, if the game is built without split bulk + data files, then it also contains all of asset data. * `.uexp` - If the game is built with split bulk data files, it contains binary data related to components, etc. * `.umap` - Same as `.uasset` but for maps/levels. * `.usmap` - Mapping files for reading unversioned assets. @@ -19,8 +25,7 @@ These files are what stores most of the game's assets and what you might want to ## Usage -The crate can be added to a Rust project as a dependency by running the command -`cargo add unreal_asset`. +The crate can be added to a Rust project as a dependency by running the command `cargo add unreal_asset`. ## Features diff --git a/unreal_mod_manager/README.md b/unreal_mod_manager/README.md index dade7309..9e3da0bc 100644 --- a/unreal_mod_manager/README.md +++ b/unreal_mod_manager/README.md @@ -1,4 +1,9 @@ -# unreal_modloader +# unreal_mod_manager + +[![Documentation](https://docs.rs/unreal_mod_manager/badge.svg)](https://docs.rs/unreal_mod_manager/) +[![Crates.io](https://img.shields.io/crates/v/unreal_mod_manager.svg)](https://crates.io/crates/unreal_mod_manager) +[![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) Library crate for building Modloaders for Unreal Engine games. Developed for Astroneer. From 52aeb8a9a707cf52877c350d6db2f65fcb343e6d Mon Sep 17 00:00:00 2001 From: konsti219 <37149441+konsti219@users.noreply.github.com> Date: Wed, 20 Sep 2023 22:21:08 +0200 Subject: [PATCH 5/7] add badges to integrator and metadata READMEs --- unreal_mod_integrator/README.md | 5 +++++ unreal_mod_metadata/README.md | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/unreal_mod_integrator/README.md b/unreal_mod_integrator/README.md index 071849ee..a12d6526 100644 --- a/unreal_mod_integrator/README.md +++ b/unreal_mod_integrator/README.md @@ -1,5 +1,10 @@ # unreal_mod_integrator +[![Documentation](https://docs.rs/unreal_mod_integrator/badge.svg)](https://docs.rs/unreal_mod_integrator/) +[![Crates.io](https://img.shields.io/crates/v/unreal_mod_integrator.svg)](https://crates.io/crates/unreal_mod_integrator) +[![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) + Library crate for "integrating" Unreal Engine game mods. ## Build setup diff --git a/unreal_mod_metadata/README.md b/unreal_mod_metadata/README.md index 4661c4a6..30b58c72 100644 --- a/unreal_mod_metadata/README.md +++ b/unreal_mod_metadata/README.md @@ -1,3 +1,8 @@ # unreal_mod_metadata +[![Documentation](https://docs.rs/unreal_mod_metadata/badge.svg)](https://docs.rs/unreal_mod_metadata/) +[![Crates.io](https://img.shields.io/crates/v/unreal_mod_metadata.svg)](https://crates.io/crates/unreal_mod_metadata) +[![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) + Simpe library crate for parsing the the data inside metadata.json files. From 57c1ea6ed835a33605be084e5be5a2e0c1af8854 Mon Sep 17 00:00:00 2001 From: konsti219 <37149441+konsti219@users.noreply.github.com> Date: Wed, 20 Sep 2023 22:24:15 +0200 Subject: [PATCH 6/7] fix LICENSE links --- LICENSE | 40 ++++++++++++++++----------------- unreal_asset/README.md | 2 +- unreal_helpers/README.md | 2 +- unreal_mod_integrator/README.md | 2 +- unreal_mod_manager/README.md | 2 +- unreal_mod_metadata/README.md | 2 +- unreal_pak/README.md | 2 +- 7 files changed, 25 insertions(+), 27 deletions(-) diff --git a/LICENSE b/LICENSE index 31aa7938..3ce6cead 100644 --- a/LICENSE +++ b/LICENSE @@ -1,23 +1,21 @@ -Permission is hereby granted, free of charge, to any -person obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without -limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software -is furnished to do so, subject to the following -conditions: +MIT License -The above copyright notice and this permission notice -shall be included in all copies or substantial portions -of the Software. +Copyright (c) 2023 AstroTechies -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF -ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED -TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT -SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR -IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/unreal_asset/README.md b/unreal_asset/README.md index 970c2fac..04a8359a 100644 --- a/unreal_asset/README.md +++ b/unreal_asset/README.md @@ -3,7 +3,7 @@ [![Documentation](https://docs.rs/unreal_asset/badge.svg)](https://docs.rs/unreal_asset/) [![Crates.io](https://img.shields.io/crates/v/unreal_asset.svg)](https://crates.io/crates/unreal_asset) [![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) The `unreal_asset` crate is a Rust library that allows parsing of Unreal Engine binary asset files. diff --git a/unreal_helpers/README.md b/unreal_helpers/README.md index 4a1f758d..f1ac82d1 100644 --- a/unreal_helpers/README.md +++ b/unreal_helpers/README.md @@ -3,7 +3,7 @@ [![Documentation](https://docs.rs/unreal_helpers/badge.svg)](https://docs.rs/unreal_helpers/) [![Crates.io](https://img.shields.io/crates/v/unreal_helpers.svg)](https://crates.io/crates/unreal_helpers) [![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](../LICENSE) The `unreal_helpers` crate is a Rust library that implements common functionality for reading Unreal Engine files. diff --git a/unreal_mod_integrator/README.md b/unreal_mod_integrator/README.md index a12d6526..28ac73dd 100644 --- a/unreal_mod_integrator/README.md +++ b/unreal_mod_integrator/README.md @@ -3,7 +3,7 @@ [![Documentation](https://docs.rs/unreal_mod_integrator/badge.svg)](https://docs.rs/unreal_mod_integrator/) [![Crates.io](https://img.shields.io/crates/v/unreal_mod_integrator.svg)](https://crates.io/crates/unreal_mod_integrator) [![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](../LICENSE) Library crate for "integrating" Unreal Engine game mods. diff --git a/unreal_mod_manager/README.md b/unreal_mod_manager/README.md index 9e3da0bc..443c32f9 100644 --- a/unreal_mod_manager/README.md +++ b/unreal_mod_manager/README.md @@ -3,7 +3,7 @@ [![Documentation](https://docs.rs/unreal_mod_manager/badge.svg)](https://docs.rs/unreal_mod_manager/) [![Crates.io](https://img.shields.io/crates/v/unreal_mod_manager.svg)](https://crates.io/crates/unreal_mod_manager) [![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](../LICENSE) Library crate for building Modloaders for Unreal Engine games. Developed for Astroneer. diff --git a/unreal_mod_metadata/README.md b/unreal_mod_metadata/README.md index 30b58c72..8b0856c0 100644 --- a/unreal_mod_metadata/README.md +++ b/unreal_mod_metadata/README.md @@ -3,6 +3,6 @@ [![Documentation](https://docs.rs/unreal_mod_metadata/badge.svg)](https://docs.rs/unreal_mod_metadata/) [![Crates.io](https://img.shields.io/crates/v/unreal_mod_metadata.svg)](https://crates.io/crates/unreal_mod_metadata) [![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](../LICENSE) Simpe library crate for parsing the the data inside metadata.json files. diff --git a/unreal_pak/README.md b/unreal_pak/README.md index 0342d13d..e4d214cc 100644 --- a/unreal_pak/README.md +++ b/unreal_pak/README.md @@ -3,7 +3,7 @@ [![Documentation](https://docs.rs/unreal_pak/badge.svg)](https://docs.rs/unreal_pak/) [![Crates.io](https://img.shields.io/crates/v/unreal_pak.svg)](https://crates.io/crates/unreal_pak) [![Build status](https://github.com/AstroTechies/unrealmodding/workflows/CI/badge.svg)](https://github.com/AstroTechies/unrealmodding/actions?query=workflow%3ACI) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](../LICENSE) Library crate for working with Unreal Engine .pak files. From 17996d2accd8516da4c40be478d488caefe4b1f5 Mon Sep 17 00:00:00 2001 From: localcc Date: Thu, 21 Sep 2023 14:52:07 +0200 Subject: [PATCH 7/7] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 92a63242..b3d59a9a 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ This repo contrains multiple user facing crates for working with Unreal Engine f [![Documentation](https://docs.rs/unreal_asset/badge.svg)](https://docs.rs/unreal_asset/) [![Crates.io](https://img.shields.io/crates/v/unreal_asset.svg)](https://crates.io/crates/unreal_asset) -This core crate allows for parsing of Unreal asset binary files. It is internally split into multiple sub crates to +This core crate allows for parsing of Unreal asset binary files. It is internally split into multiple sub-crates to improve compile times. ### [unreal_mod_manager](./unreal_mod_manager/)