Eris

Introduction

Eris is designed to simplify client development (and promote code reuse) by providing a common system to deal with the back-end Atlas tasks. Notably, Eris encapsulates most of the work in getting Atlas entities available on your client, logging into a server, and managing updates from the server. Once the entities are made available locally, Eris also manages updating them as required. Thus it can be considered as a session layer above Atlas, providing persistent (for an entire gaming session) objects as opposed to transient Atlas ones. It handles the client-side implementation of the meta-server protocol, and querying game servers; out-of-game (OOG) operations (via the Lobby and Rooms), and most important in-game (IG) operations such as entity creation, movement and updates.

Download

Eris is currently in development pending the next stable release (1.4.0) - as a result the API may change between minor versions of the code. The current development release is 1.3.21.
Source Code tar.gz
Source Code tar.bz2
Older Development Releases

Dependencies

Eris depends on the following WorldForge libraries, which should be built in the order given:

Atlas-C++
skstream
WFMath
Mercator

Eris also requires the following other libraries:

libsigc++

News

Eris 1.3.11 Released - 26/6/2006

Eris 1.3.11 is now out. This release adds support for tasks, including prediction of task progress on the client. The support for logging out of accounts has been overhauled, and the ability to cleanly deactivate a character was added. As a result, a complete sequence of login, character activation, deactivation and logout now works reliably in clients. In additions to these items, many smaller improvements and bug fixed have been made, in particular related to handling of Atlas exceptions.

Eris 1.3.10 Released - 4/1/2006

Eris 1.3.10 is now out. Major changes are fixes for bugs encountered during the release of Sear 0.6.0, improvements in how Eris complies with the Atlas spec, and the addition of various smaller features. Notably, calendar data on the world can now be retrieved and decoded by the Calendar object, to allow a client to present date and time to the user. A weak-pointer to instances of Eris::Entity was added, which clients can use to simplify tracking an Entity in their code. Finally, the test harness was improved, and many more test cases added.

Eris 1.3.9 Released - 25/10/2005

Eris 1.3.9 is now out, support for limiting the rate at which data is requested from the server based on the connection speed. This fixes many problems connecting to servers on slow or assymmetric links. Support for processing arbitrary data on Move operations was added, and the type-handling system simplified considerably.

Eris 1.3.8 Released - 09/10/2005

Eris 1.3.8 has been released, with various bugs fixed, and updates to remain compatible with the latest Atlas development series. Al Riddoch has also improved the Atlas usage, removing some inconsistency in the types of operation that are sent. The API for managing Avatars has been extended, and their lifetime made more explicit.

Eris 1.3.7 Released - 28/06/2005

Eris 1.3.7 has been released, with many bugs discovered at LinuxTag 2005 fixed. This release also includes updates to the unit-test harness, which now uses Unix pipes instead of socket-pairs for out-of-band control.

Hagen has further improved the output of the metaQuery tool, to display server uptime in a human-meaningful way, and this version should be visible here soon.

Eris 1.3.6 Released - 12/06/2005

Eris 1.3.6 has been released, with fixes for many bugs and API issues relating to error handling, setting entity attributes, and processing the world time from the server. Various minor improvements to the meta-server code have taken place, including revised HTML / XML output from the metaquery tool, thanks to Hagen.

The new and improved metaquery output is visible on the 'Active Servers' section of the site.

Eris 1.3.5 Released - 08/05/2005

Eris 1.3.5 has been released, with support for accelerations on entities, to enable accurate motion prediction of balistic movement. Many bugs identified by client authors were fixed, as well as issues identified by Valgrind. Additionally, the test suite was extended to cover more of the API.

Eris 1.3.4 Released - 18/4/2005

The next development version was released today; In this release, various API improvements have taken place - the current server can be queried for it's information easily, the lifetime of Eris::Connection has been made explicit, and other minor changes made.

