> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wasabihosting.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Palworld Server Optimization Guide

> Optimize your Palworld server for best performance and player experience

# Palworld Server Optimization

This guide provides comprehensive optimization strategies for your Palworld dedicated server to ensure smooth gameplay, minimal lag, and optimal performance for all players.

## Performance Baseline

Before optimizing, understand your server's current performance:

<Accordion title="Key Performance Metrics">
  | Metric             | Good       | Acceptable | Poor         |
  | ------------------ | ---------- | ---------- | ------------ |
  | **Server FPS**     | 60+ FPS    | 45-60 FPS  | Below 45 FPS |
  | **Tick Rate**      | 60 TPS     | 50-59 TPS  | Below 50 TPS |
  | **RAM Usage**      | Under 8GB  | 8-12GB     | Over 12GB    |
  | **CPU Usage**      | Under 50%  | 50-75%     | Over 75%     |
  | **Player Latency** | Under 50ms | 50-100ms   | Over 100ms   |
  | **Load Time**      | Under 30s  | 30-60s     | Over 60s     |
</Accordion>

<Info>
  Monitor these metrics through your Wasabi Hosting Gamepanel or in-game console commands.
</Info>

## Configuration Optimization

### Core Settings Optimization

Optimize `PalWorldSettings.ini` for better performance:

```ini theme={null}
[/Script/Pal.PalGameWorldSettings]
OptionSettings=(
    # Player Limit (adjust based on server resources)
    ServerPlayerMaxNum=20,  # Lower = better performance

    # Entity Limits (reduce for better performance)
    DropItemMaxNum=2000,    # Default: 3000
    DropItemAliveMaxHours=0.5,  # Faster cleanup

    # Base Settings
    BaseCampMaxNum=128,
    BaseCampWorkerMaxNum=10,  # Lower = better performance (default: 15)

    # Spawn Rates (lower = better performance)
    PalSpawnNumRate=0.9,    # Slightly reduce spawns

    # Guild Settings
    GuildPlayerMaxNum=15,   # Lower if not needed

    # Performance-Critical Settings
    bIsUseBackupSaveData=True,
    bUseAuth=True
)
```

<Tip>
  `BaseCampWorkerMaxNum` has the most significant performance impact. Start at 10 and adjust based on player feedback.
</Tip>

### Engine Configuration

Optimize `Engine.ini` for maximum performance:

```ini theme={null}
[/Script/OnlineSubsystemUtils.IpNetDriver]
NetServerMaxTickRate=60
MaxClientRate=100000
MaxInternetClientRate=100000

[/Script/Engine.Engine]
bUseFixedFrameRate=True
FixedFrameRate=60.000000
bSmoothFrameRate=True
SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=30.000000),UpperBound=(Type=Exclusive,Value=60.000000))

[Core.System]
Paths=../../../Engine/Content
Paths=%GAMEDIR%Content

[/Script/Engine.GarbageCollectionSettings]
gc.MaxObjectsNotConsideredByGC=1
gc.SizeOfPermanentObjectPool=0
gc.TimeBetweenPurgingPendingKillObjects=60

[/Script/EngineSettings.GameMapsSettings]
GameDefaultMap=/Game/Maps/Main
ServerDefaultMap=/Game/Maps/Main

[SystemSettings]
r.Streaming.PoolSize=2048
r.Streaming.MaxEffectiveScreenSize=0
r.Shadow.MaxResolution=2048
```

<Warning>
  Changing TickRate below 50 may negatively impact gameplay. 60 is optimal for most servers.
</Warning>

## Startup Parameter Optimization

### Recommended Startup Parameters

Configure these in your Wasabi Hosting Gamepanel:

```bash theme={null}
# High Performance Configuration
-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -publicport=8211 -publicip= -servername="My Server" -port=8211

# Additional Memory Optimization
-USEALLAVAILABLECORES -malloc=system -high
```

