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 |
---|---|---|
_playerAccount | player_account | root node |
_playerCharacter | Character_Class | root node |
_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 |
_CommonCharacter | n/a |
Inherited parent class by both _PlayerCharacter and _NonPlayerCharacter |
Contents |
_playerAccount
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)
_playerCharacter
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
- etc
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)
_characterAppearance
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 base_hard_association
.
(Historical note: The _characterAppearance class used to be called Visible_Character)