Games/Object version 0.11

IMPORTANT NOTE TO USERS OF VERSIONS 0.05 AND PREVIOUS

The latest version of the module makes some major redesigns to the APIs and internal structure. Your code will have to change with 0.10. The redesign was extensive enough that I could not preserve backward compatibility. These changes are based on concrete feedback from other users either attempting to use the module or expressing an interest in it.

The new design should be more stable than the previous and should not undergo any further paradigm shifts. The module it still alpha, but hopefully will progress to beta by version 0.20.

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

Modifications of attributes can be made to:

Flags

Arbitrary, used-defined flags can be placed on objects. These flags can be made such that 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. You can even set up customized code to execute each time an object loads/saves to read/write additional data.

Events

The user can define arbitrary code to execute when modifications are made to objects or their attributes. Some examples of these are mentioned above. Events on attributes share the same inheritance as attribute values, which means you can define a common event trigger on a master object and have lots of other objects inherit from it and use the event as if it were defined on the individual objects.

Object Management

As part of the redesign with version 0.10, management of the overall list of objects is now implemented by a separate manager module, allowing you to maintain many independent groups of objects. This also makes it far easier for the user to extend the object management functionality, merely by subclassing the manager class.

CHANGES FROM LAST VERSION

This is a patch release only to fix critical bugs in 0.10. 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.

You will also need IO::String 1.02 or better (older versions will NOT work), available from CPAN.

BUG REPORTS

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

COPYRIGHT AND LICENCE

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

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