This is an unofficial rust implementation for parsing the .manifest file format, and downloading containing files.
The format was made by RiotGames and is used by RiotClient for downloading game updates.
Layout of the .manifest file is as follows:
- file header (28 bytes),
- zstd compressed data,
- digital signature.
Decompressed zstd data is a binary flatbuffer format. This crate uses generated code from a mostly complete schema over at this repository.
rman-schema repository is only added as a submodule as a way to track which schema version is used.
This crate is ready for use as-is and should be able to parse all current and future .manifest files, barring any changes to the format itself. If the library is unable to parse any specific file, or if it breaks in the future, feel free to contribute.
The semver-major version of the crate will stay at 0, until functionality and purpose of all of the fields in the flatbuffer schema is known. Besides that, the crate follows cargo's versioning guidelines.
Add the following to your Cargo.toml
file:
[dependencies]
rman = "0.3"
See the documentation for examples and information about all of the exposed API's.
See CONTRIBUTING.md.
If you need any help with using the library, or have any questions, feel free to open an issue, or ask for assistance on discord.
You can find latest release documentation on docs.rs. Versions from 0.3.0
onwards are also
published to GitHub pages (e.g. https://ev3nvy.github.io/rman-rs/v0.3.0). You can also find
documentation for the latest unpublished version on GitHub pages.
- @moonshadow565 for the amazing work over at rman - set of CLI tools for rito manifest and bundle files. Most of the schema is based upon his work.
- @Morilli for creating ManifestDownloader, which was my first
exposure to the inner workings of
.manifest
format, and for answering my question on discord. - @Kurainu for creating RMAN-Parse on which the early drafts of this project were based on.
Riot Games, VALORANT, and any associated logos are trademarks, service marks, and/or registered trademarks of Riot Games, Inc.
This project is in no way affiliated with, authorized, maintained, sponsored or endorsed by Riot Games, Inc or any of its affiliates or subsidiaries.
I, the project owner and creator, am not responsible for any legalities that may arise in the use of this project. Use at your own risk.