Area Node Structure
Each area defined in the Server GOM has a root node, known as an Area Root Node. This node is loaded when the Area Server process starts up. All other nodes linked to the area root node by hard associations are also considered to be part of the area, and are loaded when the root node is loaded. This collection of nodes is called a node hierarchy. This page goes over the typical structure of various area nodes.
Area Root Node
The root node of the area is always constructed from the class AreaRoot. When a new area is created by the World Server, this node will be created for the area. HeroEngine defines this class to have the following fields:
|AreaID||ID||Set on area construction. Not guarded against modification, so might not be correct. Use external function GetAreaNumber() instead.|
|AreaInstanceNumber||ID||Set on area start. Not guarded against modification, so might not be correct. Use external function GetInstanceNumber() instead.|
|AreaName||string||Set on area load. Not guarded against modification. External function GetAreaName() will return the correct value.|
|areaEditsLocked||Boolean||Used by the edit script to determine if the area is locked to prevent edits.|
|areaEditExceptionList||lookuplist indexed by id of string||Used by the edit script to determine if an exception exists allowing certain people to edit a locked area.|
|subscript||ScriptRef||Inherited from the Scripted class. Unknown usage.|
|Script||ScriptRef||Inherited from the Scripted class. Unknown usage.|
Additional fields may be added during game implementation -- as long as the added fields are in the game specific distribution package, they will not be removed during the application of a HeroEngine Publish Package.
The Area Node is a child of the Area Root, connected by a base hard association. This node represents the root of the geometry defined by the area. When the World Server creates an area, it will create this node as well. The fields on this node correspond to the properties of the area as defined by the client.
|FQN||string||Inherited from FileRootNode. Set to the Fully Qualified Name of the area's DAT file on area construction. Protected against change by script code.|
|version||integer||Inherited from FileRootNode. Usage deprecated.|
|SkyDome||ID||Refers to the asset that is being used as the skydome for the area.|
|AreaBlur||integer||Controls the intensity of the blooming effect in the area.|
|SkyBlur||integer||Controls the intensity of the blooming effect of the sky.|
|SkyRotation||integer||Rotation of the skydome in degrees.|
|WindStrength||integer||Controls the intensity of the wind effect of the area.|
|Gusts||integer||Controls the variation of the wind effect.|
|CompositingStartDistance||float||Character style 1.0 controls.|
|DiscardCharacterTexturesDistance||float||Character style 1.0 controls.|
|BloomStrength||float||(default value: 2.0) This is the "glow" multiplier|
|MaxContrast||float||(default value: 0.5) Used in the dynamic gamma system|
|AreaSchemes||lookuplist indexed by string of string||List of the environmental schemes defined by the area.|
|DynamicDetailsAssetList||list of string||List of objects used as heightmap dynamic details in the area.|
|TerrainTextures||list of string||Textures used by heightmapped terrain.|
|EnvironmentalTextures||list of string||Not currently used.|
|DYDTextures||list of string||Textures for dynamic details on heightmaps.|
|dydchanparams||list of string||Parameters controlling the display of the dynamic details on heightmaps.|
Area Asset Nodes
The objects that the area is built out of are called assets in HeroEngine. Each area has a list of assets that are used in that area. To represent these assets in the server GOM, a node of class AreaAsset is created for each asset defined in the area. These nodes are all associated as children of the Area Node, connected with the base hard association. For easier querying, they are also associated with the association AreaAssetAssociation.
|AreaAssetFQN||string||FQN for the asset. Protected against change by script.|
|CreatedBy||ID||Set to the account id of the editor who made the asset. Used for the creation notification to the editing client.|
The instances of the assets that make up an area are subdivided into two or more rooms. The purpose of rooms is to provide high level visibility control. During rendering, each room is determined to be visible or not. If the room is not visible, all of the instances in that room are not rendered. Rooms have visibility links to other rooms, which define which other rooms are visible when the client is rendering from the perspective of that room. These visibility links are represented as associations of type RoomVisibleAssociation in the server GOM. The nodes that represent the rooms are of class RoomNode, and they are targets of associations from the Area Node of type base hard association and AreaRoomAssociation.
|FQN||string||Inherited from FileRootNode. Set to the FQN of the room's DAT file on room construction. Changeable by the edit script.|
|version||integer||Inherited from FileRootNode. Usage deprecated.|
|EnviroScheme||string||Selects one of the environment schemes defined by the area.|
|OutdoorsVisible||boolean||Controls the rendering of the skydome while rendering from the room.|
|DisablePlantEmitters||boolean||Controls the deprecated planting functionality.|
|Maps||string||See Minimap for more details.|
|BBCorner1||vector3||Supposedly a bounding box corner of the room. Not currently set by the editing client except by a special command.|
|BBCorner2||vector3||The other bounding box corner of the room.|
|AddVisibleRoom||string||Used by the edit script to communicate room visibility changes.|
|RemoveVisibleRoom||string||Used by the edit script to communicate room visibility changes.|
The instantiation of an asset at a particular place in the area is called an instance. The server represents each instance as a node of a class specific to that instance type. All instance classes derive from a class called Instance, which defines properties all instances have in common. Each instance node is associated to a parent room by a base hard association. Also, there is an association with the instance as the source and the asset the instance is instantiated from as the target. This association type is AssetReferenceAss.
HeroEngine allows editors to define paths, known as Waypoint Paths as part of an area. A path is made up of an ordered list of points known as Waypoints. The Waypoint Paths page describes how to create paths with the HeroBlade editing tool. Each path is represented by a node of class PathNode. The Area Node is the source of a base hard association and an association of type AreaPathAssociation for each path node. The points in the path are all nodes instantiated from the class PathPointNode with base hard associations from their PathNode. A field in the path node describes the ordering of the points.
|PathName||string||Name of the path.|
|PathPoints||list of noderef of class PathPointNode||The ordered list of all the points that make up the path.|
|PathColor||string||A representation of the color of the path. String is used because colors can sometimes be complex parameters.|
See also: Waypoint paths
|PathPointLocation||vector3||Location of the path point in the area's space.|
|PathPointData||string||Arbitrary string data for the path point.|
This picture shows an example area node hierarchy, with all the associations labeled.
This page is not a comprehensive list of all area nodes. Many game-specific systems and many normal HeroEngine systems will also generate nodes and place them in the area's hierarchy. Usually, these nodes are associated with the Area Root node to distinguish them from the nodes specific to the area geometry, which is all associated to the Area Node, instead of the Area Root node.