The first great Three Rings renaming. Cocktail changed to Narya, Cher

changed to Presents and Party changed to Crowd. Whee!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@431 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2001-10-11 04:07:54 +00:00
parent ac477756ea
commit 8a4c46badc
170 changed files with 832 additions and 805 deletions
+7 -7
View File
@@ -1,10 +1,10 @@
Cocktail: Party Design -*- outline -*-
Crowd 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
The Crowd layer builds upon the Presents 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.
@@ -16,11 +16,11 @@ 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
Wherein the individual classes and components that make up the Crowd
framework are described.
** BodyObject
The body object extends the client object from the Cher framework and
The body object extends the client object from the Presents framework and
tracks information like the current place occupied by the body.
** PlaceObject, PlaceManager
+1 -1
View File
@@ -1,4 +1,4 @@
Party Notes -*- outline -*-
Crowd Notes -*- outline -*-
* TODO
Wire up PlaceRegistry code to remove registrations when place objects are
+50 -24
View File
@@ -1,12 +1,19 @@
Cocktail -*- outline -*-
Narya -*- outline -*-
* What is it?
Cocktail is a platform on which multiplayer networked games may be
developed. The platform is (extremely) loosely based around the idea of a
cocktail party. For the most part, this just gives us a useful context
from which to choose names. The basic service of the Cocktail platform is
a simple information sharing mechanism based on the concept of distributed
objects. This layer is called "Cher" for reasons outlined in the Cher
Narya is a platform on which multiplayer networked games may be developed.
The various packages that comprise Narya attempt to be as loosely
connected as possible so that they may be used individually without having
to buy into our entire system. In some cases, packages depend wholesale on
other packages but that is generally only when the depending package
extends or makes serious use of the depended package (the networking layer
is used by the group management layer which is in turn used by the parlor
game layer).
** You brought presents?
One basic service of the Narya platform is a simple information sharing
mechanism based on the concept of distributed objects. This layer is
called Presents for reasons explained and apologized for in the Presents
design notes.
A distributed object has a set of subscribers. Whenever a modification is
@@ -27,15 +34,14 @@ view, controller pattern as well as into other useful patterns.
The primary value of the design is to bring the level of abstraction up
from network connections and packets, to objects and events.
** Getting the party started
Atop the distributed object layer, we further develop the concept of the
cocktail party. Parties tend to take place in rooms and be attended by
groups of people. This is the essence of the next layer of the system: a
framework for providing rooms, with occupants and mechanisms for the
people to move between those rooms. Within the rooms, we provide some
useful basic services like the ability to chat among the occupants of the
room, as well as some non-room-specific facilities like person to person
messaging from anywhere in the system and a location directory.
** Three's a crowd
Atop the Presents package, we've built the Crowd package: a framework for
providing rooms (called places), with occupants (also called bodies) and
mechanisms for the people to move between those rooms. Within the rooms,
we provide some useful basic services like the ability to chat among the
occupants of the room, as well as some non-room-specific facilities like
person to person messaging from anywhere in the system and a location
directory.
Not all games developed with the platform will want to use the room
concept, therefore we attempt at this layer and in all subsequent layers
@@ -45,11 +51,31 @@ leverage some of the useful services without having to bend their design
in uncomfortable ways or hack up some additional interface to the services
we provide.
** Let's play
From here, we branch off into all sorts of interesting directions based on
the different kinds of games that are implemented with the system. We
provide matchmaking lobbies, an extension of the room concept to the game
room, on top of which is provided a framework for managing generic
turn-based games, and various other useful services. Again the philosophy
is to provide consistently designed, but decoupled services that can be
used within and along side whatever design works best for your game.
** Come into my parlor
The Parlor services branch off into all sorts of interesting directions
based on the different kinds of games that are implemented with the
system. We provide matchmaking lobbies, an extension of the room concept
to the game room, on top of which is provided a framework for managing
generic turn-based games, and various other useful services. Again the
philosophy is to provide consistently designed, but decoupled services
that can be used within and along side whatever design works best for your
game.
** Visualized whirled peas
The Whirled services provide support for building online world games that
are composed of myriad scenes between which the user can navigate. It
provides a simple extensible framework for defining your scenes and
dynamically loading them into the server when a user traverses into them.
** Miso
A tile-based isometric rendering engine.
** Media
Various image and sound related services.
** Resource
Services for distributing bundles of resources to clients and making sure
they are up to date.
** Nodemap
Services for displaying maps made up of connected nodes.
+6 -6
View File
@@ -6,11 +6,11 @@ implementation of simple networked games. These may be turn based, puzzle,
party, or other types of games that involve one or more players acting out
a fairly uncomplicated game mechanic.
It builds upon the Cocktail package also provided by the <?> platform. The
Cocktail package is used to provide a basic network environment where
clients can share information with the server and with one another. It
allows the Parlor services to largely concentrate on requirements specific
to implementing simple online games.
It builds upon the Presents and Crowd packages also provided by the Narya
platform. These packages are used to provide a basic network environment
where clients can share information with the server and with one
another. It allows the Parlor services to largely concentrate on
requirements specific to implementing simple online games.
The services provided are divided into the following components:
@@ -40,7 +40,7 @@ This component aims to provide the following services:
** Game state management
Once the game has begun, a means is needed to share the public game state
with the players of the game and to communicate private game state if and
when necessary. This component uses the Cocktail distributed object
when necessary. This component uses the Presents distributed object
services to share information among the players and provide channels of
communication between the game manager and the players.
+19 -19
View File
@@ -1,17 +1,17 @@
Cher Design -*- outline -*-
Presents Design -*- outline -*-
* Why Cher?
The basic function of this layer is to allow the sharing (Cher-ing) of
information among different nodes in the network. Plus, I don't think Cher
has ever had a software system named after her and it's high time. Imagine
Cher as the social lubricant that allows the party goers to communicate.
* Why Presents?
The basic function of this layer is to provide a network presence (as you
can see, we love to pun; don't complain, this package used to be called
Cher) and to allow the sharing of information among different nodes in the
network.
* Overview
The Cher layer implements the distributed object services described in the
Cocktail design document. It does this within the context of an extensible
client/server application framework. Cher provides services that can be
integrated into your distributed application to share information between
a set of clients and entities operating on the server.
The Presents layer implements the distributed object services described in
the Narya design document. It does this within the context of an
extensible client/server application framework. Presents provides services
that can be integrated into your distributed application to share
information between a set of clients and entities operating on the server.
* Authentication and bootstrapping
The client initially transmits an authentication request to the server and
@@ -121,15 +121,15 @@ This function will simply wrap up the arguments and pass them to the
invocation manager for delivery to the appropriate client.
* Server configuration
The Cher server binds a properties file into the configuration name space
under the key "cher". This properties file lives in
rsrc/config/cocktail/cher/server.properties and is loaded from the jar
file in which the Cher server code is provided.
The Presents server binds a properties file into the configuration name
space under the key "presents". This properties file lives in
rsrc/config/presents/server.properties and is loaded from the jar file in
which the Presents server code is provided.
Values specified in this properties file can be overridden by a mechanism
that will be provided by the configuration utilities used by the
server. This is accomplished by placing a properties file earlier in the
classpath than the one supplied with the cher code. The values in that
classpath than the one supplied with the Presents code. The values in that
earlier properties file will override the ones in the standard file.
Values not supplied in the override file will be retrieved from the
standard file.
@@ -138,9 +138,9 @@ Derived server classes should place their server properties into the
classpath with a path along the lines of
rsrc/config/<ident>/server.properties and should bind it into the config
namespace with their own identifier. If they desire to override values in
the Cher server configuration, they should provide a
rsrc/config/cocktail/cher/server.properties in their jar file ensure that
their jar file occurs earlier in the classpath than the Cher server jar
the Presents server configuration, they should provide a
rsrc/config/presents/server.properties in their jar file ensure that their
jar file occurs earlier in the classpath than the Presents server jar
file.
* A note on thread-safety
+1 -1
View File
@@ -1,4 +1,4 @@
Cher Notes -*- outline -*-
Presents Notes -*- outline -*-
* TODO
Pass cause back to client somehow via FailureResponse in Client.requestFailed
+6 -6
View File
@@ -1,12 +1,12 @@
Whirled Design -*- mode: outline -*-
* Overview
Whirled builds on top of the Cocktail platform and provides a framework
for building a virtual world made up of a node network of individual
scenes. In the abstract, scenes contain only exits to other scenes and the
world is one big directed graph. This is not unlike the structure of MUDs
where one classically thinks of rooms and exits. We've chosen the term
scene to avoid implying that we're indoors.
Whirled builds on top of the Presents and Crowd packages and provides a
framework for building a virtual world made up of a node network of
individual scenes. In the abstract, scenes contain only exits to other
scenes and the world is one big directed graph. This is not unlike the
structure of MUDs where one classically thinks of rooms and exits. We've
chosen the term scene to avoid implying that we're indoors.
Whirled provides a means by which clients can move from scene to scene,
and to different locations within the scene (though restricting clients to