Optimize Your Server with the Hytale Performance Saver Plugin

Managing a Hytale server is a bit like juggling: you have to maintain stable performance to ensure gameplay enjoyment, while managing resource consumption that can skyrocket at any moment.

A small group of explorers scattered across the map can bring your server to its knees faster than an army of players in the same spot. Faced with these unpredictable load spikes, the risk of lag, TPS (Ticks Per Second) drops, or even crashes becomes a reality.

This is precisely where the Hytale Performance Saver Plugin comes in—a smartly designed plugin to ensure your Hytale server’s stability. Its goal isn’t to restrict your server, but to intelligently manage resource pressure to maintain a pleasant gaming experience, even during the most intense moments.

Main Features

This plugin acts as a vigilant guardian for your server. It uses several optimization measures to manage resource consumption dynamically.

TPS Limiting (Ticks Per Second)

For the player experience, it is much more pleasant to have stable TPS, even if slightly lower, than high but highly fluctuating TPS. The plugin allows you to cap the TPS at a configurable value (20 by default) to ensure constant fluidity. Even better, it intelligently reduces TPS when the server is empty (5 by default), saving valuable resources when no one is connected.

Dynamic View Radius Adjustment

This is the most powerful feature of this plugin. The view radius (draw distance) is one of the biggest consumers of memory and CPU. The plugin constantly monitors your server’s health:

  • CPU Pressure: Detected by a drop in TPS.
  • RAM Pressure: Detected by observing memory cleanup attempts by Java (the famous “Garbage Collection”).

If pressure is detected, the plugin will automatically and dynamically lower the view radius to free up resources. Once the server stabilizes, it progressively increases the display distance again. This measure is incredibly effective at preventing resource-related crashes.

Garbage Collector

Java tends to hold onto memory even if it is no longer being used. This plugin observes the number of loaded chunks on your server. If it detects a sharp drop (for example, players disconnecting or grouping up), it triggers an extra memory cleanup, ensuring that unused resources are properly released.

Plugin Installation

Installation is a breeze. Simply place the plugin’s JAR file, once downloaded, into your Hytale server’s mods/ folder. Restart the server, and the plugin will be active.

Plugin Configuration

The plugin is configured via a single file that you must create: config.json.
This file must be placed in a specific folder.

Configuration file path: mods/Nitrado_PerformanceSaver/config.json

TPS Adjustment (Tps)

This section controls the behavior of the TPS limiting.

OptionTypeDefault ValueDescription
EnabledbooleantrueEnables or disables TPS limiting on your server.
TpsLimitinteger20Defines the maximum number of ticks per second (TPS) the server will attempt to reach when players are connected. A stable value of 20 is ideal for a fluid experience.
TpsLimitEmptyinteger5Limits TPS when the server is empty to save resources.
OnlyWorldsstring array[]Allows restricting TPS adjustment to specific worlds. Leave empty to apply to all worlds. Use __DEFAULT to target the default world.
InitialDelaySecondsinteger30Delay in seconds after server startup before TPS adjustment begins.
CheckIntervalSecondsinteger5Frequency (in seconds) at which the plugin checks and adjusts TPS.
EmptyLimitDelaySecondsinteger300Inactivity time (in seconds) before the empty server TPS limit is applied.

View Radius Adjustment (ViewRadius)

Controls the dynamic adjustment of the display distance based on server load.

OptionTypeDefault ValueDescription
EnabledbooleantrueEnables or disables dynamic view radius adjustment.
MinViewRadiusinteger2The absolute minimum view radius the plugin can set. Prevents the view distance from becoming too low.
DecreaseFactordouble0.75The factor by which the current view radius is multiplied to reduce it. A value of 0.75 means the radius will drop to 75% of its previous value.
IncreaseValueinteger1The value added to the view radius when it is in the recovery phase (e.g., from 8 to 9).
InitialDelaySecondsinteger30Delay before the module starts monitoring performance.
CheckIntervalSecondsinteger5Frequency for checking resource load.
RecoveryWaitTimeSecondsinteger60Wait time (in seconds) after stabilization before attempting to increase the view radius again.
RequireNotifyPermissionbooleanfalseIf true, only players with the appropriate permission will receive notifications about view distance changes.

Memory Monitor (GcMonitor)

Monitors RAM to detect pressure.

OptionTypeDefault ValueDescription
EnabledbooleantrueEnables or disables memory-based pressure detection.
HeapThresholdRatiodouble0.85RAM usage threshold (85% by default) that triggers pressure detection.
TriggerSequenceLengthinteger3Number of consecutive memory cleanup events with high RAM needed to trigger a view radius reduction.
WindowSecondsinteger60Time window (in seconds) to analyze memory cleanup events.

TPS Monitor (TpsMonitor)

Monitors TPS to detect processor (CPU) pressure.

OptionTypeDefault ValueDescription
EnabledbooleantrueEnables or disables TPS-based pressure detection.
TpsWaterMarkHighdouble0.75TPS ratio (75% of the limit) above which the view radius can begin to recover.
TpsWaterMarkLowdouble0.6TPS ratio (60% of the limit) below which the view radius must be reduced.
OnlyWorldsstring array[]Restricts TPS monitoring to specific worlds. Leave empty for all.
AdjustmentDelaySecondsinteger20Delay in seconds between two view radius adjustments triggered by a TPS drop.

Chunk Collection (ChunkGarbageCollection)

Triggers memory cleanup when chunk unloading suggests that RAM can be freed.

OptionTypeDefault ValueDescription
EnabledbooleantrueEnables or disables this feature.
MinChunkCountinteger128Minimum number of loaded chunks before this function becomes active.
ChunkDropRatioThresholddouble0.8If the number of chunks falls below this ratio (e.g., from 1000 to 799), a cleanup is triggered.
GarbageCollectionDelaySecondsinteger300Minimum time between two memory cleanups triggered by this module.
InitialDelaySecondsinteger5Delay before chunk monitoring begins.
CheckIntervalSecondsinteger5Frequency for checking the chunk count.

Complete Configuration Example

Here is an example of the complete config.json file with all default values. You can copy and paste this content and adapt it to your needs.

{
  "Tps": {
    "Enabled": true,
    "TpsLimit": 20,
    "TpsLimitEmpty": 5,
    "OnlyWorlds": [],
    "InitialDelaySeconds": 30,
    "CheckIntervalSeconds": 5,
    "EmptyLimitDelaySeconds": 300
  },
  "ViewRadius": {
    "Enabled": true,
    "MinViewRadius": 2,
    "DecreaseFactor": 0.75,
    "IncreaseValue": 1,
    "InitialDelaySeconds": 30,
    "CheckIntervalSeconds": 5,
    "RecoveryWaitTimeSeconds": 60,
    "RequireNotifyPermission": false,
    "GcMonitor": {
      "Enabled": true,
      "HeapThresholdRatio": 0.85,
      "TriggerSequenceLength": 3,
      "WindowSeconds": 60
    },
    "TpsMonitor": {
      "Enabled": true,
      "TpsWaterMarkHigh": 0.75,
      "TpsWaterMarkLow": 0.6,
      "OnlyWorlds": [],
      "AdjustmentDelaySeconds": 20
    }
  },
  "ChunkGarbageCollection": {
    "Enabled": true,
    "MinChunkCount": 128,
    "ChunkDropRatioThreshold": 0.8,
    "GarbageCollectionDelaySeconds": 300,
    "InitialDelaySeconds": 5,
    "CheckIntervalSeconds": 5
  }
}

Leave a Reply

Your email address will not be published. Required fields are marked *