<Accordion title="Parameter Breakdown">
  | Parameter               | Purpose                                    | Performance Impact                        |
  | ----------------------- | ------------------------------------------ | ----------------------------------------- |
  | `-useperfthreads`       | Use performance-optimized threads          | **High** - Better CPU utilization         |
  | `-NoAsyncLoadingThread` | Disable async loading                      | **Medium** - More predictable load        |
  | `-UseMultithreadForDS`  | Enable multithreading for dedicated server | **High** - Essential for good performance |
  | `-USEALLAVAILABLECORES` | Utilize all CPU cores                      | **High** - Maximizes CPU usage            |
  | `-malloc=system`        | Use system memory allocator                | **Medium** - Better memory management     |
  | `-high`                 | Set process priority to high               | **Medium** - Better CPU scheduling        |
  | `-port=8211`            | Specify server port                        | None                                      |
  | `-publicport=8211`      | Set public port                            | None                                      |
</Accordion>

## Memory Optimization

### Memory Management Settings

```ini theme={null}
# In Engine.ini
[/Script/Engine.GarbageCollectionSettings]
gc.MaxObjectsNotConsideredByGC=1
gc.SizeOfPermanentObjectPool=0
gc.TimeBetweenPurgingPendingKillObjects=60
gc.FlushStreamingOnGC=True

[MemoryPools]
PoolSize=2048
MaxPoolSize=4096
```

### RAM Allocation Guidelines

<Accordion title="RAM Requirements by Player Count">
  | Player Count | Minimum RAM | Recommended RAM |
  | ------------ | ----------- | --------------- |
  | **1-8**      | 8 GB        | 12 GB           |
  | **8-16**     | 12 GB       | 16 GB           |
  | **16-24**    | 16 GB       | 24 GB           |
  | **24-32**    | 24 GB       | 32 GB           |

  <Info>
    These requirements include OS overhead and other background processes. Dedicated servers should have 20-30% RAM headroom.
  </Info>
</Accordion>

## CPU Optimization

### Multi-Threading Configuration

```ini theme={null}
# In Engine.ini
[Core.System]
TaskGraph.NumThreads=0  # 0 = Auto-detect cores

[/Script/Engine.RendererSettings]
r.RHICmdBypass=0

[SystemSettings]
WorkerThreadPriority=TPri_Normal
ThreadedPhysicsWorker=True
```

### CPU Affinity and Priority

On Windows servers, configure CPU affinity:

```powershell theme={null}
# PowerShell script to set CPU affinity
$processName = "PalServer-Win64-Test-Cmd"
$process = Get-Process -Name $processName
$process.ProcessorAffinity = 0xFF  # Use all 8 cores (adjust for your CPU)
```

<Tip>
  Set the Palworld server process priority to "High" in Task Manager for better CPU allocation.
</Tip>

## Network Optimization

### Network Configuration

```ini theme={null}
# In PalWorldSettings.ini
[/Script/Pal.PalGameWorldSettings]
OptionSettings=(
    PublicPort=8211,
    RCONPort=25575,
    ServerPlayerMaxNum=20,  # Lower for better network performance
)

# In Engine.ini
[/Script/OnlineSubsystemUtils.IpNetDriver]
NetServerMaxTickRate=60
MaxClientRate=100000
MaxInternetClientRate=100000
ConnectionTimeout=60.0
InitialConnectTimeout=60.0
```

### Bandwidth Optimization

<Accordion title="Bandwidth Requirements">
  | Player Count | Minimum Bandwidth | Recommended Bandwidth |
  | ------------ | ----------------- | --------------------- |
  | **1-8**      | 10 Mbps           | 25 Mbps               |
  | **8-16**     | 25 Mbps           | 50 Mbps               |
  | **16-24**    | 50 Mbps           | 100 Mbps              |
  | **24-32**    | 100 Mbps          | 200 Mbps              |

  <Info>
    These values are for upload bandwidth, which is typically the limiting factor for game servers.
  </Info>
</Accordion>

## Entity and World Optimization

### Item Management

```ini theme={null}
# Optimize item handling
DropItemMaxNum=2000,              # Reduce from default 3000
DropItemAliveMaxHours=0.5,        # Faster cleanup (default: 1.0)
```

