Structure of an Account
In HeroEngine, an account's structure involves three main types of nodes: The _playerAccount node, to which is associated one or more _playerCharacter nodes, to each of which is associated one or more _characterAppearance nodes. These nodes changed names in Version 1.21 (October 2008), as shown in the following table:
|Current Name||old name (pre version 1.21)||Notes|
|_characterAppearance||Visible_Character||regular node, associated to either _PlayerCharacter or _NonPlayerCharacter, as appropriate|
|_nonPlayerCharacter||NPC_class||regular node, associated to _npcAnchor|
|_npcAnchor||_npcRoot||primary node to which all NPCs in an area are associated. This is a regular node, associated to AreaRoot|
|Inherited parent class by both _PlayerCharacter and _NonPlayerCharacter|
The _PlayerAccount node represents a customer's account. It is to this node that all of the players characters are associated via the
AccountCharacterAssociation and root node ownership.
During login, the _PlayerAccount node is attached to the _PlayerConnection node representing the client connection so that the account node travels with the connection as the connection is redirected between server processes.
The _PlayerAccount node holds all account-wide information that is accessible in-game; including such information as the account_name and the name of the last _PlayerCharacter node played. Conceptually, objects held in common between characters could be hard associate to the account node so that all characters could access them.
(Historical note: The _playerAccount class used to be called player_account)
The _PlayerCharacter node represents all of the game data that is specific to a particular character that a user might play and generally includes one or more _CharacterAppearance nodes associated to it via a hard association. Other types of data that conceptually belong to the character include:
- Character name
- Quest objects
- Effects (bleeding, stun, etc)
- Inventory objects
A user's _PlayerAccount may have any number (subject to whatever arbitrary limits your design imposes) of _PlayerCharacter nodes associated to it via the
AccountCharacterAssociation and root node ownership. During character selection ($CHARACTERSELECTIONSYSTEM), the user selects one (default mechanics) or more characters as "active" and it (they) are asynchronously loaded and attached to the _PlayerConnection node so they move with the connection as it is redirected between server processes.
(Historical note: The _playerCharacter class used to be called Character_Class)
The _CharacterAppearance node contains all of the information required to visualize the character's physical representation on the screen, including textures and geometry that make up an "outfit". Each _PlayerCharacter node may have
0...n _characterAppearance nodes of which only one is active at any given time.
_CharacterAppearance nodes are associated to their _PlayerCharacter node via a
(Historical note: The _characterAppearance class used to be called Visible_Character)