During the development of a product it is expected that the clean engine login process will be extended to provide game-specific functionality. If a problem in the game-specific HSL code for the login process prevents developers from logging in, HE Admin will enable a developer to successfully login using a specifically defined administrator account and fix the problem. HE Admin can do this because it uses a simpler login process that skips as much game-specific HSL code as possible.
What problem(s) does this solve?
- Allows specifically defined administrator accounts to bypass the game-specific login process to fix HSL errors in the login process.
What problem(s) does this not solve?
- Does not provide server or gameplay administration.
Which accounts are administrators?
A player account will be considered an administrator if the player account class is a
_playerAccountAdministrator or if the player connection is a
_playerConnectionAdministrator or if the account name is one of the account names recognized as an administrator account. When the clean engine login process starts, if the name of the account that's logging in is an administrator account name then the player account root node will be created as a
HE Admin versus Clean Engine Login process
In clean engine, if you login with a normal account you will be sent to the Character Selection Area where you can either select an existing character or create a new one. When you create a new character you are sent to Character Creation area and are prompted to name your new character. After your new character has been created you are sent to the Starting Area. If you login with an HE Admin account, as soon as you enter the Character Selection Area the normal Character Selection and Character Creation processes are bypassed and a custom HE Admin character creation process happens. In the HE Admin character creation process the character class is created from the prototype HE_CharacterPrototype and the character appearance node is created with the specification character_sample. As soon as the character has been successfully created it's name is set to "ADMIN" concatenated with the AccountID. For example if the AccountID is 12345 the character name would be "ADMIN12345". Every time an HE Admin account connects to the world a new account root node is created. This happens because when an HE Admin account disconnects from the world the account root node is destroyed. An HE Admin account's root node will always be destroyed when it's disconnected from the world and all hard associated persisted nodes in the Account Character Tree will be destroyed as well.
If you plan on doing any development that will interact with or extend from the clean engine login process it would be a good idea to determine how you will go about using HE Admin. The following examples aren't the only way to use the HE Admin system, but they are safe ways that don't involve changing clean engine HSL scripts.
Example 1: The HE-Admin account
In order to ensure that we can access a world to provide support, the most basic exercising of this system is the administrator account (he-admin) used by the HeroEngine team to provide support. By default in clean engine HE Admin code, this is the only account that will always be treated as an administrator.
Example 2: Overriding Admin checking functions
It is also possible to provide game-specific implementations of
_IsAdminAccountName() by implementing
HE_IsAdminAccountName() in a class glommed on to $ACCOUNT. The following will detail how to accomplish this:
- Define a server class using the DOM Editor or CLI that will be added as a part of $ACCOUNT.
- Glom the new class on to $ACCOUNT via the System Nodes Configuration GUI. See HeroEngine Control Panel for more information.
- Define a class methods script for the new class. See Create a Class Methods Script for more information.
HE_IsAdminAccountName()which can be found in
// Method called on the $ACCOUNT node to determine admin status given a set of data method HE_IsAdminAccount( data as NodeRef ) // Used by $ACCOUNT // Parameters: // data - $ACCOUNT is passed as this parameter, $ACCOUNT._adminAccountID will hold the ID to check admin status for // Return(s): // data._adminStatus - boolean indicating if $ACCOUNT._adminAccountID is an admin account or not // data._adminHandled - boolean indicating whether or not the clean engine processing should be used where data is kindof _Account data._adminHandled = false . . // Method called on the $ACCOUNT node to determine admin status given a set of data method HE_IsAdminAccountName( data as NodeRef ) // Used by $ACCOUNT // Parameters: // data - $ACCOUNT is passed as this parameter, $ACCOUNT._adminAccountName will hold the name to check admin status for // Return(s): // data._adminStatus - boolean indicating if $ACCOUNT._adminAccountName is an admin account or not // data._adminHandled - boolean indicating whether or not the clean engine processing should be used where data is kindof _Account data._adminHandled = false . .
// Determines admin status of the provided account ID unique method _IsAdminAccount( accountID as ID ) as Boolean // Determines admin status of the provided account name unique method _IsAdminAccountName( accountName as String ) as Boolean