Agent == Smith

Group Project Page - Chat Server

Message Specification

NOTICE

PLEASE READ ME FIRST

This is version 1.3 of our message specification, after debate with some of our collaborating teams, we feel that this is a strong and complete base message specification. As our team adds "wow" features we will add to the specification. This is our spec as of May 02, 2005.

Meta Information

You (the player, gameServer, matchServer) will be able to use the makeroom function to create a chatroom. It is important that you realize that if you specify a roomID, we will be reply with that roomID in the ACLMessage conversation-id. This conversation-id is how we will know where to route messages for your chatroom, so it is imperative that you keep that ID handy when creating messages to send to the chat server.

The person who requests the room will be marked on our server as the room owner. Only the room owner will be allowed to addPlayer, kickPlayer, and killRoom. Because of this rule, it is important to note that once we have created a room for you, you will need to then add players to the room. When a player is added to the room, we will send you a confirmation or error, if the add was successfull, we will also send a message to everyone else in the room telling the room who was added. Note: If you want to be in the room, you will need to add yourself to it.

Addendum:
With the addition of public/private rooms, it is now possible to for a non-owner to add himself to a room if the room is a public room. Private rooms will act as described above. Also, as we were making changes to the addPlayer code, we decided that it would be reasonable to allow any player to remove himself from a room regardless of the room's privacy flag. Note that the room owner will still be able to kick players in the room he owns at will. Killroom is still reserved for the room owner.

Sample ACLMessage

<?xml version="1.0">
<fipa-message act="REQUEST" conversation-id="*">
<reply-with>not used</reply-with>
<in-reply-to>not used</in-reply-to>
<content>**</content>
</fipa-message>

* Conversation-id used to route messages to a given room, and will be determined upon room creation
** See below for content tag format

Instruction Syntax Summary

Incoming TO the ChatServer

Performative: request

<makeroom/>

<makeroom roomID=""/>

<makeroom roomID="" private=""/>
   Values for private = Y/N

<killroom/>

<addplayer name="" url=""/>

<kickplayer url=""/>

<chat msg="&quot;Here is my quote&quot;" html="&lt;p&gt;&quot;Here is my quote&quot;/&lt;p&gt;"/>



Outgoing FROM the ChatServer

Performative: confirm

<roomcreated roomID="" msg="Room Created"/>

<roomkilled roomID=""/>

<playeradded url="Player -name- added"/>

<playerkicked url="" msg"Player -name- removed"/>


Performative: failure

<makeroom roomID="" msg="room already exists"/>

<killroom roomID="" msg="room does not exist"/>

<killroom msg="only room owner can kill room"/>

<addplayer msg="player is already in room"/>

<addplayer msg="only room owner can kick player"/>

<kickplayer msg="player does not exsist/>

<kickplayer msg="only room owner can kick player"/>

<failure msg="for some reason your request -request- could not be processed/>


Performative: propagate

<chat msg="&quot;Here is my quote&quot;" html="&lt;p&gt;&quot;Here is my quote&quot;/&lt;p&gt;"/>

<chat msg="ChatServer says: -name- entered the room." html="ChatServer says: -name- entered the room."/>

"Wow" Function Messages

We added support for public rooms. By default, all rooms will be created as private rooms. Public rooms are joinable by any player agent. Only the owner can add players to private rooms. The messages are backwards compatable.

We have added support for player/room listings.

<getroomlist/>
This function will return comma separated listing of rooms on the server. This list will be presented the "msg" field of a confirmation message. The formatting would be <getroomlist msg="roomname public/private, roomname public/private"/>

<getplayerlist/>
This function will return comma separated listing of player in the room. This list will be presented the "msg" field of a confirmation message. The formatting would be <getplayerlist msg="name url, name url"/>

Last Updated: May 2, 2005

If you have any questions, don't hesitate to contact us via email from the links on the homepage.