It's OSC. Messages are sent by clients to the engine. Each message is replied to over the same socket as an OSC message or bundle.
/world
/game/join sss (name, team name, password)
Will be allocated an appropriate agent id and told the appropriate team id. First agent joining from a team name will be allocated an available team id.
/team/*
Authorization is determined by originating socket, for agent percepts and actions, or by hash for /game/state.
/team/*/flag
/agent/*/*/perceive
For each agent within range, including itself:
To a UI, everybody is in range, and the following information is also provided:
/agent/*/*/thrust ffff (strength for each thruster: pitch, roll, yaw, main drive. Ranges from -1 to 1, except main drive which ranges from 0 to 1)
/agent/*/*/fire
/agent/*/*/magnet f [0..1]
Read this paper for descriptions of the state variables returned in response to /agent/*/*/perceive. In summary, the state variables here map to the state variables from the article as:
In addition to the public messages, UIs can get the entire changing game state with this message.
/game/state s (hash)
or
The hash is a SHA1 hash of the timestamp followed by the pre-shared key. This is to allow UIs to see the entire world state while preventing agents from doing so.
/ack
Always sent in reply by the engine except on error; probably accompanied by other replies.
/error ss (error string, pattern)
/unauthorized s (pattern)
Sent when not authorized to access that pattern.