Objects may refer to 'resources' in the game, for things such as 'sprites' (graphics for display or animation), 'scripts' (php scripts that may be run at certain times), and 'nodes' (which refer to Drupal nodes, for use as the designer deigns).
Modules may define a new resource, using a hook (something like hook_rpg_resource). Once available, objects may or may not be supplied a hook by that module, allowing such things as an object to have a default sprite assigned for display.
Resources may be edited outside of the object. The object will maintain a relationship to that resource, using a unique id, so if the resource changes, all objects referring to that resource will likewise be affected. An object may change the id of a resource in the normal course of game play, allowing an object to easily do things like change its sprite according to state.
As an example, you might have a resource 'sprite', and have two sprites as resource, one being an image of a threatening goblin, another an image of a dead goblin. An object is created of a goblin, with a .sprite pointer of the live goblin sprite resource. Later, it is killed, and the sprite will change accordingly.
For now, I'm going to create a resource for 'sprite'. This resource will be stored with a unique id, and a filename (in the files directory). Objects will be given a 'sprite' property. When displaying an object, if there is a valid resource id in the property, then the filename pointed to will be displayed.
I could just use nodes for all of this (or even for objects, for that matter). That might be a better route in general, as we'd have all the power already existing in nodes for this sort of thing. Any thoughts? This would be a good time to switch direction (again) if we decided. Particularly since cck is being increasingly integrated into Drupal.
(Cross-posted at Drupal RPG.