Kal Online client modding: .pk archives, KxEditor, and the OpenKal parsers
Posted: Sat Oct 17, 2026 12:37 am
Kal Online client modding: .pk archives, KxEditor, and the OpenKal parsers
Kal Online is a closed-source game, so modding the client means working with the data files it ships with rather than modifying code directly. The most common entry point is the .pk archive format, which bundles most of the client's text-based data. This post covers what .pk files are, which tools can open them, and what you can safely change as a beginner.
What is a .pk file?
Think of a .pk file as a locked zip archive. Inix packed most of the client's data into these containers instead of shipping thousands of loose files. The two you will encounter most often are and .
holds text-based data files like InitItem (item definitions) and message-e (the English strings the client displays). This is the file most beginners start with.
The catch is encryption. Kal Online has used several schemes over the years. The classic one the community calls "swordcrypt" protects and and is password based. For a period roughly between 2011 and 2014, Inix additionally used AES encryption on some clients, and that era is still the hardest to crack open. Old clients and most private server clients use the earlier schemes, which current tools handle fine.
The tools: KxEditor and friends
The tool most beginners start with is KxEditor on GitHub. It is an open source (GPL-3.0) .pk editor written in C#, and per its own README it supports all the encryptions except that 2011-2014 AES variant. In practice that means it opens the archives you will actually be modding on private servers and older clients.
Before KxEditor, most people used the Kal Online Advanced PK Editor, which the Kal Dev Wiki documents: load a swordcrypt encoded or , edit the contents, then save as "config.pk (swordcrypt)" with your password. Older tutorials on the wiki and forums describe that tool, and the concepts transfer one to one.
OpenKal parsers: for when you go past text editing
Text edits inside only get you so far. The actual game assets (3D models, animations, maps) live in binary formats, and this is where the OpenKal Parser Collection comes in. It is a set of Kal Online data parsers written in Python (Python 3.6 plus NumPy) together with a Blender add-on, originally targeting Blender 2.79.
The collection includes parsers for several Kal formats: GB (the model format), KCM and KSM (map related), OPL and ENV. The Blender add-on can import nearly everything from a GB file: armatures, meshes, materials, textures, animations and even collision meshes.
Two honest caveats from the README: export is not implemented (so this is for studying and extracting, not for pushing edited models back in), and textures need to be in DDS, PNG or TGA, so Kal's native GTX images have to be converted first.
What you can safely change
Safe here means two things: it will not corrupt your client, and it will not silently do nothing. A sane first project is to grab KxEditor, open your private server client's, find message-e, change one visible string (an item name works well), save with the correct password, launch the client and confirm the change shows up. That loop teaches the whole pipeline: open, edit, encrypt, verify.
If you want to change game behavior rather than data, know that data edits will not get you there. The client is closed source, and as the kalonline-mod-collection README puts it, the only way to modify the game itself is via low level hooks in C++ and inline assembly. That is a completely different discipline from .pk editing and not beginner territory.
Frequently asked questions
Q: KxEditor asks for a password. Where do I get it?
A: The swordcrypt password is set by whoever packed the archive. Private server admins set their own and usually share it with their dev team. For old official clients the community-known passwords float around the usual Kal dev forums. Without the correct password the archive simply will not decrypt.
Q: My client is from the 2011-2014 era and nothing opens it. Why?
A: That window used AES encryption, which KxEditor explicitly does not support. Your realistic options are using an older or newer client version, or working with a private server client that uses the classic encryption.
Q: Will I get banned for editing .pk files?
A: On a private server, that is between you and the admin. On official servers, assume any client modification can be detected and treated as a violation. Keep your experiments on clients you are allowed to modify.
Sources
[1] kalonline-mod-collection: Kal Online reverse engineering and modding
[2] Meet openkal: custom client and server in C++ with Godot
[3] Bango: KalOnline MMORPG Server Emulator for Linux
Kal Online is a closed-source game, so modding the client means working with the data files it ships with rather than modifying code directly. The most common entry point is the .pk archive format, which bundles most of the client's text-based data. This post covers what .pk files are, which tools can open them, and what you can safely change as a beginner.
What is a .pk file?
Think of a .pk file as a locked zip archive. Inix packed most of the client's data into these containers instead of shipping thousands of loose files. The two you will encounter most often are
Code: Select all
config.pkCode: Select all
e.pkCode: Select all
config.pkThe catch is encryption. Kal Online has used several schemes over the years. The classic one the community calls "swordcrypt" protects
Code: Select all
e.pkCode: Select all
config.pkThe tools: KxEditor and friends
The tool most beginners start with is KxEditor on GitHub. It is an open source (GPL-3.0) .pk editor written in C#, and per its own README it supports all the encryptions except that 2011-2014 AES variant. In practice that means it opens the archives you will actually be modding on private servers and older clients.
Before KxEditor, most people used the Kal Online Advanced PK Editor, which the Kal Dev Wiki documents: load a swordcrypt encoded
Code: Select all
e.pkCode: Select all
config.pkOpenKal parsers: for when you go past text editing
Text edits inside
Code: Select all
config.pkThe collection includes parsers for several Kal formats: GB (the model format), KCM and KSM (map related), OPL and ENV. The Blender add-on can import nearly everything from a GB file: armatures, meshes, materials, textures, animations and even collision meshes.
Two honest caveats from the README: export is not implemented (so this is for studying and extracting, not for pushing edited models back in), and textures need to be in DDS, PNG or TGA, so Kal's native GTX images have to be converted first.
What you can safely change
Safe here means two things: it will not corrupt your client, and it will not silently do nothing. A sane first project is to grab KxEditor, open your private server client's
Code: Select all
config.pkIf you want to change game behavior rather than data, know that data edits will not get you there. The client is closed source, and as the kalonline-mod-collection README puts it, the only way to modify the game itself is via low level hooks in C++ and inline assembly. That is a completely different discipline from .pk editing and not beginner territory.
Frequently asked questions
Q: KxEditor asks for a password. Where do I get it?
A: The swordcrypt password is set by whoever packed the archive. Private server admins set their own and usually share it with their dev team. For old official clients the community-known passwords float around the usual Kal dev forums. Without the correct password the archive simply will not decrypt.
Q: My client is from the 2011-2014 era and nothing opens it. Why?
A: That window used AES encryption, which KxEditor explicitly does not support. Your realistic options are using an older or newer client version, or working with a private server client that uses the classic encryption.
Q: Will I get banned for editing .pk files?
A: On a private server, that is between you and the admin. On official servers, assume any client modification can be detected and treated as a violation. Keep your experiments on clients you are allowed to modify.
Sources
[1] kalonline-mod-collection: Kal Online reverse engineering and modding
[2] Meet openkal: custom client and server in C++ with Godot
[3] Bango: KalOnline MMORPG Server Emulator for Linux