Skip to content

DML Protocols

Upon extracting the DML messages from the Root.wad, we can observe that every file is marked with an XML node named _ProtocolInfo right away. The DML protocol that the messages in the following list relate to is indicated by this node.

DML Protocols are a KiNP subcategory that aids in assigning specific game actions to corresponding protocols.

ProtocolInfo

Each message file begins with an XML node labeled as _ProtocolInfo. This is a metadata node which always contains 4 elements.

NameDescription
Service IDThe unique ID of this protocol, used for encoding and decoding.
Protocol TypeA one-word descriptor of the protocol.
Protocol VersionThe version of the protocol.
Protocol DescriptionA short summary detailing the protocol.

Figure A.I -- The fields a protocol may contain.

xml
<_ProtocolInfo>
    <RECORD>
        <ServiceID TYPE="UBYT">5</ServiceID>
        <ProtocolType TYPE="STR">GAME</ProtocolType>
        <ProtocolVersion TYPE="INT">1</ProtocolVersion>
        <ProtocolDescription TYPE="STR">Game Messages</ProtcolDescription>
    </RECORD>
</_ProtocolInfo>
<_ProtocolInfo>
    <RECORD>
        <ServiceID TYPE="UBYT">5</ServiceID>
        <ProtocolType TYPE="STR">GAME</ProtocolType>
        <ProtocolVersion TYPE="INT">1</ProtocolVersion>
        <ProtocolDescription TYPE="STR">Game Messages</ProtcolDescription>
    </RECORD>
</_ProtocolInfo>

Figure A.II - An example of a _ProtocolInfo node.

List of Protocols

The table below represents all the protocols that currently exist internally.

Service IDProtocol
1SYSTEM
2EXTENDEDBASE
5GAME
7LOGIN
8PATCH
9PET
10SCRIPT
11TESTMANAGER
12WIZARD
15MOVEBEHAVIOR
16PHYSICS
19AISCLIENT
25SOBLOCKS
40SKULLRIDERS
41DOODLEDOUG
42MG1
43MG2
44MG3
45MG4
46MG5
47MG6
50WIZARDHOUSING
51WIZARDCOMBAT
52QUEST
53WIZARD2
54MG9
55GAME2
56WIZARD3
57CANTRIPS

Figure C.I -- A table of all known prototypes.

Protocol Records

The following nodes will be the hard-coded template for every message the client is capable of encoding and decoding through DML.