2006-11-03 v0.10 Tels - 143 tests
  * require Perl v5.8.1 (anything older is untested and unsupported!)
  * bundle and use Module::Install
  * update the distribution
  * rename reset_ID() to _reset_ID() to mark it as internal
  * add POD correctness and coverage tests
  * fix all POD errors and ommisions, fix spellings and some grammer

############################################################################## 
Older revision history:

2003-03-02 v0.01 Tels - 166 tests (first version)
 * added Game::3D::Point, w/ 3D center
 * added Game::3D::Area, Point plus 3D size and shape
 * added Game::3D::Thingy, id, name, state, active/inactive, has outputs
   and can receive/send signals
 * added Game::3D::Signal, export the signal names
 * added Game::3D::Link to link two thingies together (in more complicated
     ways than just connecting the output from thingy #1 to thingy #2),
     features count, initial delay, resend delay, one-shot, invert, fixed
     output signal etc
 * added Game::3D::Physical, isa Area and Thingy, plus mass
 * added Game::3D::Living, a living thing (like NPCs etc)
 * added Game::3D::Marker, isa Point and a Thingy
 * added Game::3D::Trigger, isa Area and a Thingy

2003-03-06 v0.02 Tels - 181 tests
 added:
  * basic tests for Trigger.pm
  * Area: has rotation()
 fixed:
  * Game::3D::Point::center() renamed to pos()

2003-03-08 v0.03 Tels - 180 tests
 added:
  * Thingy: load() and _construct(), load hirarchy and objects from text file
  * example text-adventure game in ./examples showing class-hirarchy and level
    loading code
  * forgot to include trigger tests
 Caveat: Some classes like Trigger, Living, Marker, Physical etc might be gone
         from the next version, since they can be replaced by text-definitions
         in the object hierarchy, completely!

2004-02-29 v0.05 Tels - 73 tests
  * removed anything except base classes: Thingy.pm, Link.pm and Signal.pm
  * Links are by default OR gates, but can be switched to AND gate type
  * Thingy: keep inputs
  * Thingy: on DESTROY, remove links to and from us, and ourself from
    parent Thingy 
  * Thingy: del_input(), del_output(), unlink()
  * Link: react to DIE, KILL, ACTIVATE, DEACTIVATE and don't relay them
  * Thingy: react to DIE and KILL signals
  * Thingy: don't relay ACTIVATE and DEACTIVATE signales

2004-03-02 v0.06 Tels - 83 tests (not released)
  * Sensor.pm: sense state change and trigger on them
  * Thingy: inputs(), outputs(): IDs if input/output objects
  * 3D.pm: wrote a lot of documentation to cover basics and details
  * added: World.pm: contains everything

2004-03-05 v0.07 Tels - 102 tests
  * added Template.pm
  * World.pm: update(), render(), register(), unregister(), thinkers()
  * Thingy.pm: as_string()

2004-03-20 v0.08 Tels - 111 tests
  * SIGNAL_xxx to SIG_xxx
  * removed SIG_KILL
  * added 15 states (STATE_0..STATE_15) and signals so that you can send these
    to objects to change their state
  * added 15 signales (SIG_NOW_0..SIG_NOW_15) so objects can announce when
    they finished changing their state
  * SIG_ON and SIG_OFF (and their aliases) switch between STATE_0 and STATE_1
  * World: cache time upon update, added method time()
  * added an update() routine to Thingy so that state transitions can happen

2004-03-21 v0.09 Tels - 129 tests
  * Thingy:
    + added get(), and fixed is() and make() for fields
    + also Link, Sensor: call kill(), not DESTROY()
    + kill() sends out SIG_KILLED
    + don't output empty arrays/hashes in as_string()
    + also Template: store states as key 'state_0', not under 'states->[0]'
    + only unregister with world if actually contained in a world
  * Templtate:
    + fixed bug in from_string(), can now read more than one template in a row
    + simplify as_string() output, from_string() reads back this format
    + honour field 'base' to set base class ('Thingy', 'Link' etc)
    + init_thing() has inheritance ('Foo::Bar' inherits defaults from 'Foo')
    + fixed bug in init_thing() regarding existing fields
    + init_thing() can deal with typeless defaults ("foo" vs STR="foo")
  * Signal:
    + added SIG_UNKNOWN
    + map signal names <=> signal numbers (signal_name(), signal_by_name()) 
  * World: 
    + load templates really from a file, added tests for that
    + find_template()
  * added some more doc for methods in World, Template etc
  
Please send me test-reports, your experiences with this and your ideas - I love
to hear about my work!

Tels <http://bloodgate.com/>