2022-07-19 19:29:41 -04:00
# Physis
Framework for interacting with FFXIV data, and successor to [libxiv ](https://git.sr.ht/~redstrate/libxiv ). This intended for
developers writing modding tools, launchers and other programs.
**Note:** This library is still experimental, and no releases are planned. I'm currently busy with bringing all of libxiv's
2022-08-06 18:40:16 -04:00
features over, but I plan to expand functionality beyond the original scope.
2022-07-19 19:29:41 -04:00
## Goals
* Make it extremely easy for people to tinker around with game data.
* Parsing data should be safe, and unit tested vigorously.
* Minimal dependencies ;-) All dependencies are also checked by `cargo deny` .
## Features
2022-08-06 18:40:16 -04:00
* Easily extract game data from SqPack files.
* Apply game and boot updates, enabling custom launchers to patch the game.
2022-07-19 19:29:41 -04:00
* Blockfish ciphers for encrypting and decrypting SqexArg.
* Parse various game formats:
2022-08-06 18:40:16 -04:00
* SqPack index and dat files
* ZiPatch files
* All three Excel data types (EXD, EXH, EXL)
* Models
* Havok Packfile/TexTool skeletons
2022-08-11 15:41:30 -04:00
* Textures
* Materials
2022-08-06 18:40:16 -04:00
## Usage
**Note:** The API is nowhere near stable, so things may change or break.
2022-08-10 00:02:04 -04:00
If you intend to use this in a Rust project, you can simply include this crate directly. You can view the documentation at [docs.xiv.zone ](https://docs.xiv.zone/docs/physis )!
2022-08-06 18:40:16 -04:00
For other use in languages I maintain [libphysis ](https://git.sr.ht/~redstrate/libphysis ), which is a C wrapper
around the same functionality. This isn't for show, I actually use these bindings in [other projects ](https://git.sr.ht/~redstrate/astra ).
2022-07-19 19:29:41 -04:00
## Development
If you're interested to see how these formats work in more detail, see [xiv.dev ](https://xiv.dev/ ) and [docs.xiv.zone ](https://docs.xiv.zone )!
2022-08-06 18:40:16 -04:00
They explain the file formats in more detail, but I also encourage reading the library code as well if you can.
2022-07-19 19:29:41 -04:00
2022-07-27 20:58:12 -04:00
Some tests and benchmarks require the environment variable `FFXIV_GAME_DIR` to be set. By default, these are disabled
since they require a legitimate copy of the retail game data. These tests can be turned on via the `retail_game_testing`
feature.
2022-07-19 19:29:41 -04:00
2022-08-06 18:40:16 -04:00
## Contributing & Support
2022-07-19 19:29:41 -04:00
The best way you can help is by [monetarily supporting me ](https://redstrate.com/about/ ) or by submitting patches to help fix bugs or add functionality!