Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Dragonica Offline Client [Dev Tool]

Initiate Mage
Oct 17, 2016
Reaction score


Initial Release 0.0.0

I have decided to release this Client/Tool publicly that was previously released through the dragonica.dev community
(I am the founder of both the tool and the community)
This is the initial base release of the Offline Client.
This is a development build (literally the first) It has minimal features and plenty of issues and bugs, It has not been optimized but it is important that it is available to all who need it.
The main aim of this client is to encourage players to experiment with content creation for Dragonica such as custom maps/models, playing with animations and textures and all design elements of the game without needing to run a server or operate an entire database.
This is a foundation / initial release as the development was stopped early on in the process so it is quite simple but is still very effective.
Feel free to post comments on this resources thread about issues / bugs or wanted features.


Current Key Features:

  • Runs on Unpacked client data no need to Unpack/Repack anymore
  • Reloading map edits live via command and/or reload button​
  • Loading custom maps without a database​
  • Functional Jump Pads​
  • Functional Point to Point portals​
  • Experimental Map to Map portals (sometimes causes a crash)​
  • Experimental World Map Click = Teleport (sometimes causes a crash)​
  • Disabled some features that cause hard crashes​
  • Disabled hotkeys that cause crashes (UserInfo, PetInfo, SkillTree)​
  • Removed some logging​
  • Removed "movie" files​
  • Removed patcher files​
  • Removed gameguard files​
  • Disabled bugtrap​
  • Added emergency reload (If you are stuck loading hit esc and select REBOOT from the menu. You should only use this if you are stuck in loading otherwise it may lead to unexpected results)​
  • Added some batch scripts in the root folder for clearing shader cache and exception logs


What is the Offline Dev Client

The Offline Client is a project to revamp the existing singlemode that Dragonica clients support to improve its functionality and make it stand-alone, rather then a new mode for the normal client.

Why Standalone

Making this client its own thing will allow us to remove a lot of the unneeded functions, overwrite multiplayer functions and remove limitations put in place for multiplayer purposes, we can slim the client down and better optimise it, making the client rely on its own data and giving it more access to that data will make it overall better to use.

Why is this important

The offline client will improve creative and development workflow, it will increase productivity and reduce waiting time it will reduce effort for trivial tasks and overall make Dragonica Development more accessible to everyone.Does this mean people can play Dragonica offline?No. while entirely possible that would be an awful amount of work as you would need to move all server side functionality into the client, It is not the purpose of this tool, this is aimed to be more of a development/content creation tool and we will add as much functionality to it as possible that will support development/content creation rather than gameplay.


The Offline Client is primarily a tool for people interested in developing content for Dragonica.
It focuses heavily on Map Design but can also be used for other custom content like costumes / faces , weapons etc.This client is capable of running standalone and does not contact any servers or databases.This makes it an ideal tool for people who want to make a test content for the game without having to go through the headache of setting up and running and restarting a server constantly, however it does have it's limitations and is in early development.

The client uses custom commands to function, It is buggy please keep this in mind, report issues and we will try to resolve them when we have time.

This client/tool has been worked on and developed by:
Paris: Scripts & UI
Azu: Scripts & UI
Emi: Initial Logo design
@Spidpex : Video Tutorial / Testing

We encourage anyone interested to continue developing on this client, If you would like to submit your modifications officially then contact us through the dragonica.dev discord.
This is a CH4 based client but can run with ch5 content like maps / textures / models etc, the client currently still relies on its tb.bin data so it loads all map and monster ids from the tables.

The aim was to utilise CH4 source code to strip down un-needed features and implement new ones, opposed to CH5 to avoid causing security issues for currently running CH5 servers.


Microsoft Visual C++ 2005 (Required)

Offline Client Download
(Feel free to submit mirrors):
Google Drive

Scene Designer (GSA | Maps)
Latest 2.0: Nifskope (Nif/Kf | Model/Anim)
1.1.13: Nifskope (For compatibility issues like physx)
Nvidia Texture Tools Exporter (Photoshop DDS)
SageThumbs (Texture/Icon Previews)
AnimationTool (for KFM | Anim Sequences)
3DS Max Nif Plugin (works with dragonica)



Dragonica Offline Client Showcase And Info


Dragonica Server - Adding custom objects to scene designer





