Welcome to FFXIVClientStructs
FFXIVClientStructs is a comprehensive C# library that encapsulates community efforts to reverse engineer the object layout of native classes in Final Fantasy XIV. It provides powerful tools to assist in interop with native objects and functions in the running game.This library is designed to work seamlessly with Dalamud, the primary third-party plugin loader for FFXIV.
Quick Start
Get started with FFXIVClientStructs in minutes
Installation
Add the library to your C# project
Reverse Engineering Database
IDA/Ghidra scripts for reverse engineering
GitHub Repository
View source code and contribute
Key Features
Type-Safe Native Interop
FFXIVClientStructs uses explicit layout unmanaged structs that map 1:1 in memory with the game’s objects. All types are represented withStructLayout(LayoutKind.Explicit) for precise memory alignment.
Framework.cs
Source Generator-Powered Function Calls
No marshalling overhead - all native functions are called via C# function pointers with automatic null safety checks. The library uses C# Source Generators to eliminate boilerplate.Character.cs
Singleton Access
Many native singletons can be accessed via static instance methods, providing easy entry points to the game’s systems.Example Usage
C++ STD Library Support
Wrappers for accessing data from C++ standard library collections used by the game, includingstd::vector, std::map, std::set, and more.
String Handling
The game usesUtf8String (similar to std::string) and C-style null-terminated UTF-8 strings. The library provides automatic string conversion overloads for convenience.
How It Works
FFXIVClientStructs represents native classes as fixed-offset structs. When you have a pointer or reference to one of these structs, you can:- Access native memory the same way you’d access a field on any C# class or struct
- Call native functions as if they were regular C# methods
- Navigate object hierarchies through pointer fields
- Pass the struct’s pointer to C++ member and virtual functions
- Resolve function addresses from signatures at runtime
- Perform null safety checks
- Handle UTF-8 string conversions
Real-World Example
Complete Example
Community & Credits
This project is maintained by the FFXIV reverse engineering and Dalamud communities, with contributions from numerous developers.Project Maintainers
Next: Installation
Learn how to add FFXIVClientStructs to your project
Quick Start Guide
Start using the library in your code