Beginnings of design documentation for party services.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@93 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
Cocktail: Party Design -*- outline -*-
|
||||
|
||||
* Introduction
|
||||
The Party layer builds upon the Cher layer through the addition of a few
|
||||
key services. These services are based around the concept of bodies and
|
||||
places. A client of the system is represented by a body and that body can
|
||||
occupy a place. Bodies can communicate with one another through two
|
||||
mechanisms: they can speak which broadcasts their message to all other
|
||||
bodies that occupy the same place, or they can tell which delivers their
|
||||
message specifically to one target body regardless of place.
|
||||
|
||||
Services are provided for switching from place to place as a body can only
|
||||
occupy one place at a time (or no places at all). A framework is provided
|
||||
for management of places on the server. Most applications will likely want
|
||||
to specialize the place concept and extend it with functionality specific
|
||||
to their needs.
|
||||
|
||||
* Components
|
||||
Wherein the individual classes and components that make up the Party
|
||||
framework are described.
|
||||
|
||||
** BodyObject
|
||||
The body object extends the client object from the Cher framework and
|
||||
tracks information like the current place occupied by the body.
|
||||
|
||||
** PlaceObject, PlaceManager
|
||||
An instance of place object represents a particular place and tracks
|
||||
information pertinent to that place, like what bodies currently occupy it.
|
||||
Every place has an associated place manager which lives on the server and
|
||||
coordinates services for that place. It can be extended to coordinate
|
||||
services for place specializations.
|
||||
|
||||
** ChatService, ChatProvider, ChatReceiver
|
||||
These three classes coordinate and manage communication between bodies.
|
||||
Reference in New Issue
Block a user