<Warning>
  Setting `DropItemMaxNum` too low may cause items to disappear during intense gameplay. 2000-2500 is a good balance.
</Warning>

### Pal Spawn Optimization

```ini theme={null}
# Balance spawns and performance
PalSpawnNumRate=0.9,              # Slightly reduce spawns
PalDamageRateAttack=1.0,
PalDamageRateDefense=1.0,
```

### Base and Building Optimization

```ini theme={null}
# Base performance settings
BaseCampMaxNum=128,               # Maximum bases
BaseCampWorkerMaxNum=10,          # Reduce from 15 for better performance
BuildObjectDeteriorationDamageRate=1.0,
```

<Tip>
  `BaseCampWorkerMaxNum` directly impacts performance. Each worker Pal actively calculates pathfinding and tasks.
</Tip>

## Database and Save Optimization

### Save Game Settings

```ini theme={null}
# Enable backup system
bIsUseBackupSaveData=True,

# In Engine.ini
[/Script/Engine.GameEngine]
bSmoothFrameRate=True
SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=30.000000),UpperBound=(Type=Exclusive,Value=60.000000))
```

### Automatic Backups

Configure automatic saves and backups:

* **In Wasabi Gamepanel**: Set up automated backups every 6-12 hours
* **Manual saves**: Use `/Save` command regularly via RCON
* **Backup rotation**: Keep 3-7 days of backups

<Note>
  Regular saves prevent data loss but cause brief performance dips. Schedule during low-traffic periods.
</Note>

## Performance Scaling by Player Count

### Small Server (1-8 Players)

```ini theme={null}
# Optimized for 1-8 players
ServerPlayerMaxNum=8,
BaseCampWorkerMaxNum=15,          # Can afford higher
PalSpawnNumRate=1.0,
DropItemMaxNum=2000,
ExpRate=1.0,
```

### Medium Server (8-16 Players)

```ini theme={null}
# Optimized for 8-16 players
ServerPlayerMaxNum=16,
BaseCampWorkerMaxNum=12,          # Balanced
PalSpawnNumRate=0.9,
DropItemMaxNum=2500,
ExpRate=1.2,                      # Slightly boosted for more players
```

### Large Server (16-32 Players)

```ini theme={null}
# Optimized for 16-32 players
ServerPlayerMaxNum=32,
BaseCampWorkerMaxNum=8,           # Reduced for performance
PalSpawnNumRate=0.8,              # Lower spawn rate
DropItemMaxNum=3000,
ExpRate=1.5,                      # Compensate for more competition
DropItemAliveMaxHours=0.3,        # Aggressive cleanup
```

## Monitoring and Diagnostics

### Performance Monitoring

Use RCON commands to monitor performance:

```bash theme={null}
# Check server performance
/ShowPerformance
/ShowMemory
/ShowNetwork

# Regular health checks
/Info
/ShowPlayers
```

### Log Analysis

Monitor logs for performance issues:

```bash theme={null}
# Log location
/Pal/Saved/Logs/

# Common issues to look for:
- "Out of memory" errors
- High tick time warnings
- Connection timeouts
- Save/load errors
```

<Tip>
  Set up log rotation to prevent log files from consuming too much disk space.
</Tip>

## Platform-Specific Optimizations

### Windows Server

```powershell theme={null}
# Disable unnecessary services
Set-Service -Name "Themes" -StartupType Disabled
Set-Service -Name "Windows Search" -StartupType Disabled

# Configure page file
# Set to 1.5x - 2x your RAM size

# Disable visual effects
SystemPropertiesPerformance.exe
```

### Linux Server

```bash theme={null}
# Increase file descriptor limits
ulimit -n 100000

# Optimize TCP settings
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_rmem='4096 87380 16777216'
sysctl -w net.ipv4.tcp_wmem='4096 65536 16777216'

# Disable unnecessary services
systemctl disable bluetooth
systemctl disable cups
```

## Advanced Optimization Techniques

### Memory Pooling

