1
Fork 0
mirror of https://github.com/redstrate/Physis.git synced 2025-04-22 12:47:45 +00:00
physis/README.md

49 lines
2.2 KiB
Markdown
Raw Normal View History

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
* 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
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!