Changes between Version 64 and Version 65 of ProtocolZero


Ignore:
Timestamp:
Jun 14, 2011 4:14:32 PM (13 years ago)
Author:
jpawlick
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ProtocolZero

    v64 v65  
    77== Overview ==
    88ProtocolZero commands are sent as plaintext over a TCP/IP socket to Quake on port 6000. Currently, any new connections to this port result in the creation of a new bot. Initial commands are simply ASCII strings of the form CMD PARAM. The final initial command given is "ready", after which the bot is spawned, and live commands become usable. Live command format is of the form A BB IDNUM PARAM_1 PARAM_2 PARAM_3 PARAM_4... \n
    9  * where A is either a 't' or 'n' character, for 'then' or 'now', specifying scheduling (see below).
     9 * where A is either a 't', 'r', or 'n' character, for 'then', 'replace', or 'now', specifying scheduling (see below).
    1010 * where BB is the opcode of the instruction (always 2 characters).
    1111 * where IDNUM is a sequence of numeric characters representing an unsigned 32-bit integer. This code will be returned on completion, for the client's convenience. We imagine that users will typically make this a sequence number, but we do not require or enforce uniqueness.
     
    2424  * The server might eventually respond "cp mf 350 blocked".
    2525
    26 Quagents model their behavior in the form of a double-ended queue that has a maximum capacity of 128 commands. Commands can be pushed onto either the front ("now" commands) or the end ("then" commands).
     26Quagents model their behavior in the form of a double-ended queue that has a maximum capacity of 1024 commands. Commands can be pushed onto either the front ("now" commands) or the end ("then" commands). Additionally, the top command can be atomically replaced by a new command ("replace" commands).
    2727
    2828In addition to individual Quagents, there is also the possibility of commanding a wiki:GOD (Global Overview Descriptor) structure, which collects and returns macroscopic game data. The idea is that there are two types of connection permissions - GOD and Quagent. The GOD entity connects to the game server through port 6010.
     
    165165
    166166* Basic robot-like functions for users who want low-level fine control. (Implement first)
     167 * get [ENTITYID] - picks up an item from the environment
     168 * drop [ENTITYID] - drops an item from inventory
    167169 * move [LOCATION] - bot moves to specified location. uses native pathfinding. It would be nice if along the way it used Quake's goal system. That would give us free puzzle-solving/button-pushing/surfacing-for-air.
    168170 * move [OBJECT] - finds the location of specified object, and pathfinds to it using move[LOCATION].