1
Fork 0
mirror of https://github.com/redstrate/Physis.git synced 2025-07-19 23:37:46 +00:00
Library for reading and writing FFXIV data
Find a file
Joshua Goins 81fff744f2 Overhaul file resource handling
This is a big API change, and it's probably not in it's ideal
shape right now. Physis makes a big assumption that the pool of
game data that you're reading from is in the compressed, SqPack
format like in retail. However, as the projects that use Physis
expand - so does the scope of data people want to punt into it.

For example, we have Icarus that makes it easy to read Excel data
but it can only do so through SqPack which makes it less useful in
scenarios where you want to read unpacked Excel modded files or
perhaps Excel data from the network.

So I created a Resource trait that GameData now implements (and
it's now called SqPackResource.) In a similar vain, Physis comes
with an UnpackedResource and a ResourceResolver to chain multiple
Resources together.
2025-07-08 21:37:03 -04:00
.github/workflows Update to fsfe/reuse-action v5 2025-05-09 18:00:21 -04:00
examples Overhaul file resource handling 2025-07-08 21:37:03 -04:00
LICENSES Partial map write support (#9) 2025-04-13 18:34:18 -04:00
resources/tests Fix how we read/write packed booleans in EXD, add another write test 2025-05-10 23:31:53 -04:00
src Overhaul file resource handling 2025-07-08 21:37:03 -04:00
tests Update dependencies, remove bitrotten code, update docs 2025-05-09 15:16:23 -04:00
.gitignore Remove accidental main.rs commit, add to .gitignore 2024-06-28 06:12:30 -04:00
Cargo.toml Bump version to 0.5 2025-06-24 15:50:07 -04:00
CONTRIBUTING.md Be even more specific in CONTRIBUTING 2025-05-10 19:07:38 -04:00
deny.toml Update dependencies 2025-04-28 17:23:09 -04:00
README.md Mention Icarus in the README 2025-05-10 09:33:40 -04:00
REUSE.toml Convert to new REUSE.toml format 2025-05-09 15:33:22 -04:00

Physis

Crates.io Docs Badge

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

GPLv3

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.