A performance plugin for ARK: Survival Ascended dedicated servers running AsaApi. Automatically reduces CPU usage, memory pressure and network bandwidth without any manual intervention during normal server operation.
ARK ASA tends to accumulate pending-kill objects in memory, run unnecessarily high-precision physics on dedicated servers, and replicate structures at excessive network frequencies. This plugin fixes all three issues by applying optimized configuration at server startup and keeping it active throughout the session.
Applies UE5 console variables at startup so the GC works in frequent small cycles instead of massive purges that freeze the server.
| Variable | Plugin Default | UE5 Default |
|---|---|---|
| gc.TimeBetweenPurgingPendingKillObjects | 20s | 60s |
| gc.NumRetriesBeforeForcingGC | 5 | 10 |
| gc.ActorClusteringEnabled | enabled | enabled |
| gc.MaxObjectsNotConsideredByGC | 0 | 0 |
Reduces CPU load from the physics simulator, which on a dedicated server does not require the same precision as single-player mode.
| Variable | Plugin Default | UE5 Default |
|---|---|---|
| p.Chaos.MaxSubSteps | 2 | 4 |
| t.MaxFPS | 30 | unlimited |
Forces a complete GC + Defrag cycle every X minutes. More aggressive than the automatic GC β recovers fragmented memory accumulated during long sessions.
Adjusts the network update frequency of all structures on the map. Structures rarely change state, so reducing their NetUpdateFrequency significantly lowers bandwidth consumed by replication.
Periodic messages (GC executed, structures updated) are written to an independent rotating log file (PluginPerformance_stats.log) to keep the ARK API console clean. The file rotates automatically when it exceeds 5 MB, keeping up to 3 historical files.
On every server start, PluginConfig.guide.json is automatically generated with a full description of every parameter, its valid range, and known engine messages explained.
When the plugin is updated with new parameters, it detects the version of the existing PluginConfig.json and regenerates it automatically with the new defaults. No manual file editing required.
## RCON Commands
| Command | Description | Response |
|---|---|---|
| ForceGC | Forces an immediate GC cycle | JSON with status |
| GetServerStats | Returns the current number of UObjects in memory | JSON with data |
Example responses:
JSON:
{ "cmd": "ForceGC", "status": "success", "message": "Garbage collection forced successfully" }
{ "cmd": "GetServerStats", "status": "success", "data": { "uobjects": 142830 } }
## Server Files
Code:
ShooterGame/Binaries/Win64/ArkApi/Plugins/PluginPerformance/
βββ PluginPerformance.dll
βββ PluginInfo.json
βββ PluginConfig.json β editable configuration
βββ PluginConfig.guide.json β auto-generated guide (do not edit)
βββ PluginPerformance_stats.log β periodic activity log
## Configuration (PluginConfig.json)
JSON:
{
"ConfigVersion": 3,
"AutoGC": {
"Enabled": true,
"IntervalMinutes": 15
},
"GCCVars": {
"Enabled": true,
"TimeBetweenPurgingSeconds": 20.0,
"NumRetriesBeforeForcingGC": 5,
"ActorClusteringEnabled": true,
"MaxObjectsNotConsideredByGC": 0
},
"PhysicsCVars": {
"Enabled": true,
"ChaosMaxSubSteps": 2,
"ServerMaxFPS": 30
},
"StructureNetFreq": {
"Enabled": true,
"NetUpdateFreq": 0.2,
"MinNetUpdateFreq": 0.1,
"CheckIntervalSeconds": 300
},
"Rcon": {
"CommandName": "ForceGC"
},
"VerboseLogging": false
}
Set VerboseLogging: true to also show periodic messages in the ARK API console in addition to the stats log file.
Requirements
- AsaApi 1.21+
- Windows x64
- ARK: Survival Ascended (dedicated server)
Installation
1. Copy PluginPerformance.dll, PluginInfo.json and PluginConfig.json to:
ShooterGame/Binaries/Win64/ArkApi/Plugins/PluginPerformance/
2. Restart the server.
3. Confirm in the ARK API log:
Code:
[PluginPerformance] Plugin initialized.
[API] Loaded plugin PluginPerformance V1 (Performance optimization plugin for ARK: Survival Ascended)