Internally, some of the complex router logic has been replaced with a new Responder system which handles most operations that naturally fit a request / response idiom. The test cases have been extended, and should now work reliably on all platforms, and many bugs have been fixed.

Eris 1.3.3 Released - 27/1/2005

Eris 1.3.3 has been released, to coincide with the release of Ember. Minor API changes have taken place since the previous release, related to how Eris::Connection reports time-outs (they are now handled by the existing Failure signal). Various crashes related to time-outs and the meta-server query code have been resolved, and some issues related to Eris::Poll and inheritance of SigC++ types have been fixed.

Eris 1.2.2 Released - 12/1/2005

Eris 1.2.2 has been released. This is a bug fix release, which resolves some introduced by supporting libSigC++ 2.0, and some packaging updates by Al Riddoch.

Eris 1.3.2 Released - 8/1/2005

This is second unstable release of the current development work that will become Eris 1.4. A large number of bugs have been fixed since the previous release, in all areas of the code. The API has evolved slightly, so that more failures can be reported to the client application (for example, failure to create a character).

More methods have been made virtual, at the suggestion of client-developers, and the arguments to many signals had been reduced and simplified, since there was a great deal of redundancy previously.

While the API is settling down, it is still likely to change before the stable release, and should not be considered frozen. However, any changes should be incremental and localised.

Eris 1.2.1 Released - 9/11/2004

Eris 1.2.1 has been uploaded to the FTP sites - the only significant change in this release is support for libSigC 2.0 (in addition to libSigC 1.2), which permits clients to use other libraries that might require the newever version of libSigC. The choice of SigC version is made when running ./configure, and all libraries linked into an application must use the same SigC version.

Unstable Preview of Eris 1.4 Released - 19/10/2004

To aid client developers in migrating to the new Eris 1.4 API, I've uploaded a preview release, labelled as version 1.3.1, to the FTP site. This is a 90% complete preview of the final API, but with some known issues. All feedback on this release is welcomed, especially API changes or enhancements, since these cannot be made once a stable release takes place. Bug reports and patches are also appreciated.

Changes in this release include some renaming of classes to better match their roles and function, a redesign of the internal routing code to be many times more efficent, an overhaul of the Connection code to correctly handle disconnects and reconnects, and improved metaserver logic. For more detailed information, see the CHANGES-1.4 file in the source package.

LinuxTag Release - 19/05/2004

In anticipation of demoing software at LinuxTag (at the end of June), we've been working to ensure clients and the libraries they need are easily downloadable, so Eris has recieved some fine tuning and API tweaks. The most notable change is that World now emits a GotTime signal which can be used to drive time-of-day updates in clients. The metaserver API has been made compatible with the development branch of Eris (and also more efficent), and a nasty bug in the Poll code has been fixed. Various minor configuration issues have been resolved too.

Future Eris Development

In addition to the release mentioned above, a huge amount of work has been done on the next major version of Eris, which has been overhauled to use the Atlas-C++ 0.6 API, and to be far more efficent internally, with a cleaner, simpler structure, less reliance on templates and far less copying of data. The ownership semantics have also been changed, to handle different scenarios, such as multiple Avatars, multiple Connections and multiple worlds better. Expect further development on Eris once LinuxTag is out the way.

New release! - 5/02/2004

A new unstable version of Eris has been released, with a couple of big changes, and some minor bug fixes. Perhaps most importantly, the most current release of Atlas-C++ transitional is required, paving the way for migration to Atlas-C++ 0.6 in the near future. Ron Steinke has done lots of work on the Avatar class exposing commonly used operations with simple methods, and has also updated the coordinate space handling logic of Entities. If that wasn't enough, he also migrated the time-handling classes to use those in WFMath. As a result of this work, the most recent release of WFMath is also required. Eris' include files have been cleaned up and simplifed by Al Riddoch,

Various annoying bugs have been fixed, most notably a bug where a player's characters were listed multiple times. Other bugs fixed relate to MingW32 portability.