![]() -Create common methods create_segment_self and create_segment_target. These reduce the amount of copy-paste boilerplate code since the IPC queueing stuff basically never changes as far as I can tell. Now we simply specify the opcode and the data that goes with it, and off we go. Create_segment_self retains the current behaviour of using the player's actor id as both the source and target, and create_segment_target allows us to change the source and target in case commands are written that require one or the other to be different (Sending targeted players to other coords/zones? Bringing a player to the GM/source user? Several possibilities.). |
||
---|---|---|
.github/workflows | ||
resources | ||
scripts | ||
src | ||
.gitignore | ||
build.rs | ||
Cargo.lock | ||
Cargo.toml | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md | ||
USAGE.md |
Kawari
Server emulator for a certain MMO. Updates on the project can be found on my blog.
Features
We have a working implementation for most of FFXIV's servers:
- Frontier
- Used for news, gate status and more.
- Launcher
- Used to serve the launcher web page.
- Lobby
- Create a new character and login to a World server.
- Login
- Logging in and creating new accounts.
- Patch
- Verifies the game client version. Can't serve patch files yet.
- World
- Still limited, but supports basic multiplayer and can explore zones.
Goals
Kawari is primarily a research project, but also a way to preserve the modern client. Kawari is...
- FOR preservation of the game, in the event that the servers are permanently unavailable.
- FOR exploring the packet structure for legitimate purposes (e.g. archival and preservation.)
- NOT a way to play the game without a valid subscription.
- NOT for creating bots, packet modifications or doing anything on the retail servers.
Supported Game Version
Kawari currently supports patch 7.25h (2025.06.10.0000.0000.) Kawari will never "roll back" to a previous patch. There are other servers (e.g. Sapphire) that support older versions of the game. As Kawari moves to a new major patch, the previous patch is moved to a branch (e.g. 7.1) These branches are for archival: effectively unsupported, but still useful.
Only the Global region is supported. Only the Windows client is supported. Supporting other regions or clients are currently out of scope of this project, but might work anyway.
Running
Kawari is designed to be easy to run. A guide to running Kawari can be followed here.
Contributing
Pull requests for new features, patch updates, and documentation are welcome. A guide for contributing and updating Kawari can be found here.
Credits & Thank You
- Sapphire for reference.
- iolite for inspiration & reference.
- TemporalStasis for tooling and reference.
- Project Chronofoil for easy packet capture.
- FFXIVClientStructs for being an invaluable resource for the client's internals.
License
This project is licensed under the GNU Affero General Public License 3. Some code or assets may be licensed differently.