```ini theme={null}
# In Engine.ini
[/Script/Engine.Engine]
bEnableOnScreenDebugMessages=False
PoolSize=2048

[SystemSettings]
r.Streaming.PoolSize=2048
r.Streaming.UseFixedPoolSize=1
```

### Async Loading

```ini theme={null}
[/Script/Engine.StreamingSettings]
s.AsyncLoadingTimeLimit=5.0
s.PriorityAsyncLoadingExtraTime=15.0
s.LevelStreamingActorsUpdateTimeLimit=5.0
```

### Garbage Collection Optimization

```ini theme={null}
[/Script/Engine.GarbageCollectionSettings]
gc.MaxObjectsNotConsideredByGC=1
gc.SizeOfPermanentObjectPool=0
gc.TimeBetweenPurgingPendingKillObjects=60
gc.MaxObjectsInEditor=2147483647
gc.IncrementalBeginDestroyEnabled=True
```

## Anti-Lag Measures

### Entity Cleanup Scripts

Create automated cleanup via RCON:

```bash theme={null}
#!/bin/bash
# Cleanup script

RCON_CMD="mcrcon -H your-ip -P 25575 -p password"

while true; do
    # Regular save
    $RCON_CMD "Save"

    # Broadcast cleanup
    $RCON_CMD "Broadcast Performing routine cleanup..."

    sleep 3600  # Every hour
done
```

### Dynamic Performance Adjustment

Monitor and adjust settings based on load:

```bash theme={null}
# Check player count and adjust
PLAYER_COUNT=$($RCON_CMD "ShowPlayers" | wc -l)

if [ $PLAYER_COUNT -gt 20 ]; then
    # High load - reduce spawns
    echo "High player count - reducing spawns"
elif [ $PLAYER_COUNT -lt 10 ]; then
    # Low load - increase for better gameplay
    echo "Low player count - normal settings"
fi
```

## Hardware Recommendations

<Accordion title="Server Hardware by Player Count">
  **For 1-8 Players:**

  * **CPU**: 4 cores @ 3.5GHz+
  * **RAM**: 12 GB
  * **Storage**: 50 GB SSD
  * **Network**: 25 Mbps

  **For 8-16 Players:**

  * **CPU**: 6 cores @ 4.0GHz+
  * **RAM**: 16 GB
  * **Storage**: 100 GB SSD
  * **Network**: 50 Mbps

  **For 16-24 Players:**

  * **CPU**: 8 cores @ 4.5GHz+
  * **RAM**: 24 GB
  * **Storage**: 150 GB NVMe SSD
  * **Network**: 100 Mbps

  **For 24-32 Players:**

  * **CPU**: 12 cores @ 5.0GHz+
  * **RAM**: 32 GB
  * **Storage**: 200 GB NVMe SSD
  * **Network**: 200 Mbps

  <Info>
    SSD/NVMe storage is crucial for fast world saves and loads. HDD significantly impacts performance.
  </Info>
</Accordion>

## Optimization Checklist

Use this checklist to optimize your server:

* [ ] Set appropriate player limit for hardware
* [ ] Reduce `BaseCampWorkerMaxNum` to 8-12
* [ ] Configure `DropItemMaxNum` to 2000-2500
* [ ] Enable faster item cleanup (0.5 hours)
* [ ] Set `NetServerMaxTickRate` to 60
* [ ] Enable multithreading startup parameters
* [ ] Configure automatic backups
* [ ] Set process priority to High
* [ ] Enable garbage collection optimization
* [ ] Configure log rotation
* [ ] Optimize network settings
* [ ] Enable RCON for monitoring
* [ ] Set up automated saves
* [ ] Monitor RAM usage regularly
* [ ] Review and update configuration monthly

## Troubleshooting Performance Issues

<Accordion title="Low Server FPS / Tick Rate">
  **Common Causes:**

  * Too many players for hardware
  * High `BaseCampWorkerMaxNum`
  * CPU bottleneck
  * Too many active bases

  **Solutions:**

  * Reduce `ServerPlayerMaxNum`
  * Lower `BaseCampWorkerMaxNum` to 8-10
  * Reduce `PalSpawnNumRate` to 0.8
  * Increase cleanup frequency
  * Upgrade CPU or reduce player count
