Games/Object version 0.05
=========================

IMPORTANT NOTE TO USERS OF VERSIONS BEFORE 0.04

This module now requires Perl 5.6.0. I thought initially that I would have
an environment in which to test it in 5.005, but this will not be the case, and
I do not wish to install it on my home machine. In addition, the upcoming
release of Games::TileMap (really, it WILL be released -- I almost have enough
tuits collected), which is dependent on this module, will require 5.6.0 for
other reasons, and I wanted to make everything consistent.

Anyway, 5.6.0 has been out there for a long time. It's time to let go of
the past :)

INTRODUCTION

This module is intended to serve as a base class for game objects. It is
designed to take much of the burden from the game programmer by providing the
mechanics for storing and manipulating game data objects.

The functionality of this module can be divided into the following sections:

  Attributes

    This are arbitrary, named data items on an object. Rules for modification
    of attribute values, including automated update and persistent modifiers,
    can be set up with ease. For example, you could set up an attribute such
    that:

    - It stores its value as a decimal, but polling the attribute always rounds
      to the nearest integer.

    - It is confined to the range of 0 to 100, and attempts to modify it outside
      that range are truncated to the minimum or maximum automatically.

    - It automatically tends towards the maximum of 100 by 1 each time the
      object is processed.

    - A user-defined chunk of code is called if the value falls to 0.

    Modifications of attributes can be made to:

    - Persist such that they can be cancelled later and revert the attribute
      value back to what it was before the modifier was applied.

    - Persist but automatically time out after a given amount of time.

    - Persist but have its initial effect be delayed a certain amount of time.

    - Invoke used-defined chunks of code when changes to attributes applied.

  Flags

    Arbitrary, used-defined flags can be placed on objects. These flags can
    be made such that:

    - They are automatically set on objects when created.

    - User-defined code is invoked when a flag changes value.

  Load/Save

    Object data can be saved to an arbitrary file and then read back in later
    to produce an exact copy of the object. This essentially provides the bulk
    of save/load game functionality.

  Events

    The user can define arbitrary code to execute when modifications are
    made to object. Events are hierarchical, in that you can have events
    that trigger only on a specific modification, en entire class of
    modifications, or all modifications.


CHANGES FROM LAST VERSION

See the Changes file for details.


INSTALLATION

This is packaged as a standard CPAN module, thus you ought to be able to
install the module with the following steps:

   perl Makefile.PL
   make
   make test
   make install

This module is pure Perl code, thus there is no C code to be compiled.


DEPENDENCIES

Perl 5.6.0 or better is required. Perl 5.6.1 is recommended.

There are currently no dependencies on other modules other than standard
Perl core modules.


BUG REPORTS

This is an ALPHA release. Please send all bug reports to p.stewart@attbi.com.
Suggestions at future functionality are also welcome.


COPYRIGHT AND LICENCE

Copyright (C) 2002 Peter J. Stewart, all rights reserved.

This module is distributable and modifiable under the
GPL and the Artistic Licenses.
