Table of Contents

Namespace FishMMO.Server.Implementation.LoginServer

Classes

AccountCreationSystem

Handles player account creation requests asynchronously with rate limiting and DoS protection. Stateless logic container - all mutable state stored in RuntimeDataContainers. Network thread acts as ultra-fast reactive UDP gate with zero blocking operations.

AccountCreationSystemMainThreadQueueData

Main-thread queue data container for AccountCreationSystem. Separate concrete type ensures the DataContainerRegistry creates an independent instance for this system.

AccountCreationSystemMappingData

Mapping data for per-IP rate limiting and DoS protection. Tracks IP addresses and their request/failure history. Thread-safe: accessed from both network and worker threads.

AccountCreationSystemRuntimeData

Runtime statistics and worker tracking for account creation system. Tracks performance metrics and worker lifecycle state. Counter fields use Interlocked for thread-safe increments from async workers.

CharacterCreateSystem

Manages character creation for player accounts, validates character data, and initializes starting equipment and abilities. All Unity object access (templates, prefabs) occurs on the main thread. Only database operations run asynchronously. Broadcast replies are marshalled back to the main thread via a thread-safe queue drained in OnLateUpdate.

CharacterCreateSystemMainThreadQueueData

Main-thread queue data container for CharacterCreateSystem. Separate concrete type ensures the DataContainerRegistry creates an independent instance for this system.

CharacterCreateSystemRuntimeData

Runtime data container for CharacterCreateSystem mutable state.

CharacterSelectSystem

Manages character selection, deletion, and listing for player accounts on the login server. Broadcast replies are marshalled back to the main thread via a thread-safe queue drained in OnLateUpdate.

CharacterSelectSystemMainThreadQueueData

Main-thread queue data container for CharacterSelectSystem. Separate concrete type ensures the DataContainerRegistry creates an independent instance for this system.

CharacterSelectSystemRuntimeData

Runtime data container for CharacterSelectSystem mutable state.

LoginQueueSystem

Manages a FIFO login queue for clients arriving when the server is at authentication capacity. Queued clients stay connected at the QUIC layer and receive periodic position updates via LoginQueuePositionBroadcast. When admitted (position reaches 0), the client re-initiates the handshake and proceeds through normal authentication.

Update rate: The LoginQueueUpdateRateSeconds config key controls how often position updates are broadcast. This is server-authoritative only — clients cannot request faster updates.

Admission rate: Clients are admitted from the queue at a server-configured rate (LoginQueueAdmissionRatePerSecond) to prevent the newly-admitted clients from immediately re-saturating auth capacity.

LoginServerRuntimeData

Runtime data container for login server state, storing the unique server ID.

LoginServerSystem

Manages login server lifecycle, including database registration and heartbeat updates for the login service.

ServerSelectSystem

Manages server selection for clients, providing the list of available world servers from the database.

ServerSelectSystemMainThreadQueueData

Main-thread queue data container for ServerSelectSystem. Separate concrete type ensures the DataContainerRegistry creates an independent instance for this system.

ServerSelectSystemRuntimeData

Runtime data container for ServerSelectSystem mutable state.