Hytale Advanced Server Configuration: Difference between revisions
(Created page with "This guide covers advanced Hytale server configuration for experienced administrators. Topics include world pre-generation, server mesh architecture, and detailed JSON configuration options. == Before You Start == This guide assumes you're familiar with: * Basic Hytale server setup (see How to Create a Hytale Server Guide) * Editing JSON files * Using FTP or file management tools '''Important:''' Always back up your server files before making configuration changes...") |
No edit summary |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
This guide covers advanced Hytale server configuration | This guide covers advanced Hytale server configuration including world settings, command-line arguments, and server mesh architecture. | ||
'''Important:''' Always back up your server files before making configuration changes. Stop your server before editing any configuration files. | '''Important:''' Always back up your server files before making configuration changes. Stop your server before editing any configuration files. | ||
== | == Configuration File Locations == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! File !! Purpose | ! File !! Location !! Purpose | ||
|- | |- | ||
| <code>config.json</code> || Main server settings | | <code>config.json</code> || Server root folder || Main server settings | ||
|- | |- | ||
| <code>permissions.json</code> || Player roles | | <code>permissions.json</code> || Server root folder || Player roles and permissions | ||
|- | |- | ||
| <code>bans.json</code> || Banned player list | | <code>bans.json</code> || Server root folder || Banned player list | ||
|- | |- | ||
| <code>whitelist.json</code> || Allowed players | | <code>whitelist.json</code> || Server root folder || Allowed players list | ||
|- | |- | ||
| <code>universe/worlds/[WorldName]/ | | <code>config.json</code> || <code>universe/worlds/[WorldName]/</code> || Per-world settings | ||
|} | |} | ||
== | == Server Configuration (config.json) == | ||
The main <code>config.json</code> in your server root controls server-wide settings: | |||
<pre> | <pre> | ||
{ | { | ||
"ServerName": " | "Version": 3, | ||
"MaxPlayers": | "ServerName": "Hytale Server", | ||
" | "MOTD": "", | ||
" | "Password": "", | ||
" | "MaxPlayers": 100, | ||
" | "MaxViewRadius": 32, | ||
" | "LocalCompressionEnabled": false, | ||
"Defaults": { | |||
"World": "default", | |||
"GameMode": "Adventure" | |||
}, | |||
"ConnectionTimeouts": { | |||
"JoinTimeouts": {} | |||
}, | |||
"RateLimit": {}, | |||
"Modules": {}, | |||
"LogLevels": {}, | |||
"Mods": {}, | |||
"DisplayTmpTagsInStrings": false, | |||
"PlayerStorage": { | |||
"Type": "Hytale" | |||
} | |||
} | } | ||
</pre> | </pre> | ||
| Line 64: | Line 53: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Setting !! Description !! Recommended | ! Setting !! Description !! Recommended | ||
|- | |||
| <code>ServerName</code> || Display name shown to players || Your server name | |||
|- | |||
| <code>MOTD</code> || Message of the day || Short welcome message | |||
|- | |- | ||
| <code> | | <code>Password</code> || Server password (empty = no password) || Leave empty for public | ||
|- | |- | ||
| <code>MaxPlayers</code> || Maximum concurrent players || Based on | | <code>MaxPlayers</code> || Maximum concurrent players || Based on RAM (20-50 typical) | ||
|- | |- | ||
| <code> | | <code>MaxViewRadius</code> || How far players can see (in chunks) || '''12''' for performance | ||
|- | |- | ||
| <code> | | <code>LocalCompressionEnabled</code> || Enable local network compression || false | ||
|- | |- | ||
| <code> | | <code>Defaults.World</code> || Default world name players spawn in || "default" | ||
|- | |||
| <code>Defaults.GameMode</code> || Default game mode for new players || "Adventure" or "Creative" | |||
|} | |} | ||
'''Performance Tip:''' | '''Performance Tip:''' The official Hytale manual recommends limiting <code>MaxViewRadius</code> to '''12 chunks (384 blocks)''' for both performance and gameplay. The default of 32 is equivalent to roughly 64 Minecraft chunks and will significantly increase RAM usage. | ||
== Editing Configuration Files == | |||
=== For Survival Servers Customers === | |||
# Log into your [https://www.survivalservers.com/sspanel/ control panel] | |||
# Click '''Stop''' to shut down your server | |||
# Click '''Configuration Files''' or use '''FTP Access''' | |||
# Edit the desired file and save | |||
# Click '''Start''' to restart your server | |||
== | === For Self-Hosted Servers === | ||
# Stop your server (type <code>stop</code> or press <code>Ctrl+C</code>) | |||
# Open the config file in a text editor | |||
# Make your changes and save | |||
# Start your server | |||
== World Configuration (universe/worlds/[WorldName]/config.json) == | |||
Each world has its own configuration file. Below is the documented world config structure: | |||
<pre> | <pre> | ||
{ | { | ||
"Version": 4, | "Version": 4, | ||
"UUID": { | |||
"$binary": "j2x/idwTQpen24CDfH1+OQ==", | |||
"$type": "04" | |||
}, | |||
"Seed": 1767292261384, | "Seed": 1767292261384, | ||
"WorldGen": { | "WorldGen": { | ||
| Line 93: | Line 107: | ||
"Name": "Default" | "Name": "Default" | ||
}, | }, | ||
"WorldMap": { | |||
"Type": "WorldGen" | |||
}, | |||
"ChunkStorage": { | |||
"Type": "Hytale" | |||
}, | |||
"ChunkConfig": {}, | |||
"IsTicking": true, | "IsTicking": true, | ||
"IsBlockTicking": true, | "IsBlockTicking": true, | ||
| Line 98: | Line 119: | ||
"IsFallDamageEnabled": true, | "IsFallDamageEnabled": true, | ||
"IsGameTimePaused": false, | "IsGameTimePaused": false, | ||
"GameTime": "0001-01-01T08:26:59.761606129Z", | |||
"ClientEffects": { | |||
"SunHeightPercent": 100.0, | |||
"SunAngleDegrees": 0.0, | |||
"BloomIntensity": 0.30000001192092896, | |||
"BloomPower": 8.0, | |||
"SunIntensity": 0.25, | |||
"SunshaftIntensity": 0.30000001192092896, | |||
"SunshaftScaleFactor": 4.0 | |||
}, | |||
"RequiredPlugins": {}, | |||
"IsSpawningNPC": true, | "IsSpawningNPC": true, | ||
"IsSpawnMarkersEnabled": true, | "IsSpawnMarkersEnabled": true, | ||
"IsAllNPCFrozen": false, | "IsAllNPCFrozen": false, | ||
"GameplayConfig": "Default", | "GameplayConfig": "Default", | ||
"IsCompassUpdating": true, | |||
"IsSavingPlayers": true, | "IsSavingPlayers": true, | ||
"IsSavingChunks": true, | "IsSavingChunks": true, | ||
"IsUnloadingChunks": true | "SaveNewChunks": true, | ||
"IsUnloadingChunks": true, | |||
"IsObjectiveMarkersEnabled": true, | |||
"DeleteOnUniverseStart": false, | |||
"DeleteOnRemove": false, | |||
"ResourceStorage": { | |||
"Type": "Hytale" | |||
}, | |||
"Plugin": {} | |||
} | } | ||
</pre> | </pre> | ||
| Line 110: | Line 151: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Setting !! | ! Setting !! Description | ||
|- | |||
| <code>Seed</code> || World generation seed | |||
|- | |||
| <code>IsPvpEnabled</code> || Allow player vs player combat | |||
|- | |||
| <code>IsFallDamageEnabled</code> || Players take fall damage | |||
|- | |- | ||
| <code> | | <code>IsGameTimePaused</code> || Freeze day/night cycle | ||
|- | |- | ||
| <code> | | <code>IsSpawningNPC</code> || Enable mob spawning | ||
|- | |- | ||
| <code> | | <code>IsAllNPCFrozen</code> || Freeze all NPCs in place | ||
|- | |- | ||
| <code> | | <code>IsTicking</code> || World simulation runs | ||
|- | |- | ||
| <code> | | <code>IsBlockTicking</code> || Block updates (crops, liquids) | ||
|- | |- | ||
| <code> | | <code>IsSavingPlayers</code> || Save player data | ||
|- | |- | ||
| <code>IsSavingChunks</code> || Save world changes | | <code>IsSavingChunks</code> || Save world changes | ||
|- | |- | ||
| <code>IsUnloadingChunks</code> || Unload chunks | | <code>SaveNewChunks</code> || Save newly generated chunks to disk | ||
|- | |||
| <code>IsUnloadingChunks</code> || Unload empty chunks | |||
|- | |||
| <code>ClientEffects</code> || Visual effects settings (sun, bloom, sunshafts) | |||
|- | |||
| <code>DeleteOnUniverseStart</code> || Delete world on server start | |||
|- | |||
| <code>DeleteOnRemove</code> || Delete world files when removed | |||
|} | |} | ||
== World Pre-Generation == | == World Pre-Generation == | ||
Pre-generating | Pre-generating creates terrain ahead of time, reducing lag when players explore. | ||
'''Method 1: In-Game Exploration''' | '''Method 1: In-Game Exploration''' | ||
# Start your server and log in as admin | |||
# Start your server | |||
# Fly around the map to generate chunks | # Fly around the map to generate chunks | ||
# The server saves chunks as you explore | # The server saves chunks as you explore | ||
'''Method 2: | '''Method 2: Pre-Generation Mods''' | ||
# Add a pre-gen mod to your <code>mods/</code> folder | |||
# | |||
# Configure the area size and center point | # Configure the area size and center point | ||
# Run the pre-generation command | # Run the pre-generation command | ||
'''Method 3: Command-Line | '''Method 3: Command-Line''' | ||
<pre> | |||
java -jar HytaleServer.jar --help | |||
</pre> | |||
Check for built-in pre-generation options. | |||
== Server Mesh Architecture (Multi-Server Networks) == | == Server Mesh Architecture (Multi-Server Networks) == | ||
| Line 173: | Line 208: | ||
Hytale has built-in support for connecting multiple servers together without third-party proxies like BungeeCord. | Hytale has built-in support for connecting multiple servers together without third-party proxies like BungeeCord. | ||
These features are implemented via the server's Java API: | |||
{| class="wikitable" | |||
|- | |||
! Feature !! API Method !! Description | |||
|- | |||
| '''Player Referral''' || <code>PlayerRef.referToServer(host, port, payload)</code> || Transfer players between servers with optional 4KB payload | |||
|- | |||
| '''Connection Redirect''' || <code>PlayerSetupConnectEvent.referToServer(host, port)</code> || Redirect during handshake before full connection | |||
|- | |||
| '''Disconnect Fallback''' || Coming soon || Auto-reconnect to fallback if server crashes | |||
|} | |||
'''Security:''' Referral payloads pass through the client and can be tampered with. Sign payloads cryptographically (e.g., HMAC with a shared secret) so receiving servers can verify authenticity. | |||
'''Custom Proxies:''' Build proxy servers using Netty QUIC. Packet definitions available in <code>HytaleServer.jar</code> at <code>com.hypixel.hytale.protocol.packets</code>. | |||
== Command-Line Arguments == | |||
<pre> | <pre> | ||
java [JVM options] -jar HytaleServer.jar [server options] | |||
</pre> | </pre> | ||
=== JVM Options === | |||
= | {| class="wikitable" | ||
|- | |||
! Option !! Description !! Example | |||
|- | |||
| <code>-Xms</code> || Initial memory allocation || <code>-Xms4G</code> | |||
|- | |||
| <code>-Xmx</code> || Maximum memory allocation || <code>-Xmx4G</code> | |||
|- | |||
| <code>-XX:+UseG1GC</code> || Use G1 garbage collector || Recommended for 8GB+ | |||
|- | |||
| <code>-XX:AOTCache</code> || Use AOT cache for faster startup || <code>-XX:AOTCache=HytaleServer.aot</code> | |||
|} | |||
=== Server Options === | |||
=== | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Option !! Description !! Default | ||
|- | |- | ||
| <code>--assets <path></code> || Path to Assets.zip (required) | | <code>--assets <path></code> || Path to Assets.zip (required) || None | ||
|- | |- | ||
| <code>--bind <ip:port></code> || Address and port to listen on | | <code>--bind <ip:port></code> || Address and port to listen on || 0.0.0.0:5520 | ||
|- | |- | ||
| <code>--auth-mode <mode></code> || | | <code>--auth-mode <mode></code> || <code>authenticated</code> or <code>offline</code> || authenticated | ||
|- | |- | ||
| <code>--backup</code> || Enable automatic backups | | <code>--backup</code> || Enable automatic backups || Disabled | ||
|- | |- | ||
| <code>--backup-dir <path></code> || | | <code>--backup-dir <path></code> || Backup storage location || ./backups | ||
|- | |- | ||
| <code>--backup-frequency <mins></code> || Backup interval in minutes | | <code>--backup-frequency <mins></code> || Backup interval in minutes || 60 | ||
|- | |- | ||
| <code>--disable-sentry</code> || Disable crash reporting | | <code>--disable-sentry</code> || Disable crash reporting || Enabled | ||
|- | |- | ||
| <code>--allow-op</code> || Allow operator commands | | <code>--allow-op</code> || Allow operator commands || Disabled | ||
|- | |- | ||
| <code>--accept-early-plugins</code> || Load experimental plugins (unsupported) | | <code>--accept-early-plugins</code> || Load experimental plugins (unsupported) || Disabled | ||
|} | |} | ||
=== Example Launch | === Example Launch Scripts === | ||
'''Production server | '''Production server (Windows - start.bat):''' | ||
<pre> | <pre> | ||
java -Xms6G -Xmx6G -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60 | @echo off | ||
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60 | |||
pause | |||
</pre> | </pre> | ||
''' | '''Production server (Linux - start.sh):''' | ||
<pre> | <pre> | ||
java - | #!/bin/bash | ||
java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60 | |||
</pre> | </pre> | ||
''' | '''Development server:''' | ||
<pre> | <pre> | ||
java -Xms4G -Xmx4G -jar HytaleServer.jar --assets Assets.zip -- | java -Xms4G -Xmx4G -jar HytaleServer.jar --assets Assets.zip --auth-mode offline --disable-sentry | ||
</pre> | </pre> | ||
== | == Firewall Configuration == | ||
Hytale uses QUIC protocol over UDP (not TCP). | |||
'''Windows PowerShell:''' | |||
<pre> | <pre> | ||
New-NetFirewallRule -DisplayName "Hytale Server" -Direction Inbound -Protocol UDP -LocalPort 5520 -Action Allow | |||
</pre> | </pre> | ||
''' | '''Linux (iptables):''' | ||
<pre> | <pre> | ||
sudo iptables -A INPUT -p udp --dport 5520 -j ACCEPT | |||
</pre> | </pre> | ||
'''Linux (ufw):''' | |||
<pre> | <pre> | ||
sudo ufw allow 5520/udp | |||
</pre> | </pre> | ||
== See Also == | == See Also == | ||
Latest revision as of 20:52, 13 January 2026
This guide covers advanced Hytale server configuration including world settings, command-line arguments, and server mesh architecture.
Important: Always back up your server files before making configuration changes. Stop your server before editing any configuration files.
Configuration File Locations
| File | Location | Purpose |
|---|---|---|
config.json |
Server root folder | Main server settings |
permissions.json |
Server root folder | Player roles and permissions |
bans.json |
Server root folder | Banned player list |
whitelist.json |
Server root folder | Allowed players list |
config.json |
universe/worlds/[WorldName]/ |
Per-world settings |
Server Configuration (config.json)
The main config.json in your server root controls server-wide settings:
{
"Version": 3,
"ServerName": "Hytale Server",
"MOTD": "",
"Password": "",
"MaxPlayers": 100,
"MaxViewRadius": 32,
"LocalCompressionEnabled": false,
"Defaults": {
"World": "default",
"GameMode": "Adventure"
},
"ConnectionTimeouts": {
"JoinTimeouts": {}
},
"RateLimit": {},
"Modules": {},
"LogLevels": {},
"Mods": {},
"DisplayTmpTagsInStrings": false,
"PlayerStorage": {
"Type": "Hytale"
}
}
| Setting | Description | Recommended |
|---|---|---|
ServerName |
Display name shown to players | Your server name |
MOTD |
Message of the day | Short welcome message |
Password |
Server password (empty = no password) | Leave empty for public |
MaxPlayers |
Maximum concurrent players | Based on RAM (20-50 typical) |
MaxViewRadius |
How far players can see (in chunks) | 12 for performance |
LocalCompressionEnabled |
Enable local network compression | false |
Defaults.World |
Default world name players spawn in | "default" |
Defaults.GameMode |
Default game mode for new players | "Adventure" or "Creative" |
Performance Tip: The official Hytale manual recommends limiting MaxViewRadius to 12 chunks (384 blocks) for both performance and gameplay. The default of 32 is equivalent to roughly 64 Minecraft chunks and will significantly increase RAM usage.
Editing Configuration Files
For Survival Servers Customers
- Log into your control panel
- Click Stop to shut down your server
- Click Configuration Files or use FTP Access
- Edit the desired file and save
- Click Start to restart your server
For Self-Hosted Servers
- Stop your server (type
stopor pressCtrl+C) - Open the config file in a text editor
- Make your changes and save
- Start your server
World Configuration (universe/worlds/[WorldName]/config.json)
Each world has its own configuration file. Below is the documented world config structure:
{
"Version": 4,
"UUID": {
"$binary": "j2x/idwTQpen24CDfH1+OQ==",
"$type": "04"
},
"Seed": 1767292261384,
"WorldGen": {
"Type": "Hytale",
"Name": "Default"
},
"WorldMap": {
"Type": "WorldGen"
},
"ChunkStorage": {
"Type": "Hytale"
},
"ChunkConfig": {},
"IsTicking": true,
"IsBlockTicking": true,
"IsPvpEnabled": false,
"IsFallDamageEnabled": true,
"IsGameTimePaused": false,
"GameTime": "0001-01-01T08:26:59.761606129Z",
"ClientEffects": {
"SunHeightPercent": 100.0,
"SunAngleDegrees": 0.0,
"BloomIntensity": 0.30000001192092896,
"BloomPower": 8.0,
"SunIntensity": 0.25,
"SunshaftIntensity": 0.30000001192092896,
"SunshaftScaleFactor": 4.0
},
"RequiredPlugins": {},
"IsSpawningNPC": true,
"IsSpawnMarkersEnabled": true,
"IsAllNPCFrozen": false,
"GameplayConfig": "Default",
"IsCompassUpdating": true,
"IsSavingPlayers": true,
"IsSavingChunks": true,
"SaveNewChunks": true,
"IsUnloadingChunks": true,
"IsObjectiveMarkersEnabled": true,
"DeleteOnUniverseStart": false,
"DeleteOnRemove": false,
"ResourceStorage": {
"Type": "Hytale"
},
"Plugin": {}
}
| Setting | Description |
|---|---|
Seed |
World generation seed |
IsPvpEnabled |
Allow player vs player combat |
IsFallDamageEnabled |
Players take fall damage |
IsGameTimePaused |
Freeze day/night cycle |
IsSpawningNPC |
Enable mob spawning |
IsAllNPCFrozen |
Freeze all NPCs in place |
IsTicking |
World simulation runs |
IsBlockTicking |
Block updates (crops, liquids) |
IsSavingPlayers |
Save player data |
IsSavingChunks |
Save world changes |
SaveNewChunks |
Save newly generated chunks to disk |
IsUnloadingChunks |
Unload empty chunks |
ClientEffects |
Visual effects settings (sun, bloom, sunshafts) |
DeleteOnUniverseStart |
Delete world on server start |
DeleteOnRemove |
Delete world files when removed |
World Pre-Generation
Pre-generating creates terrain ahead of time, reducing lag when players explore.
Method 1: In-Game Exploration
- Start your server and log in as admin
- Fly around the map to generate chunks
- The server saves chunks as you explore
Method 2: Pre-Generation Mods
- Add a pre-gen mod to your
mods/folder - Configure the area size and center point
- Run the pre-generation command
Method 3: Command-Line
java -jar HytaleServer.jar --help
Check for built-in pre-generation options.
Server Mesh Architecture (Multi-Server Networks)
Hytale has built-in support for connecting multiple servers together without third-party proxies like BungeeCord.
These features are implemented via the server's Java API:
| Feature | API Method | Description |
|---|---|---|
| Player Referral | PlayerRef.referToServer(host, port, payload) |
Transfer players between servers with optional 4KB payload |
| Connection Redirect | PlayerSetupConnectEvent.referToServer(host, port) |
Redirect during handshake before full connection |
| Disconnect Fallback | Coming soon | Auto-reconnect to fallback if server crashes |
Security: Referral payloads pass through the client and can be tampered with. Sign payloads cryptographically (e.g., HMAC with a shared secret) so receiving servers can verify authenticity.
Custom Proxies: Build proxy servers using Netty QUIC. Packet definitions available in HytaleServer.jar at com.hypixel.hytale.protocol.packets.
Command-Line Arguments
java [JVM options] -jar HytaleServer.jar [server options]
JVM Options
| Option | Description | Example |
|---|---|---|
-Xms |
Initial memory allocation | -Xms4G
|
-Xmx |
Maximum memory allocation | -Xmx4G
|
-XX:+UseG1GC |
Use G1 garbage collector | Recommended for 8GB+ |
-XX:AOTCache |
Use AOT cache for faster startup | -XX:AOTCache=HytaleServer.aot
|
Server Options
| Option | Description | Default |
|---|---|---|
--assets <path> |
Path to Assets.zip (required) | None |
--bind <ip:port> |
Address and port to listen on | 0.0.0.0:5520 |
--auth-mode <mode> |
authenticated or offline |
authenticated |
--backup |
Enable automatic backups | Disabled |
--backup-dir <path> |
Backup storage location | ./backups |
--backup-frequency <mins> |
Backup interval in minutes | 60 |
--disable-sentry |
Disable crash reporting | Enabled |
--allow-op |
Allow operator commands | Disabled |
--accept-early-plugins |
Load experimental plugins (unsupported) | Disabled |
Example Launch Scripts
Production server (Windows - start.bat):
@echo off java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60 pause
Production server (Linux - start.sh):
#!/bin/bash java -Xms6G -Xmx6G -XX:+UseG1GC -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60
Development server:
java -Xms4G -Xmx4G -jar HytaleServer.jar --assets Assets.zip --auth-mode offline --disable-sentry
Firewall Configuration
Hytale uses QUIC protocol over UDP (not TCP).
Windows PowerShell:
New-NetFirewallRule -DisplayName "Hytale Server" -Direction Inbound -Protocol UDP -LocalPort 5520 -Action Allow
Linux (iptables):
sudo iptables -A INPUT -p udp --dport 5520 -j ACCEPT
Linux (ufw):
sudo ufw allow 5520/udp
See Also
- How to Create a Hytale Server Guide
- How to Join a Hytale Server
- How to Install Mods on a Hytale Server
- Official Hytale Website
- Hytale Support & Documentation
- Rent a Hytale Server from Survival Servers