Files
libremetaverse/Programs/Simian
2009-03-17 23:04:31 +00:00
..
2009-03-12 23:02:42 +00:00
2009-03-17 22:33:22 +00:00
2009-03-17 22:33:22 +00:00
2009-03-17 22:33:22 +00:00
2009-03-17 22:33:22 +00:00
2009-03-02 23:00:28 +00:00
2009-03-02 23:00:28 +00:00
2009-03-17 22:33:22 +00:00
2009-03-02 23:00:28 +00:00
2009-03-17 01:26:59 +00:00
2009-03-12 23:02:42 +00:00

Introduction
------------

Simian is a lightweight simulator built on the libOpenMetaverse framework. Its
primary uses are protocol translation and new protocol testing, rapid 
prototyping of new designs, a lightweight benchmarking suite, and unit testing 
of client applications.

The design of Simian is centered around the one client-facing protocol it 
supports. Where OpenSim defines a generic framework to support many backend 
simulation systems and many frontend clients, Simian works with the concepts 
that the Second Life viewer understands. Avatars, prims, and terrain become the 
basic entities of the metaverse. Concepts of space are converted into 256x256 
meter squares of terrain. Chat and instant messaging are translated into the 
mechanisms used in Second Life. This allows new protocols and behaviors to be 
added without having to modify the Second Life viewer directly, or work with the
complex (many-to-many) problem of translating concepts between all virtual 
worlds.

Extensions
------------

Extensions can be written in one of three ways.

1) Add a class that inherits from IExtension directly in the Simian project.
   Typically this is done by adding a new .cs file in the extensions folder.

2) Create a new assembly containing one or more extensions. The assembly must
   follow the naming convention of Simian.*.dll.

3) Put a source code file alongside the running Simian.exe binary that will be
   compiled at runtime. The code must follow the naming convention Simian.*.cs.
   Look at Simian.ViewerEffectPrinter.cs.example for an example. Remove the
   .example extension and put the file alongside the Simian.exe binary to see it
   working.

*NOTE*: Extensions will only be loaded if they are listed in the Simian.ini file
in the [Extensions] section. You can comment out extensions, but if an extension
implements an interface and there is no other loaded extension that implements
that interface the Simian server will stop with an error message.

All extensions must inherit from IExtension and have a Start method that
takes a Simian object as the only parameter, along with an empty Stop method. 
See the http://code.google.com/p/extensionloader/ project for more details on 
writing extensions.