1
Fork 0
mirror of https://github.com/redstrate/Physis.git synced 2025-05-05 02:07:46 +00:00
Library for reading and writing FFXIV data
Find a file
2025-04-28 23:11:22 -04:00
.github/workflows Remove references to old features on the CI 2025-03-11 16:47:30 -04:00
.reuse Add missing REUSE metadata 2025-04-28 16:54:02 -04:00
benches Run cargo fmt 2024-04-20 13:18:03 -04:00
examples Shrink the dependency and feature complexity, auto-cleanup and more 2025-03-11 16:29:24 -04:00
LICENSES Partial map write support (#9) 2025-04-13 18:34:18 -04:00
resources/tests Partial map write support (#9) 2025-04-13 18:34:18 -04:00
src Remove more launcher-only functions from Physis 2025-04-28 22:58:51 -04:00
tests Give patch_testing the same treatment as retail_testing 2025-04-28 23:05:20 -04:00
.gitignore Remove accidental main.rs commit, add to .gitignore 2024-06-28 06:12:30 -04:00
Cargo.toml Give patch_testing the same treatment as retail_testing 2025-04-28 23:05:20 -04:00
CONTRIBUTING.md Remove fluff from the README 2025-04-28 16:50:24 -04:00
deny.toml Update dependencies 2025-04-28 17:23:09 -04:00
README.md Simplify supported game versions in README 2025-04-28 23:11:22 -04:00

Physis

Crates.io

Physis is a library for reading and writing FFXIV data.

Features

Here is a list of supported formats and their status:

File Format Read Write Note
Configuration files
Saved character data
Chara make params
Dictionaries
Excel data
File infos
Map layers Layer support isn't well tested yet.
Chat logs Not all chat categories are discovered yet.
Models Adding custom shape keys aren't fully supported yet.
Materials
Patch files ~ ZiPatch writing support is currently being worked on, but many operations are not yet implemented.
Pre bone deformers
Shader packages
Skeletons
Terrain
Textures Only some formats are supported.

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.
  • Construct paths to equipment, items, faces, and other useful models.

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

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.

C# projects can use PhysisSharp which exposes Physis in C#.

C/C++ projects (or anything that can interface with C libraries) can use libphysis.

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 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.