XML-TNS ::= "" [ACK | CMD] XML-TN DESCRIPTION ""(these are entity updates)
| "" ACK XML-MAP DESCRIPTION ""
| "" ACK VIEWPORT DESCRIPTION ""
| "" ACK DESCRIPTION ""
| "" ERROR DESCRIPTION ""
ACK ::= "previous client command"
CMD ::= "" (forced updates without a previous command from the client)
ERROR ::= "previous client command"
DESCRIPTION::= MSG
| MSG ADM
| MSG DBG
| MSG DBG ADM
| (empty)
MSG ::= "" "message for user" ""
ADM ::= "" "administrative message" ""
DBG ::= "" "debug message" ""
XML-TN ::= [ENTITY]+
| [EUPDATE]+ (entity behaviour change)
| [EVCHANGE]+ (entity velocity change)
| [ERCHANGE]+ (entity rotation change)
ENTITY ::= "" ID XY [ BEHAVIOUR []* ]* "" (entity == ent)
IMG ::= ""
| ""
EUPDATE ::= "" ID BEHAVIOUR ""
EVCHANGE ::= "" ID V ""
ERCHANGE ::= "" ID R ""
ID ::= "" UNIQUEID ""
BEHAVIOUR ::= "" string "" (bhr == behaviour)
UNIQUEID ::= integer
XML-MAP ::= ""
VIEWPORT ::= "" "" integer "" "" integer "" ""
V ::= "" float "" (in m/s)
R ::= "" float "" (in radians)
XY ::= "" integer "" "" integer ""