# Systems Overview Sovereign Engine contains a number of Systems which implement both game mechanics and internal engine processing. This section provides a high-level overview of these systems and their responsibilities. ## Core Systems Core systems are present in both the client and server. | System | System Class | Description | |---------------|---------------------|--------------------------------------------------------------------| | `Block` | `BlockSystem` | Responsible for managing the lifecycle of block entities. | | `Movement` | `MovementSystem` | Responsible for controlling the movement of positionable entities. | | `Network` | `NetworkSystem` | Responsible for replicating local events onto the network. | | `Performance` | `PerformanceSystem` | Responsible for monitoring engine performance. | | `Ping` | `PingSystem` | Responsible for periodic and aperiodic network ping. | ## Client Systems Client systems are only present in the client. | System | System Class | Description | |-------------------------|-------------------------------|---------------------------------------------------------------------------| | `Camera` | `CameraSystem` | Responsible for managing the camera used for rendering. | | `ClientChat` | `ClientChatSystem` | Responsible for managing chat functions in the client. | | `ClientNetwork` | `ClientNetworkSystem` | Responsible for managing the client-side network connection. | | `ClientState` | `ClientStateSystem` | Responsible for managing the top-level client state machine. | | `ClientWorldEdit` | `ClientWorldEditSystem` | Responsible for managing the client-side world editor. | | `EntityAnimation` | `EntityAnimationSystem` | Responsible for managing entity animation phases. | | `EntitySynchronization` | `EntitySynchronizationSystem` | Responsible for non-block entity synchronization in the client. | | `Input` | `InputSystem` | Responsible for responding to user input (keyboard, mouse, gamepad, etc). | | `Perspective` | `PerspectiveSystem` | Responsible for tracking positioned entities on perspective lines. | ## Server Systems Server systems are only present in the server. | System | System Class | Description | |--------------------|--------------------------|-------------------------------------------------------------------| | `Accounts` | `AccountsSystem` | Responsible for managing the locked account list. | | `Persistence` | `PersistenceSystem` | Responsible for managing the database. | | `Scripting` | `ScriptingSystem` | Responsible for managing server-side scripts. | | `ServerChat` | `ServerChatSystem` | Responsible for managing chat functions in the server. | | `ServerManagement` | `ServerManagementSystem` | Responsible for managing the engine in its server configuration. | | `ServerNetwork` | `ServerNetworkSystem` | Responsible for managing server network resources. | | `TemplateEntity` | `TemplateEntitySystem` | Responsible for server-side management of template entities. | | `WorldEdit` | `WorldEditSystem` | Responsible for server-side world editor processing. | | `WorldManagement` | `WorldManagementSystem` | Responsible for managing the in-memory lifecycle of all entities. |