The Narya library
=================

Narya provides a framework for building realtime distributed systems with an
emphasis on multiplayer online games (massive or otherwise). Its various
packages include:

* [presents]: A distributed object and remote procedure call framework for
  creating realtime distributed systems.
* [crowd]: A foundation for a multiplayer environment with notions of bodies
  and places, and support for chat and moving between places.
* admin: Useful administrative functionality including a mechanism for
  declaring configuration that can be viewed and modified at runtime by an
  administrative client.
* bureau: A framework for managing a network of code execution servers, which
  can be used to host ActionScript server-side code in addition to the Java
  server normally used by presents.

[Javadoc documentation](http://threerings.github.com/narya/apidocs/) is
provided.

Tutorials, etc.
---------------

Three Rings hosts a site called [Game Gardens](http://www.gamegardens.com/)
where the Narya library is used to develop a wide array of multi-player online
games. On that site you can find [tutorials and sample
code](http://wiki.gamegardens.com/) relating to the use of Narya in game
development.

Building
--------

The library is built using [Ant](http://ant.apache.org/).

Invoke ant with any of the following targets:

    all: builds the distribution files and javadoc documentation
    compile: builds only the class files (dist/classes)
    javadoc: builds only the javadoc documentation (dist/docs)
    dist: builds the distribution jar files (dist/*.jar)

If you wish to build the ActionScript components, you will need to supply the
location of the Flex SDK on the command line:

    % ant -Dflexsdk.dir=SOMEPATH dist

Artifacts
---------

Narya provides four different build artifacts, for differing purposes:

* narya: contains the main Java library; exports dependencies only for
  libraries which are required by a running client or server.
* naryalib: contains the main ActionScript library; exports dependencies for
  libraries needed when building a SWF using naryalib.
* narya-tools: contains the code generation portions of Narya which one need
  integrate into their build; exports dependencies for various libraries needed
  when running code generation.
* narya-gwt: contains `.java` source code for applications using the
  [GWT](http://code.google.com/webtoolkit/)-based admin interface provided by
  Narya's admin package

A Maven repository containing released versions of the Narya artifacts are
maintained here. To add a Narya dependency to a Maven project, add the
following to your `pom.xml`:

    <repositories>
      <repository>
        <id>narya-repo</id>
        <url>http://threerings.github.com/narya/maven</url>
      </repository>
    </repositories>
    <dependencies>
      <dependency>
        <groupId>com.threerings</groupId>
        <artifactId>narya</artifactId>
        <version>1.8</version>
      </dependency>
    </dependencies>

To add it to an Ivy, SBT, or other Maven repository using project, simply
remove the vast majority of the boilerplate above.

If you prefer to download pre-built binaries, those can be had here:

* [narya-1.8.jar](http://threerings.github.com/narya/maven/com/threerings/narya/1.8/narya-1.8.jar)
* [naryalib-1.8.jar](http://threerings.github.com/narya/maven/com/threerings/naryalib/1.8/naryalib-1.8.swc)
* [narya-tools-1.8.jar](http://threerings.github.com/narya/maven/com/threerings/narya-tools/1.8/narya-tools-1.8.jar)
* [narya-gwt-1.8.jar](http://threerings.github.com/narya/maven/com/threerings/narya-gwt/1.8/narya-gwt-1.8.jar)

Related Libraries
-----------------

Narya is extended by the [Nenya](http://github.com/threerings/nenya) and
[Vilya](http://github.com/threerings/vilya) libraries which provide additional
game related functionality like 2D and 3D graphics support, animated character
rendering and a more sophisticated virtual world framework.

Distribution
------------

Narya is released under the LGPL. The most recent version of the library is
available at http://github.com/threerings/narya.

Contact
-------

Questions, comments, and other worldly endeavors can be handled via the [Three
Rings Libraries](http://groups.google.com/group/ooo-libs) Google Group.

Narya is actively developed by the scurvy dogs at
[Three Rings](http://www.threerings.net) Contributions are welcome.

[presents]: http://threerings.github.com/narya/apidocs/com/threerings/presents/package-summary.html
[crowd]: http://threerings.github.com/narya/apidocs/com/threerings/crowd/package-summary.html
