And no, increasing the spawn rate based on number of players in the vicinity does not count as dynamic in my book.
I've tried on numerous occasions to collate my notes into some sort of actual design-type document, but organization of it has always eluded me. So I decided to instead break things down into smaller components and try and put together some rough outlines.
For this first attempt we have Master Spawn Objects.
Master Spawn Objects are invisible objects that control a group of mobs. These not only tell the server when and where to spawn mobs, but they also help define a sort of group consciousness for the mobs in their group, giving the mobs reason and purpose beyond the basic concept of providing punching bags and loot pinatas for the players. This object is not designed to dictate every movement of the mobs within its area of control, but rather to provide a guiding force and also to maintain historical data that will be used to create a dynamic and flexible spawning system.
- Provide an over-arching framework with which to control a group of mobs.
- Serve as a way for mobs within this group to 'talk' to each other
- Can spawn new mobs
- Can add additional AI routines to individual mobs within its group
- Can move the entire group (either as an attack on another settlement or as a means of self-preservation by moving away from areas where they're being 'farmed')
- Keeps historical data on events that have happened with its group
- Can alter its behavior based on the historical data
- Can create and destroy temporary structures that are associated with its group
- Can keep track of group-owned objects and storage, using that information to alter group actions and desires as well as providing appropriate spawns
There's a starting point off the top of my head. I hope in the future to clean it up and provide further details on what each part means. And, of course, this is only one part in a multi-faceted Dynamic Spawning AI system!
I would love to hear any comments or suggestions!