Current Command List:

  • AddChar(class, gender, setPC, WEP)
    this command is used for adding a new character into the current scene, you can spawn it as a separate character or take control of it instantly using the setPC paramter.

    Class defines the class of the new character

    Warrior = 1
    Magician = 2
    Archer = 3
    Thief = 4
    Shaman = 51
    Twin Fighter = 52

    JC 1:
    Knight = 5
    Gladiator = 6
    Monk = 7
    Wizard = 8
    Hunter = 9
    Marksman = 10
    Bandit = 11
    Infiltrator =12
    Summoner = 53
    Twin = 54

    JC 2:
    Paladin = 13
    Myrmidon = 14
    Priest = 15
    Warlock = 16
    Pathfinder = 17
    Specialist = 18
    Rogue = 19
    Assassin = 20
    Elementalist = 55
    Mirage = 56

    JC 3:
    Dragoon = 21
    Overlord = 22
    Invoker = 23
    Sorcerer = 24
    Sentinel = 25
    Destroyer = 26
    Savage = 27
    Ninja = 28
    Earth Master = 57
    Jumeaux = 58

    Unused/Cut Content:
    Duelist = 29
    Doctor = 30
    Gunslinger = 31
    Bard = 32
    Battlemaster = 33
    Anatomist = 34
    Desperado = 35
    Vocal = 36

    Gender, Male = 1 | Female = 2
    setPC defines if you will control it or not, true = Control | false = don't control
    WEP is mostly unused at the moment, it will allow you to assign any weapon ID to your spawned character. Fill in with 0 or a weapon ID if using warrior ( Doesn't even need to be a sword)
    You can find weapon IDS in \OfflineDevClient\xml\defstrings\tb_defstrings_item.xml

    Only warriors currently are able to perform attack animations.
    We plan to move this into a more user friendly character creation system to give you full control over the command parameters etc.

    Example Command: /AddChar(1,2,true, 13000140) spawns a warrior, female that i will control and is holding a magicians staff

  • AddMonster(monNo, setmyPC, x, y, z)
    This is similar to the AddChar command except it uses classno IDS, this means you can spawn npcs / monsters and such they do not work properly with animations but it is fun to mess around with and spawn random characters in a scene, you can setmyPC to true and move them around, whenever you want to stop moving them just run AddMonster or AddChar again and setPC to true, this will make you control a new entity leaving the old one behind.

    You can find npc/monster IDS in \OfflineDevClient\xml\classno.xml

    Example Command: /AddMonster(900107,true) will turn you into club mania skill effect for memes.

    Currently to reset these spawns you need to reload the map you can find a button for that at the minimap.

  • AddRidingObject(ObjNo, setmyPC, x, y, z)
    This command seems to be mostly unfinished (it is probably missing functionality) it will let you spawn elevator objects essentially, using any of the existing classno IDS, you can test this command by simply using /AddRidingObject() and it will spawn a default elevator object.

    Example Command: /AddRidingObject(5000522)

  • AddObject(ObjNo, setmyPC, x, y, z)
    Similar to the previous command this one is used for spawning BreakObjects like crates, pulls ids also from classno.xml specifically objects under BreakObject headers.

    Also seems to be missing functionality

    Example Command: /AddObject(5010000)

  • ReqMapMove(mapNo)
    This command is for teleporting to existing maps that are already assigned IDS in the ch4 database.
    Does not currently support spawn points

    Example Command: /ReqMapMove(9990103)

  • ReqMapMoveByName(mapName)
    This command can be used to load custom maps assigned in \OfflineDevClient\xml\path.xml
    add your map xml to the path.xml file like so:
    <WORLD ID="w_bosssapphire">World/99_boss/d_bosssapphire.xml</WORLD>
    and then you can teleport to it.
    Does not currently support spawn points

    Example Command:/ReqMapMoveByName('w_bosssapphire')
    When using strings (text) in commands we must wrap them in quotes 'string' or "string"

  • Re() and ReloadMap()

    do the same thing essentially, use these commands to reload the map or press the reload button on your minimap.
    Re() will reload your saved map where as ReloadMap() will reload the current map regardless if it is the saved map or not.

  • ClearUI()
    currently closes the menu bar and casting bar you shouldn't really use this. reload map to bring it back.

  • AddCharRandom(iCount)
    adds some random characters with random equipment (a bit buggy).

    Example Command: /AddCharRandom(5)

  • AddChars(iClassNo, iSex, iCount)

    adds some characters with specific class/gender.

    Example Command: /AddChars(1,2,3)

  • AddMonsters(iClassNo, iCount)
    spawn multiple monsters

    Example Command: /AddMonsters(6001100,5)
    Not very useful as it spawns all 5 in the same spot.

  • AddStatusEffect(iEffectID, iValue)

    used for adding a status effect by ID
    Example Command: (add later)

  • RemoveStatusEffect(iEffectID)

    removes a specific status effect

    Example Command: (add later)

  • AddStatusEffectName(kEffectXMLName, iValue)

    Used for adding a status effect by name

    Example Command: /AddStatusEffectName('se_big_head_size',1)
    Makes your head big.

    Example command: /AddStatusEffectName('se_transform_to_frog',1)
    Turns you into a frog.

    Get name IDS from \OfflineDevClient\xml\StatusEffect\
    or search for
    STATUS_EFFECT in path.xml

  • RemoveStatusEffectName()
    Used for removing a status effect added by name
    Example Command /RemoveStatusEffectName()

  • NewCombo(kActionID)

  • ResetCombo()

  • PlayActionID(kActionID)

  • MonPlayActionID(kActionID)

  • MonPlayActionNo(kActionNo)

  • Singha()
    Experimental command spawns tpose bears

  • AddChat(string, iCount)
    Doesn't work properly yet

  • ParticleTest(flag)
    Makes you poop gas

  • DropboxTest(boxNo, itemNo)
    I don't think this is working yet

  • SelfReload()
    Reloads specific lua files



Last edited: