Draft protocol specification for GUMI, Graphical User-friendly Moo Interface (by John Bauer, draft.txt, 20-Apr-1998) CONTENT This document contains the specification of the protocol to be used between a client and custom modified MOO. FORMAT This is the general directive format. Note that some directives skip some of the fields, and some add additional fields. ( #R for example, ADDITIONAL is the objects in the room, and OWNER would be the exits from the room, the last field is not used) #ACTION|DOBJECT_NUM|NAME|FILE|DESCRIPTION|ADDITIONAL|OWNER|UNIQ_FILE| ACTION: The ACTION is to be one of a set of DIRECTIVES, new DIRECTIVES will be added as development progresses. ACTION will be a single or double character. DOBJECT_NUM: The object the ACTION is intended for. GEN_FILE: The file can be of any type, support for the file type is added at the client end. Initial FILE types may include JPG/GIF/AU/CLASS/WRL. The FILE path is assumed to be SERVER_PATH unless the absolute path of the file is specified, i.e: http://hostname/file.ext. Rooms are located in SERVER_PATH/rooms Players are located in SERVER_PATH/players Objects are located in SERVER_PATH/objects This is the file that people see in the main room window. SERVER_PATH: SERVER_PATH is set by the client parameters. NAME: Name of DOBJECT. DESCRIPTION: Description of the DOBJECT. ADDITIONAL: Additional parameters for unique cases. OWNER: Who owns this object UNIQ_FILE: This can be considered a detailed image of an object. The UNIQ_FILE is displayed in a window along side of main room window. FILE type is assumed to be an image unless otherwise specified. DIRECTIVES: C - Cache DOBJECT and the FILE associated with it. Cached objects are kept track of by object #. If a cached copy needs to be updated, reissue the CACHE directive with desired parameters. On login, why not cache commonly used objects, surrounding rooms, and logged in players. Coordinates are received when object comes to current view. #C|109|jbauer|jbauerimage|A wizard in the gamma quadrant| CR - Cache Room, the unknown is the objects in the room, this could change before the user gets there, so they are sent when someone arrives in a room. We can assume exits are fairly constant, get them once. #CR|118|Planet-X|planet-x|description|unknown|exit list| CP - Connect player, (cache player) player is cached. #CP|123|jbauer|defaultplayer|The description|jbauer|jbauer.jpg| DP - Player has disconnected, player is still cached. #DP|123| R - Room, when a player enters a room, the room specific info is sent. Room directive is followed by the X (exits) directive, and all objects in the room E (enter) or EP (enterplayer). The ADDITIONAL info for the room directive is a list of all the objects in the room. This allows for error checking for getting all the objects in a room. #R|118|Planet-X|defaultroom|room description|234,345,456,678,897| E/EP - DOBJECT has entered current room. If the E directive has a P, it's a player, add to list of players that are in the current room. NAME is loaded, ADDITIONAL is object's (x,y,z) coordinates. Display image at specified coordinates, otherwise place at default coordinates. On entrance to a room players and things are sent with this directive. #EP|109|jbauer|defaultplayer|A wizard in the gamma quadrant|10,10,10| #E|333|slatorite|defaultmineral|A grand mineral|10,10,10| L/LP - Leave, DOBJECT is no longer in the scope of the current scene. Keep cached. #L|234| #LP|109| M - DOBJECT is moved to the coordinates specified in additional. FILE may be changed to display a different image. #M|109|same|10,10,10| Moves object #109 to specified cords. #M|109|imagename|10,10,10| Moves object #109 and changes image #M|109|imagename| Changes object #109 image J - Execute java class specified by FILE. Unsure how this can tie into the client at this time, but it may be a way to easily add functionality. i.e: Implementing a merchant.class, clicking on the merchant in the client will spawn the merchant code. #J|333|javafile| // Possible to run an extern java program that talks // to the moo??? U - Update game data, if game info is changed, the server is responsible for issuing an UPDATE. #U|INFO|INFO|INFO|MORE_INFO| // Game Data ... S - Say, text argument is displayed near the DOBJECT in a rectangular bubble. #S|333|What a beautiful day on Planet-X!| NW - Spawn a new window with the given file type. Will most likely be an image or txt. If FILE is set to SERVER, Text is taken from ADDITIONAL. #NW|333|IMAGE.JPG|TEXT| Spawn Image with text caption #NW|333|IMAGE.JPG|| Just Image #NW|333|FILE.TXT|| File from URL #NW|333|SERVER|Text and more text and more text| Display text from server P - Play sound file specified by FILE. .au is the assumed extension, wav files are not supported by java. #P|333|soundfile| X - An exit, object, name, image, description Sent on entrance to a room. #X|118|North|imagename| description |screen cordinates| The client should send back meaningfull verbs or info that are implemented on the MOO side.