Skip to content

Distributed message layer

The distributed message layer, also abbreviated as DML, is a subsidary data layer that the game client employs to distribute data packets through in-game systems. It is also utilized to transmit game actions to and from the server in KiNP.

Data Types

DML supports a wide array of data types. Below represents a table said formats.

NameTypeBinary
BYTint8_tSigned 1-byte integer.
BOOLint8_tSigned 1-byte boolean.
UBYTuint8_tUnsigned 1-byte integer.
SHRTint16_tSigned 2-byte integer.
USHRTuint16_tUnsigned 2-byte integer.
INTint32_tSigned 4-byte integer.
UINTuint32_tUnsigned 4-byte integer.
STRuint8_t[]A length prefix (uint16_t) string of UTF-8 characters..
WSTRuint16_t[]A length prefix (uint16_t) string of UTF-16 characters.
FLTfloat32-bit floating point.
DBLdouble64-bit floating point.
GIDuint64_tUnsigned 8-byte integer used exclusively for global IDs.

Figure A.I -- The binary sizes of each DML element type.

DML Templates

For serialization purposes, a template must be known ahead of time to serialize binary data accordingly. In the case of the game client, the DML messages are kept internally, and can be represented as XML.

Using an unpacking tool such as katsuba, these message templates can be found in Root.wad in the GameData directory. Once unpacked, a user may search for "*Messages.xml" to find the XML representation of these templates.