</Accordion>

<Accordion title="High Memory Usage">
  **Common Causes:**

  * Memory leaks
  * Too many entities
  * Large world size
  * Insufficient cleanup

  **Solutions:**

  * Enable aggressive item cleanup
  * Reduce `DropItemMaxNum`
  * Restart server daily
  * Enable garbage collection optimization
  * Reduce `BaseCampMaxNum` if possible
</Accordion>

<Accordion title="Network Lag / High Ping">
  **Common Causes:**

  * Insufficient bandwidth
  * Network congestion
  * DDoS attack
  * Poor routing

  **Solutions:**

  * Upgrade network bandwidth
  * Enable DDoS protection (Firewall Manager)
  * Reduce `MaxClientRate` if needed
  * Limit `ServerPlayerMaxNum`
  * Check for background network processes
</Accordion>

<Accordion title="Long Save Times">
  **Common Causes:**

  * Slow storage (HDD vs SSD)
  * Large world size
  * Many players/bases
  * Fragmented files

  **Solutions:**

  * Upgrade to SSD or NVMe storage
  * Regular world cleanup
  * Optimize save intervals
  * Defragment storage (if HDD)
  * Enable backup compression
</Accordion>

<Accordion title="Frequent Crashes">
  **Common Causes:**

  * Out of memory
  * Corrupted save files
  * Mod conflicts
  * Hardware issues

  **Solutions:**

  * Increase allocated RAM
  * Restore from backup
  * Remove problematic mods
  * Check hardware health
  * Update server software
  * Review crash logs
</Accordion>

## Maintenance Schedule

Regular maintenance ensures optimal performance:

### Daily Tasks

* Monitor server performance metrics
* Check player count vs. performance
* Verify no error messages in logs
* Quick backup verification

### Weekly Tasks

* Full server restart
* Log file cleanup and review
* Performance benchmark
* Backup rotation verification
* Check for updates

### Monthly Tasks

* Deep performance analysis
* Configuration optimization review
* Hardware health check
* Storage cleanup
* Update all software
* Review player feedback

<Tip>
  Schedule maintenance during off-peak hours (early morning) to minimize player disruption.
</Tip>

## Performance Testing

### Stress Testing

Test server performance under load:

<Steps>
  <Step title="Establish baseline">
    Record metrics with normal player count
  </Step>

  <Step title="Simulate high load">
    Test with maximum expected players
  </Step>

  <Step title="Monitor metrics">
    Track FPS, RAM, CPU, network during test
  </Step>

  <Step title="Identify bottlenecks">
    Find performance limiting factors
  </Step>

  <Step title="Adjust and retest">
    Optimize and test again
  </Step>
</Steps>

### Benchmark Commands

```bash theme={null}
# Via RCON
/ShowPerformance  # Current FPS and tick rate
/ShowMemory       # RAM usage
/ShowNetwork      # Network stats
/Info             # General server info
```

## Final Optimization Tips

<Note>
  **Key Optimization Principles:**

  * **Start conservative**: Begin with lower limits and increase gradually
  * **Monitor constantly**: Regular performance checks prevent issues
  * **One change at a time**: Test each optimization individually
  * **Document changes**: Keep records of what works
  * **Player feedback**: Listen to player reports of lag
  * **Regular restarts**: Daily restarts prevent memory leaks
  * **Update regularly**: Keep server software current
  * **Backup everything**: Always backup before major changes
</Note>

By following this comprehensive optimization guide, your Palworld server on Wasabi Hosting will deliver excellent performance and a smooth, enjoyable experience for all players. For additional assistance, contact our support team.

<Card title="Get your own Palworld server" icon="rocket" href="https://wasabihosting.com/game-servers/palworld">
  Deploy a DDoS-protected Palworld server on AMD Ryzen hardware in about two minutes. Plans start at €9.00/month.
</Card>
