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:
@@ -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,4 +1,4 @@
|
||||
Party Notes -*- outline -*-
|
||||
Crowd Notes -*- outline -*-
|
||||
|
||||
* TODO
|
||||
Wire up PlaceRegistry code to remove registrations when place objects are
|
||||
|
||||
+50
-24
@@ -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,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
@@ -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,4 +1,4 @@
|
||||
Cher Notes -*- outline -*-
|
||||
Presents Notes -*- outline -*-
|
||||
|
||||
* TODO
|
||||
Pass cause back to client somehow via FailureResponse in Client.requestFailed
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user