Notation in file description is in BNF-like form, with brackets
denoting parameters, and comments preceded by semicolon. All
items appear on separate lines (separated by newline), with the line descriptor
letters #[specifier] at the very beginning. All files and data formats
consist only of ASCII printable characters.

Configuration files contain, in the first two lines:

  [port number]
  [maze path name]


Client-to-server messages are as follows:

#I [ID]     ; ID begins with M for monster, P for player, followed by index
#T [status]
#A [motion] [direction] [kick]  ; Each may be one of the 4 directions or None
#S [score]                      ; What agent thinks its score should be
#E                              ; end of message

Server-to-client messages and maze files have the same format:

#S [status]     ; normal or restart game
#M [number of monsters]      ; followed by as many lines as needed, formatted:
  [index] [monster X] [monster Y] [monster direction] [monster status]
#P [number of players]       ; followed by as many lines as needed, formatted:
  [index] [player X] [player Y] [player direction] [player status]
#D [number of diamond blocks]
   [X] [Y]
#F [number of bonus fruit items]
   [X] [Y] [value]
#Z [maze x size] [maze y size]  ; followed by actual maze: . = space, X = block
...X..
...XX.
.X....

[optional data]
#E                                ; end of file or message

Optional data appears in the messages, notifying all of changes
in status for agents. Currently suggested are:

#K [killer ID] [victim ID]
#C [agent ID] [X] [Y]    ; agent (ID) got treasure at X, Y (amended 19/1/99)