Crate physis

Crate physis 

Source
Expand description

§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.5"

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.

Modules§

avfx
Types for animated VFX (.avfx) files.
blowfish
Implementation of the Blowfish ECB block cipher used by the retail client.
bootdata
Handling data in the “boot” directory, which contains the launcher files.
cfg
Types for and writing the plaintext config (.cfg) files.
cmp
Types for character make parameter (.cmp) files.
common
Common structures, enumerations and functions used by other modules.
cutb
Types for cutscene binary (.cutb) files.
dic
Types for word dictionary (.dic) files.
equipment
Dealing with equipment and its data.
exd
Types for Excel data (.exd) files.
exh
Types for Excel header (.exh) files.
exl
Types for Excel list (.exl) files.
fiin
Types for file info (.fiin) files.
hwc
Types for hardware cursor (.hwc) files.
iwc
Types for .iwc files.
layer
Types for layer group binary (.lgb) files.
lcb
Types for .lcb files.
lvb
Types for level variable binary (.lvb) files.
model
Types for model (.mdl) files.
mtrl
Types for material (.mtrl) files.
pap
Types for .pap files.
patch
Types for ZiPatch (.patch) files.
patchlist
Types for patch lists.
pbd
Types for pre-bone deform (.pbd) files.
pcb
Types for player collision binary (.pcb) files.
phyb
Types for .phyb files.
race
Playable race and genders.
repository
Parsing game repositories, such as “ffxiv”, “ex1” and their version information.
resource
File resource handling.
savedata
Types for and writing various saved data formats from the game.
scd
Types for .scd files.
sgb
Types for shared group binary (.sgb) files.
shcd
Types for shader (.shcd) files.
shpk
Types for shader packages (.shpk) files.
skeleton
Types for skeleton (.sklb) files.
skp
Types for .skp files.
sqpack
SqPack file formats - including Db, Data and Index/Index2 files.
stm
Types for staining template material (.stm) files.
svb
Types for .svb files.
tera
Types for terrain (.tera) files.
tex
Types for textures (.tex) files.
tmb
Types for .tmb files.
uld
Types for UI layout definition (.uld) files.
uwb
Types for .uwb files.

Structs§

Error

Type Aliases§

ByteBuffer
Acontinuous block of memory which is owned.
ByteSpan
A continuous block of memory which is not owned, and comes either from an in-memory location or from a file.