Apparently we were reading packed booleans wrong the whole time (whoops!) They are packed into *bytes*, oops... That is fixed now, and I also expanded write support for packed booleans. It makes the assumption that the byte is always at the end of the row, but I think that's OK for now. I also added a good test-case for this, the PhysicsGroup EXD. It has a lot of rows, and some packed booleans thrown in. The columns also have out-of-order column definitions (as in, their offsets don't increase in order.) |
||
---|---|---|
.github/workflows | ||
examples | ||
LICENSES | ||
resources/tests | ||
src | ||
tests | ||
.gitignore | ||
Cargo.toml | ||
CONTRIBUTING.md | ||
deny.toml | ||
README.md | ||
REUSE.toml |
Physis
Physis is a library for reading and writing FFXIV data. It knows how to read many of the game's formats, and can write some of them too.
Supported Game Versions
All game versions are supported, including benchmark versions of the game. Only the Windows client data is tested and other platforms probably won't work.
Supported Platforms
Physis compiles and runs on all major platforms including Windows, macOS, Linux and WebAssembly.
Usage
Physis exposes it's API in a few different languages:
Rust
If you want to use Physis in your Rust project, you can simply add it as a dependency in Cargo.toml
:
[dependencies]
physis = "0.4"
Documentation is available online at docs.xiv.zone. It's automatically updated as new commits are pushed to the main branch.
If you need a high-level Excel API, see Icarus which is based off of Physis.
C/C++
C/C++ projects (or any language that can interface with C) can use libphysis.
C#
C# projects can use PhysisSharp which exposes part of the Physis API to C#.
Building
You need to set up Rust and then run cargo build
. Although Physis is a library, we have a few examples you can run.
Contributing & Support
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.
See CONTRIBUTING for more information about contributing back to the project!
Credits & Thank You
- goatcorp (XIVQuickLauncher, docs.xiv.dev, and even more)
- Ioncannon (FFXIV Data Explorer) for the first documenting the file formats
- binrw team for an awesome Rust library!
- sha1-smol for a dependency-free SHA1 implementation
- FFXIVTools for it's Havok parsing implementation
- texture2ddecoder for it's BCn texture decoding functions.
And everyone else who writes FFXIV tools!
License
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.