Skip to content

Server Configuration

This guide covers configuring your Hytale server after the initial setup.

After first launch, your server generates several configuration files:

my-server/
├── HytaleServer.jar
├── config.json # Main server configuration
└── universe/
└── worlds/
└── default/
└── config.json # World-specific settings

The main config.json file controls server-wide settings:

{
"ServerName": "Hytale Server",
"MOTD": "",
"Password": "",
"MaxPlayers": 100,
"MaxViewRadius": 32,
"LocalCompressionEnabled": false,
"Defaults": {
"World": "default",
"GameMode": "Adventure"
},
"ConnectionTimeouts": {
"InitialTimeout": "PT10S",
"AuthTimeout": "PT30S",
"PlayTimeout": "PT1M"
},
"RateLimit": {
"Enabled": true,
"PacketsPerSecond": 2000,
"BurstCapacity": 500
}
}
SettingTypeDefaultDescription
ServerNamestring"Hytale Server"Display name for your server
MOTDstring""Message of the day shown to players
Passwordstring""Server password (empty for no password)
MaxPlayersinteger100Maximum concurrent players
MaxViewRadiusinteger32Maximum view radius in chunks
LocalCompressionEnabledbooleanfalseEnable local network compression
Defaults.Worldstring"default"Default world players spawn in
Defaults.GameModestring"Adventure"Default game mode for new players

Each world has its own config.json in universe/worlds/<worldname>/:

{
"UUID": "generated-uuid-here",
"DisplayName": "My World",
"Seed": 1234567890,
"WorldGen": {
"Type": "Hytale"
},
"ChunkStorage": {
"Type": "Region"
},
"IsTicking": true,
"IsBlockTicking": true,
"IsPvpEnabled": false,
"IsFallDamageEnabled": true,
"IsGameTimePaused": false,
"GameTime": "1970-01-01T05:30:00Z",
"GameMode": "Adventure",
"IsSpawningNPC": true,
"IsSpawnMarkersEnabled": true,
"IsSavingPlayers": true,
"IsSavingChunks": true,
"IsUnloadingChunks": true,
"GameplayConfig": "Default"
}
SettingTypeDefaultDescription
UUIDstringauto-generatedUnique identifier for this world
DisplayNamestringnullPlayer-facing name of the world
Seedlongcurrent timeWorld generation seed
WorldGen.Typestring"Hytale"World generator type
ChunkStorage.Typestring"Region"Chunk storage system type
IsTickingbooleantrueWhether chunks in this world tick
IsBlockTickingbooleantrueWhether blocks in this world tick
IsPvpEnabledbooleanfalseAllow player vs player combat
IsFallDamageEnabledbooleantruePlayers take fall damage
IsGameTimePausedbooleanfalseWhether game time is paused
GameTimeISO-8601"1970-01-01T05:30:00Z"Current time of day (affects day/night cycle)
GameModestringinherits from serverDefault game mode for this world
IsSpawningNPCbooleantrueWhether NPCs can spawn
IsSpawnMarkersEnabledbooleantrueWhether spawn markers are enabled
IsSavingPlayersbooleantrueWhether player data is saved
IsSavingChunksbooleantrueWhether chunk data is saved to disk
IsUnloadingChunksbooleantrueWhether chunks can be unloaded
GameplayConfigstring"Default"Gameplay configuration to use

Allocate appropriate memory based on your player count:

PlayersRecommended RAM
1-104GB
10-206GB
20-508GB
50+12GB+

Example for a larger server:

Terminal window
java -Xms8G -Xmx8G -jar HytaleServer.jar --assets ../HytaleAssets

Enable automatic backups with command-line arguments:

Terminal window
java -Xms4G -Xmx4G -jar HytaleServer.jar \
--assets ../HytaleAssets \
--backup \
--backup-dir ./backups \
--backup-frequency 30 \
--backup-max-count 5

This creates backups every 30 minutes in the ./backups directory, keeping up to 5 backups.

Players must have valid Hytale accounts. This is the recommended mode for public servers:

Terminal window
java -jar HytaleServer.jar --assets ../HytaleAssets --auth-mode authenticated

To authenticate as a server operator, use the in-game command:

/auth login device

This initiates OAuth 2.0 device authentication flow.

No account verification. Use for private/LAN servers only:

Terminal window
java -jar HytaleServer.jar --assets ../HytaleAssets --auth-mode offline

Similar to offline mode but with additional relaxed security. Only use for development:

Terminal window
java -jar HytaleServer.jar --assets ../HytaleAssets --auth-mode insecure

For better garbage collection performance:

Terminal window
java -Xms4G -Xmx4G \
-XX:+UseG1GC \
-XX:+ParallelRefProcEnabled \
-XX:MaxGCPauseMillis=200 \
-jar HytaleServer.jar --assets ../HytaleAssets

Adjust maximum view radius in config.json to balance performance:

{
"MaxViewRadius": 32
}

Lower values improve performance but reduce the visible area for players. The default of 32 chunks provides a good balance for most servers.

Create /etc/systemd/system/hytale.service:

[Unit]
Description=Hytale Server
After=network.target
[Service]
User=hytale
WorkingDirectory=/opt/hytale
ExecStart=/usr/bin/java -Xms4G -Xmx4G -jar HytaleServer.jar --assets ../HytaleAssets
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target

Enable and start:

Terminal window
sudo systemctl enable hytale
sudo systemctl start hytale

View logs:

Terminal window
sudo journalctl -u hytale -f

Use tools like NSSM (Non-Sucking Service Manager) to run as a Windows service:

Terminal window
# Install NSSM and configure the service
nssm install HytaleServer "C:\Program Files\Java\jdk-25\bin\java.exe"
nssm set HytaleServer AppParameters "-Xms4G -Xmx4G -jar HytaleServer.jar --assets ..\HytaleAssets"
nssm set HytaleServer AppDirectory "C:\hytale-server"
nssm start HytaleServer

Learn about Server Commands to manage your server.