Indri FAQ Tasks & Progress roadmap Architecture Rule Writers Guide


A problem we've continually faced has been the lack of simple, easily modifable game and rule code, which new developers can pick up quickly, experiment with, and produce some new entity or behaviour in our worlds in a few hours or an evening. In theory, Cyphesis-C++'s use of Python makes extending the world this way fairly easy, but in practice no one besides Al or Aloril have ever done it. In developing STAGE, a sucession of people have asked about writing rules, and have generally found the fuzzy, incomplete and in places highly complex C++ API to be essentially unusable.

The solution has been to design a server where scriptability, and indeed the scripting language itself, have been integrated in the design from the outset and into the code at the lowest level. The primary goal for indri has been making the API exposed to rule and world authors simple, obvious and powerful, without sacrificing too much in areas of performance or flexibility. It's not yet clear how well indri achives these goals, but it's certainly heading the right way.

Design Overview

Most of the indri design is closely related to proposed or implemented work on STAGE, but usually simplified or clarified with the benefit of hind-sight. The focus has been on getting Atlas data into script and out again as efficently as possible.

Getting Involved

If you're a world developer, who doesn't mind (or enjoys) being on the bleeding edge, feel free to get indri from CVS, and try it. Right now, you can write rules and define entities, and if you connect with a client such as apogee or equator, you should see the bounding boxes of various entities. Of course, feedback or bug-reports about any problems building indri on different platforms and operating systems is appreciated.

If you're a coder, then the best thing is to start the same way, then jump onto IRC (find us in #indri) or the 'server' mailing list, and see what needs doing; there's usually a couple of smaller side projects that can be worked on.