cospace user guide
When the cospace client starts, you'll be prompted for a name/password. Pressing "go" with a valid name/pass will start the session. pressing "save" will store the name/password in the cospace.dat file in the same directory. Password authentication is turned off in this version -- any non-null password will work
The cospace client normally runs as a companion applications alongside a web browser (netscape or IE). The synchronization of client and web browser is controlled by the link/unlink control in the button panel at the lower right of the interface. When linked, the synchronization of cospace and the web browser is bilateral -- navigation with the web browser to a new site will cause the cospace browser to follow to the room corresponding to that site. Likewise navigation with the cospace client to a new room will cause the web browser to follow (if that room is associated with a website). Cospace automatically creates private portals between rooms as one moves from one site to another.
Cospace distinguishes two types of portals, private and shared. Private portals, which have a plain stonelike texture, are visible only to an individual user (so the portals created automatically during navigation will not reveal to other users what site you came from). Shared portals, which have a checkered texture, are visible to everyone within the spaces they connect. Buth types of portals are dynamic and may come and go freely.
The text interface at the bottom of the client window is used for user communication and informational messages. Text typed into the field at the bottom of the cospace client is interpreted as `speech' or commands. The default scope of communication is the current room, so an utterance would be seen by anyone else in that space.
The state of the Cospace world is represented and saved in an object database, so portals, objects, and room state persists from one session to the next (e.g. portals created during a cospace session will be there the next time you connect to cospace).
the cospace.dat config file
there are a few cospace parameters that are stored in a file
named cospace.dat, in the same directory as the cospace executable.
most parameters can be left alone, but there are a few worth knowing
about. Typical cospace.dat file looks like this:
#cospace properties
#Tue Dec 07 12:19:14 EST 1999
host=cospace.research.att.com
update=prompt
base=http://cospace.research.att.com/xclient/
browser=ie
port=10447
muport=10446
name=dogmeat
pass=foo
The browser entry specifies which web browser cospace should
try to synchronize with; it should be set to either ie or netscape.
The update entry specifies when the client should fetch code
updates; permissible values are auto, prompt, and no.
Name and pass, if they exist, are used to initialize the
login fields when cospace starts up.
command language
the cospace command language is a textual line-oriented interface
to the cospace database. MOO users may observe some similarity
to the interfaces they're familiar with, though no attempt has
been made to emulate that interface (cospace is not a moo).
commands for interacting with the cospace database are of the form "action arg1 arg2....argN". Commands are typed into the text typein field of the cospace client. The syntax to distinguish an action command from an normal line of text is to begin the line with a "/". e.g. "/drop box" or "/look".
Every object has an integer indentifier; direct object references by identifer are specified as "@id", e.g. "@23" refers to the database object whose identifier is 23.
A command string is interpreted as follows:
1. arguments are tokenized, using whitespace as token separators;
string arguments that contain whitespace should be surrounded by
doublequotes to treated as single tokens
2. an execution context for the command is created; this context
includes the actor executing the command and the current
location (e.g. room) in which the string is being interpreted
3. an argument resolution pass attempts to resolve names of objects into
the actual objects. the default resolution algorithm (subject to change)
first replaces matches for the special tokens {me, myself, here} and
for direct object references (e.g. @23) ; then tries to find named
objects among the objects that the current actor is holding; then it
looks among the objects in the current location; then it looks in the
user namespace; then it looks in the room namespace. (these last two
are very questionable and will probably go away). if no object is
found named by this token, then the token is returned as a literal
string. name resolution may be overridden by preceding an argument with
a singlequote.
4. the code for the action (a generic function) is retrieved and applied
to the cooked argument list
5. output and/or errors resulting from execution of the action appears in
the text window
Following is a partial list of actions in the current cospace vocabulary. optional arguments are indicated with surrounding brackets.
/say string
broadcast string to other objects in current location/container note that a normal line typed to the cospace client (i.e. not beginning with "/") is implicitly turned into /say "the text that was typed...."/page user string
page user with string, wherever they are --seen only by sender and receiver/whisper user string
whisper to user with string -- seen only by sender and receiver/emote string
describe self taking some action in 3rd person/home
teleport self to home location/sethome [place]
set (self's) home location to place (default current location)/goto room
teleport self to room/portal room1 [room2]
create a private portal from room1 to current room (or to room2 if provided)/shared-portal room1 [room2]
create a shared portal from room1 to current room (or to room2 if provided)/unportal room1 [room2]
remove a portal from room1 to current room (or to room2 if provided)/whereis user
print location of user/contents container
list contents of container (e.g. room, user)/look [something]
look at something's description; default (no args) is current room/flush-portals
get rid of all of your private portals
;; following actions are called implicitly by the system, generally not used explicitly
/touch thing
touch an object -- this verb is called when an object is clicked on/bump thing
bump an object -- this verb is called when colliding with an object
There are a more actions defined for manipulating the environment that are not listed here. These include actions for creating new objects (e.g. bringing new vrml objects into the environment), moving things around, removing objects, etc. Drop me a note if you'd like the extended list of actions (I'm not discouraging their use, just don't wanted the world to modified anonymously).
extending cospace
There are a couple of ways to extend cospace; integrating custom room
desigs into the cospace architecture, and defining new actions that
operate on objects in the database.
As with the extended actions described above, I don't want these
features to be used anonymously, but you're welcome to
drop me a note if you'd
like additional documentation and examples of extending cospace.
known problems and bugs
an (incomplete) list of
bothersome stuff that probably won't get fixed:
using the vrml browser viewpoint mechanism will generally confuse both the cospace client and you, so avoid it. if you find yourself lost in space, type "/home" in the text interface to get back to a reasonable place.
portals between rooms can occasionally fail to punch holes in the wall polygons -- if you get stuck for no apparent reason at the entrance to another room, this is probably what happened (won't see the wall in this case because the wall polygon backfaces aren't rendered). to fix this, navigate back to the room you came from and type "/reportal" in the text interface.
when the cospace client is synchronized with the web browser, ad banners and page redirects can confuse the cospace client. workaround is to select "unlink" from the button panel
room architecture is dreadfully monotonous. the functionality for making the spaces more variable exists, but has not been made available in this version...sorry