ACR Configuration Settings
There are several configuration settings that alter the behavior of the ACR on a global or per-module basis.
Global settings are stored in the "config" table in the database, whereas per-module settings are stored as module local variables that are intended to be configured in the toolset.
Module local variable configuration settings
These settings are stored as local variables on the module. They can be set by the toolset.
- int ACR_PLAYER_LOCATIONS
- If set to 1, the PC Tools button that allows a player to see what areas their party members are in is enabled. This feature is defunct and doesn't do anything right now.
- int ACR_DISABLE_STATISTICS
- If set to 1, then the ACR doesn't update the stat_counters table in the database. This feature is primarily in place to allow statistics to be disabled if they proved to be a performance problem. This setting can be globally configured via the database config table.
- int ACR_HEALTHMONITOR_GAMEOBJUPDATE_BACKOFF
- If set to 1, then the server will detect when responsiveness is poor due to excessive server load. If the server appears to be overloaded, then the ACR (ACR_HealthMonitor) will increase the time between game world updates sent to game clients. This frees up a significant amount of CPU time for other tasks on the server, preserving responsiveness (but players will see course corrections or other movement changes less frequently). If the server is performing well, the game world update timer is reduced to its default value. This setting can be globally configured via the database config table.
- int ACR_SERVER_IPC_DISABLE_LATENCY_CHECK
- If set to 1, then the server won't periodically, about every 30 seconds, refresh the player to server ping times of connected players (players can check their ping with #ping if this feature isn't enabled).
- int ACR_MODULERESOURCEFILES
- If set to 1, then the server will record each resource file present within the module proper in the server_resource_files table. This setting can be globally configured via the database config table.
Recommended Module Default Settings
- int ACR_PLAYER_LOCATIONS = 1
- int ACR_HEALTHMONITOR_GAMEOBJUPDATE_BACKOFF = 1
Global (database config table) Configuration Settings
These settings are stored in the "config" table in the database, which is a key/value pair mapping. They change the behavior of all modules connected to the database.
- This setting contains the player password that is used when portaling a player between servers. It must match the configured player password value on all servers. Changing this setting doesn't actually change the player password required to connect to a server (which has to be done separately), just what password is used for outbound portals. This setting is updated every 5 minutes while a server is running.
- If set to 1, this setting turns off stat_counters table updates on all servers by setting the ACR_DISABLE_STATISTICS module local variable to 1 during server startup. This setting is only updated at module startup time.
- If set to 1, this setting enables game world update timer management by setting the ACR_HEALTHMONITOR_GAMEOBJUPDATE_BACKOFF module local variable to 1 during server startup. This setting is only updated at module startup time.
- The number of second after which a remote server restart request, from the Restart Server tool, forcibly terminates the server if a clean shutdown hasn't happened yet. This setting is designed to allow a server that is deadlocked or hung to be forcibly restarted remotely (as the remote restart mechanism uses a dedicated thread that is more likely to be responsive even if the main server thread is stuck). If not set or set to zero, then the restart watchdog feature isn't used on remote restart requests. This setting is updated every 5 minutes while a server is running.
- The shared secret string used to generate the URL to send the user to for linking their in-game community account with their ALFA forum account. The value can be any string (hopefully a relatively random one). The forum system uses the shared secret to validate that URLs containing account linking information were only generated by an authorized source, like a live server. More details on the account association system can be found here. This setting is updated every 5 minutes while a server is running.
- If set to 1, this setting enables module resource file logging by setting the ACR_MODULERESOURCEFILES module local variable to 1 during server startup. This setting is only updated at module startup time.
- The base URL of the ALFA account association web service. This setting is updated every 5 minutes while a server is running.
- The base URL of the ALFA get hostname web service. This setting is updated every 5 minutes while a server is running.
- The path relative to the Azure updater root container (formerly the sshfs mount point) to use as the base location for content patch files. Content patch files are stored under <Azure updater root container>/ContentPatchPath/<HakVersion>/. Any \ characters in this path are automatically converted into / characters for the Azure updater. This value should generally be set to ACR_ContentPatches\Global. This setting is only updated at module startup time.
- The default IRC gateway to use for server-to-IRC messages. Typically, this should be zero, which is the IRC gateway ID customarily used by the production ALFA IRC bot. The setting is paired with an ALFA IRC Bot instance's IRCGateway config.xml entry. This setting is updated every 5 minutes while a server is running.
- The default IRC recipient (i.e. channel) to use for server-to-IRC messages. Typically, this should be #alfa-players. This setting is updated every 5 minutes while a server is running.
- If set to 1, Windows Error Reporting is disabled for nwn2server.exe. This setting is only updated at module startup time.
- If set to 1, character files are not saved by a player in quarantine (preventing a pending save from an offline server from accidentally being overwritten by logging in to the wrong server). This is updated every 5 minutes while a server is running.
- Compiler options that the content patcher system uses when a module recompile is required by a content hotfix. This is usually set to "-e -o -v1.70 -y", to match the option set used by the ACR build system (in NWScript.mk) and to continue past scripts that fail to compile, as some modules have non-compileable scripts checked in.
- The character ID of the dummy character that is used to send notification messages from infrastructure to the IRC gateway. Typically, this should be the dedicated NotifyService character (CID 3905). This is used, for example, by the content patcher, so as to send notifications as to server restarts due to the content patch system. If set to zero, messages are not sent to the IRC gateway. Infrastructure messages are sent to the default IRC recipient as configured by the DefaultIrcRecipient config table variable.
- The default IRC recipient (i.e. channel) to use for diagnostic and error reports sent via server-to-IRC messages. Typically, this should be #alfa-tech. This setting is updated every 5 minutes while a server is running.
- The game difficulty level that all servers will be configured to. This is an integer value that should match the value of one of the GAME_DIFFICULTY_* nwscript.nss constants, and should generally be set to 3 (meaning GAME_DIFFICULTY_CORE_RULES). If a server has an incorrect difficulty level, the ACR system will automatically adjust it to the target, global difficulty level specified with this variable.
- The anti-abuse protection level that all servers adhere to (an integer). Each protection level represents an incremental anti-abuse defense over the previous level. Protection levels can be applied in the case of an abuse event, but generally the system should run at ProtectionLevel 0 (the default, no special restrictions). Valid values correspond to the following table (the value should be set to the integer on the left, the symbolic constant in script source code is supplied in parenthesis):
- (MEMBER_PROTECTION_LEVEL_OPEN): The default, no special anti-abuse provisions for non-member accounts.
- (MEMBER_PROTECTION_LEVEL_QUARANTINE): Non-member accounts are immediately quarantined on login.
- (MEMBER_PROTECTION_LEVEL_QUARANTINE_DM_ONLY_TELLS): Non-member accounts are immediately quarantined on login and the only function permitted in-game is to send a tell to a DM (no cross-server tells, no IRC gateway use, no (non-DM) player tells, etc.).
- (MEMBER_PROTECTION_LEVEL_BOOT_5S_DELAY): Non-member accounts are quarantined, can't use tells (even to a DM), and are booted after 5 seconds. A short message explaining that the player should fill out the application form at http://www.alandfaraway.info is displayed before the player is booted.
- (MEMBER_PROTECTION_LEVEL_BOOT_IMMEDIATELY): Non-member accounts are immediately booted on log in and can't perform any function in-game whatsoever. No appreciable delay even to send an explanation as to what happened is allowed for, for use in extreme abuse events only.
- This setting is updated every 5 minutes while a server is running.
- The Azure Storage connection string for the server vault. This setting is updated every 5 minutes while a server is running.
- The Azure Storage connection string for the ACR updater. This setting is updated every 5 minutes while a server is running.
- If set to 1, detailed log messages about the Azure ServerVaultConnector are logged to the main server log file. This setting is normally left as 0. This is updated every 5 minutes while a server is running.