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=""Here is my quote"" html="<p>"Here is my quote"/<p>"/>
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=""Here is my quote"" html="<p>"Here is my quote"/<p>"/>
<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
<getplayerlist/>
This function will return comma separated listing of player in the room.
This list will be presented the "msg" field of a
Last Updated: May 2, 2005
If you have any questions, don't hesitate to contact us via email from the links on the homepage.