Configuration
Anomaly’s public v1 server configuration is intentionally small. Protocol, authentication, transfer limits, and runtime lifecycle safeguards are release contracts rather than operator-tunable settings.
AssetDirectory
Section titled “AssetDirectory”AssetDirectory is the server folder scanned for supported remote files. Its default is an empty string.
- Leave it empty when no remote files are needed.
- Use PNG for custom-item icons and texture overrides on existing network objects.
- Use OGG only for supported audio features.
- Other formats, including AssetBundles and meshes, are rejected by the v1 remote manifest.
- The transfer envelope permits at most 64 MiB per file and 256 MiB per manifest. Client decoding is stricter: encoded PNG is capped at 16 MiB and encoded OGG at 32 MiB.
File changes rebuild offers for future player instances, reached by reconnecting or native round restart. The current player keeps its immutable approved snapshot; v1 does not broadcast destructive content hot reloads.
Content failure policy
Section titled “Content failure policy”There is no v1 operator toggle that permits content failures to remain connected. A catalog/digest mismatch, malformed content message, failed transfer, or failed transactional activation revokes the player’s content grant and disconnects unconditionally. A deliberate player decline remains supported: it sends zero file requests, activates nothing, and does not disconnect.
Companion plugins should use CustomItems.GetPlayerReadiness and wait for the once-per-activation ClientEvents.ContentReady event before granting custom items. They must not treat Offered, Approved, Transferring, or Transferred as grant-ready.
Players may leave the content consent prompt open without a timeout. Waiting for a decision reserves no active-transfer slot or byte budget. The 30-second transfer inactivity deadline begins after explicit approval, including when the client never sends its file request. Declining keeps the player connected.
Password settings
Section titled “Password settings”| Property | Default | Meaning |
|---|---|---|
| RequirePassword | false | Requests password-gated admission; remote clients are rejected while this is enabled. |
| EnableLegacyPasswordAuthOnLoopback | false | Permits the password proof only from loopback for local testing. |
| PasswordKdfIterations | 120000 | PBKDF2 iterations when the LocalAdmin password command stores a password. Existing verifier files retain their stored count. |
| PasswordMaxFailuresPerIp | 5 | Failed password proofs allowed per IP before blocking; 0 disables this block. |
| PasswordBlockSeconds | 300 | Duration of the password failure block, in seconds. |
Public remote password authentication is deliberately unavailable. Setting RequirePassword=true causes remote clients to be rejected.
EnableLegacyPasswordAuthOnLoopback exists only for controlled loopback compatibility testing. It must remain false on an internet-facing server. PasswordKdfIterations, PasswordMaxFailuresPerIp, and PasswordBlockSeconds apply only to that legacy test path; they do not make public password mode supported.
Applying changes
Section titled “Applying changes”Changing AssetDirectory requires a restart. Changes inside the selected directory affect offers built for future player instances. The current player is not forced into mid-round redownload or deactivation; reconnect or native round restart receives the current offer.
Continue to Auth Model and @anomaly IDs.