2022-07-19 19:29:41 -04:00
# Physis
2022-10-17 19:32:40 -04:00
[](https://crates.io/crates/physis)
2022-09-15 16:26:18 -04:00
2024-04-28 11:12:09 -04:00
Physis is a library for reading and writing FFXIV data.
2022-07-19 19:29:41 -04:00
## Features
2024-04-22 15:43:35 -04:00
Here is a list of supported formats and their status:
2024-06-29 12:40:15 -04:00
| File Format | Read | Write | Note |
| --- | --- |-------|----------------------------------------------------------------------------------------------------|
| [Configuration files ](https://docs.xiv.zone/format/cfg/ ) | ✅ | ✅ | |
2025-03-10 15:51:56 -04:00
| [Saved character data ](https://docs.xiv.zone/format/chardat/ ) | ✅ | ✅ | |
2024-06-29 12:40:15 -04:00
| [Chara make params ](https://docs.xiv.zone/format/cmp/ ) | ✅ | ❌ | |
| Dictionaries | ✅ | ❌ | |
| [Excel data ](https://docs.xiv.zone/format/exd/ ) | ✅ | ❌ | |
| [File infos ](https://docs.xiv.zone/format/fiin/ ) | ✅ | ✅ | |
| Map layers | ✅ | ❌ | Layer support isn't well tested yet. |
| [Chat logs ](https://docs.xiv.zone/format/log/ ) | ✅ | ❌ | Not all chat categories are discovered yet. |
| [Models ](https://docs.xiv.zone/format/mdl/ ) | ✅ | ✅ | Adding custom shape keys aren't fully supported yet. |
| [Materials ](https://docs.xiv.zone/format/mtrl/ ) | ✅ | ❌ | |
| Patch files | ✅ | ~ | ZiPatch writing support is currently being worked on, but many operations are not yet implemented. |
| Pre bone deformers | ✅ | ❌ | |
| [Shader packages ](https://docs.xiv.zone/format/shpk/ ) | ✅ | ❌ | |
| [Skeletons ](https://docs.xiv.zone/format/sklb/ ) | ✅ | ❌ | |
| Terrain | ✅ | ❌ | |
| [Textures ](https://docs.xiv.zone/format/tex/ ) | ✅ | ❌ | Only some formats are supported. |
2024-04-22 15:43:35 -04:00
Physis also supports doing some other useful things other than reading and writing file formats:
* Extract game data from SqPack files, and list file hashes from index/index2.
* Apply game patches. Indexed ZiPatch is not yet supported, though.
* Blockfish ciphers for encrypting and decrypting [SqexArg ](https://docs.xiv.zone/concept/sqexarg/ ).
* Construct paths to equipment, items, faces, and other useful models.
* Extract strings from executables.
2022-08-06 18:40:16 -04:00
2024-05-25 23:52:33 -04:00
## Supported Game Versions
2024-11-03 11:08:51 -05:00
| Version | Works | Note |
|----------------------|-------|----------------------------------------------------------------------------------|
| A Realm Reborn (2.x) | ??? | Have yet to test. |
| Heavensward (3.x) | ??? | Have yet to test. |
| Stormblood (4.x) | ??? | Have yet to test. |
| Shadowbringers (5.x) | ✅ | |
| Endwalker (6.x) | ✅ | |
| Dawntrail (7.x) | ✅ | Visual formats (models, materials, etc) by Physis crashes the 7.x retail client. |
2024-05-25 23:52:33 -04:00
2025-03-08 11:07:01 -05:00
Only Windows versions of the game is supported at the moment. Only the latest version in a patch series is supported, but benchmarks for the expansion should be supported.
2024-05-25 23:52:33 -04:00
2022-08-06 18:40:16 -04:00
## Usage
2024-04-22 15:43:35 -04:00
If you want to use Physis in your Rust project, you can simply add it as a dependency in `Cargo.toml` :
2022-08-06 18:40:16 -04:00
2024-04-22 15:43:35 -04:00
```toml
2022-10-20 12:03:19 -04:00
[dependencies]
2024-06-29 10:05:01 -04:00
physis = "0.4"
2022-10-20 12:03:19 -04:00
```
2024-05-25 23:52:54 -04:00
Documentation is available online at [docs.xiv.zone ](https://docs.xiv.zone/docs/physis ). It's automatically updated as new
2022-10-20 12:03:19 -04:00
commits are pushed to the main branch.
2022-08-06 18:40:16 -04:00
2024-04-28 11:12:09 -04:00
C# projects can use [PhysisSharp ](https://github.com/redstrate/PhysisSharp ) which exposes Physis in C#.
2024-05-25 23:52:33 -04:00
C/C++ projects (or anything that can interface with C libraries) can use [libphysis ](https://github.com/redstrate/libphysis ).
2024-04-22 15:43:35 -04:00
## Building
2025-04-28 16:50:24 -04:00
You need to set up [Rust ](https://www.rust-lang.org/learn/get-started ) and then run `cargo build` . Although Physis is a library, we have a few examples you can run.
2022-10-20 12:03:19 -04:00
2022-08-06 18:40:16 -04:00
## Contributing & Support
2022-07-19 19:29:41 -04:00
2025-03-10 15:50:00 -04:00
Feel free to submit patches to help fix bugs or add functionality. Filing issues is appreciated, but I do this in my free time so please don't expect professional support.
2022-10-25 13:06:49 -04:00
2025-04-28 16:50:24 -04:00
See [CONTRIBUTING ](CONTRIBUTING.md ) for more information about the project.
2024-04-22 15:43:35 -04:00
## Credits & Thank You
2025-04-28 16:50:24 -04:00
2025-03-10 17:16:45 -04:00
* [goatcorp ](https://goatcorp.github.io ) (XIVQuickLauncher, docs.xiv.dev, and even more)
* [Ioncannon ](http://ffxivexplorer.fragmenterworks.com/research.php ) (FFXIV Data Explorer) for the first documenting the file formats
* [binrw team ](https://binrw.rs ) for an awesome Rust library!
* [sha1-smol ](https://github.com/mitsuhiko/sha1-smol ) for a dependency-free SHA1 implementation
2025-03-08 09:22:52 -05:00
* [FFXIVTools ](https://github.com/dlunch/FFXIVTools ) for it's Havok parsing implementation
2025-03-10 17:15:14 -04:00
* [texture2ddecoder ](https://github.com/UniversalGameExtraction/texture2ddecoder/ ) for it's BCn texture decoding functions.
2022-10-25 13:06:49 -04:00
2023-12-02 19:48:42 -05:00
And everyone else who writes FFXIV tools!
## License

2024-04-22 15:43:35 -04:00
This project is licensed under the GNU General Public License 3. Some parts of the code or assets may be licensed differently, refer to the REUSE metadata.