(page not complete)
idEntity Class hierarchy
Much of the current Ground Zero architecture makes use of the existing Doom3 SDK. In the Doom3 SDK all game world objects (AI, lights, props...), with the exception of BSP, are idEntitys (or inherit from the class). In keeping with this layout most of the new entity types found in Ground Zero inherit from idEntity class. This hierarchy allows for easy interaction with other Doom3 world objects, in addition to easing creation of new types of objects. Because there is a hard coded limit to the number of entity's that may be present at one time in a map(and each entity puts strain on the CPU), there are two ground zero objects that do not inherit from idEntity in order to free up room for more entities; ground zero path nodes, and level of detail containers. Both of these classes typically have a large number of instances (over 1000) present in a map, and would significantly reduce the average frame rate were they idEntity's.
All idEntity's have an attached renderEntity, which handles all rendering of the entity's physical presence (whether it has one or not) on the screen. Should the need ever arise for Ground Zero to move to another engine, the simple interface to the render Engine (via the renderEntity) should make the transition to the new engine easier.
Persistent Character statistics and high level AI
For the time being all character stats are stored in a simple container class that hangs off of idEntity; though in the future all information regarding world characters will be moved to a separate structure. In addition to storing character stats, this structure will act in the capacity of the brain for all AI characters, and make use of the idEntity class as the body which will carry out all the tasks the brain generates. When an AI character is present in the player's current location, the character structure will be assigned an idEntity object with which to move about and interact with the world. When the character is anywhere else in the world he will move about via a GzMapActor class, this class will control movement and rendering on the world map.
All Persistent characters will keep track of the events that they have either witnessed or heard about. Events will describe in simple terms what took place in a given situation, infromation recorded will be the type of event (attacked, killed, entered...), the time and place, and the characters directly involved. Using events AI characters will develop a relationship with other characters (including the player); these relationships will determine further character interaction.
Game World
The Ground Zero world is essentially made up of locations, characters, organizations, and factions. Ideally a Game World class will handle updating the state of all these elements in a multi-threaded enviroment. The exact detail with which events will be simulated (IE, when the player is not present) is undecided, but is being designed to be quite detailed. Battles will make use of pathnodes to determine where in a map attacks are made, allowing the proper placement of dead bodies, and any enviromental damage.
Comments (0)
You don't have permission to comment on this page.