Hytale Advanced Server Configuration

From Survival Servers
Revision as of 10:57, 12 January 2026 by Ryan (talk | contribs) (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...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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:

Important: Always back up your server files before making configuration changes. Stop your server before editing any configuration files.

Server Configuration Files

Your Hytale server uses several JSON files to control its behavior:

File Purpose
config.json Main server settings (name, max players, network settings)
permissions.json Player roles, permissions, and admin access
bans.json Banned player list
whitelist.json Allowed players (when whitelist is enabled)
universe/worlds/[WorldName]/config.json Per-world settings

Main Server Configuration (config.json)

The main config.json file controls your server's core settings.

For Survival Servers Customers

  1. Log into your control panel
  2. Click Configuration Files or Config Editor
  3. Select config.json
  4. Make your changes and click Save
  5. Restart your server

For Self-Hosted Servers

  1. Stop your server
  2. Open config.json in a text editor
  3. Make your changes and save
  4. Start your server

Common Server Settings

{
  "ServerName": "My Hytale Server",
  "MaxPlayers": 20,
  "MOTD": "Welcome to my server!",
  "ViewDistance": 12,
  "SimulationDistance": 10,
  "WhitelistEnabled": false,
  "Difficulty": "Normal"
}
Setting Description Recommended Value
ServerName Name shown to players Your server name
MaxPlayers Maximum concurrent players Based on your RAM (10-20 for 4GB, 20-40 for 8GB)
ViewDistance How far players can see (in chunks) 12 (default is higher but uses more RAM)
SimulationDistance How far entities are active 8-10 for better performance
WhitelistEnabled Restrict to approved players only false (public) or true (private)

Performance Tip: Lowering ViewDistance from the default significantly reduces RAM usage. The default of 384 blocks equals roughly 24 Minecraft chunks. A value of 12 chunks (384 blocks) is recommended for both performance and gameplay.

World Configuration

Each world has its own configuration file located at universe/worlds/[WorldName]/config.json.

World Config Options

{
  "Version": 4,
  "Seed": 1767292261384,
  "WorldGen": {
    "Type": "Hytale",
    "Name": "Default"
  },
  "IsTicking": true,
  "IsBlockTicking": true,
  "IsPvpEnabled": false,
  "IsFallDamageEnabled": true,
  "IsGameTimePaused": false,
  "IsSpawningNPC": true,
  "IsSpawnMarkersEnabled": true,
  "IsAllNPCFrozen": false,
  "GameplayConfig": "Default",
  "IsSavingPlayers": true,
  "IsSavingChunks": true,
  "IsUnloadingChunks": true
}
Setting What It Does
Seed World generation seed (determines terrain layout)
IsPvpEnabled Allow players to damage each other
IsFallDamageEnabled Players take damage from falling
IsSpawningNPC Enable/disable mob spawning
IsAllNPCFrozen Freeze all NPCs (useful for building)
IsGameTimePaused Stop day/night cycle
IsSavingChunks Save world changes (disable for temporary worlds)
IsUnloadingChunks Unload chunks when players leave (saves RAM)

World Pre-Generation

Pre-generating your world creates terrain ahead of time, reducing lag when players explore new areas.

Why Pre-Generate?

  • Reduces lag spikes - New chunks are already generated
  • Smoother gameplay - No stuttering when exploring
  • Better for events - Prepare large areas in advance
  • Consistent performance - Server load is predictable

Pre-Generation Methods

Method 1: In-Game Exploration

The simplest method is to explore the world before opening to players:

  1. Start your server
  2. Log in as admin
  3. Fly around the map to generate chunks
  4. The server saves chunks as you explore

Method 2: Using World Generation Tools

When available, dedicated pre-generation tools or mods can generate large areas automatically:

  1. Install a pre-generation mod/plugin
  2. Configure the area size and center point
  3. Run the pre-generation command
  4. Wait for completion (can take hours for large areas)

Method 3: Command-Line Pre-Generation

Check java -jar HytaleServer.jar --help for pre-generation options. These may include flags to generate chunks without running the full server.

Pre-Generation Tips

  • Start small - Generate a 5000x5000 block area first
  • Monitor resources - Pre-generation is CPU and storage intensive
  • Schedule during off-hours - Run overnight when no players are online
  • Backup first - Always backup before major generation tasks

Server Mesh Architecture (Multi-Server Networks)

Hytale has built-in support for connecting multiple servers together without third-party proxies like BungeeCord.

Use Cases for Server Meshes

  • Hub/Lobby servers - Central spawn with portals to game servers
  • Minigame networks - Different servers for different game modes
  • Load distribution - Spread players across multiple servers
  • Regional routing - Direct players to nearest server

Player Referral (Server Transfers)

Transfer connected players from one server to another seamlessly.

How it works:

  1. Player is on Server A
  2. Server A sends a referral packet with target server info
  3. Client disconnects from Server A
  4. Client automatically connects to Server B
  5. Optional: Server A can send a 4KB payload to Server B

Configuration example:

{
  "Referrals": {
    "Enabled": true,
    "Targets": {
      "minigames": {
        "Host": "minigames.myserver.com",
        "Port": 5520
      },
      "survival": {
        "Host": "survival.myserver.com",
        "Port": 5521
      }
    }
  }
}

Security Note: Referral payloads pass through the client and can be tampered with. Use cryptographic signing (HMAC with shared secret) to verify payload authenticity on the receiving server.

Connection Redirect (Load Balancing)

Redirect players during connection handshake before they fully join.

Use cases:

  • Load balancing across multiple servers
  • Regional routing based on player location
  • Enforcing lobby-first connections
  • Maintenance mode redirects

How it works:

  1. Player connects to Server A
  2. During handshake, Server A checks conditions
  3. If needed, Server A rejects with redirect address
  4. Client automatically connects to the redirect target

Disconnect Fallback

Automatically reconnect players to a fallback server if their current server crashes.

Use cases:

  • Return players to lobby after game server crash
  • Maintain player engagement during restarts
  • Graceful handling of server issues

Configuration:

{
  "Fallback": {
    "Enabled": true,
    "Server": {
      "Host": "lobby.myserver.com",
      "Port": 5520
    }
  }
}

Building a Custom Proxy

For advanced networks, you can build custom proxy servers using Netty QUIC.

Key information:

  • Hytale uses QUIC protocol exclusively for client-server communication
  • Packet definitions are available in HytaleServer.jar at com.hypixel.hytale.protocol.packets
  • Use these to decode, inspect, modify, or forward traffic

Note: Building proxies requires Java development experience and understanding of the QUIC protocol.

Command-Line Arguments

Advanced launch options for fine-tuning your server:

Argument Description
--assets <path> Path to Assets.zip (required)
--bind <ip:port> Address and port to listen on (default: 0.0.0.0:5520)
--auth-mode <mode> Authentication mode: authenticated or offline
--backup Enable automatic backups
--backup-dir <path> Where to store backups
--backup-frequency <mins> Backup interval in minutes
--disable-sentry Disable crash reporting (for development)
--allow-op Allow operator commands
--accept-early-plugins Load experimental plugins (unsupported)

Example Launch Commands

Production server with backups:

java -Xms6G -Xmx6G -jar HytaleServer.jar --assets Assets.zip --backup --backup-frequency 60 --backup-dir ./backups

Development server (offline mode, no crash reporting):

java -Xms4G -Xmx4G -jar HytaleServer.jar --assets Assets.zip --auth-mode offline --disable-sentry

Custom port binding:

java -Xms4G -Xmx4G -jar HytaleServer.jar --assets Assets.zip --bind 0.0.0.0:25565

Performance Optimization

JVM Tuning

Beyond basic -Xms and -Xmx flags, consider these optimizations:

Using the AOT Cache (Faster Startup):

Hytale includes a pre-trained AOT (Ahead-of-Time) cache that speeds up server boot time:

java -XX:AOTCache=HytaleServer.aot -Xms4G -Xmx4G -jar HytaleServer.jar --assets Assets.zip

Garbage Collection Tuning:

For servers with 8GB+ RAM, consider G1GC tuning:

java -Xms8G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=50 -jar HytaleServer.jar --assets Assets.zip

Resource Usage Guidelines

Resource What Increases Usage How to Reduce
CPU High player count, many entities (NPCs, mobs) Reduce mob spawning, limit entity counts
RAM Large view distance, players spread out Lower view distance, enable chunk unloading
Storage Large worlds, frequent backups Pre-generation limits, backup rotation
Network High player count, high tick rate Optimize player cap, use compression

Permissions Configuration

The permissions.json file controls who can do what on your server.

Basic Structure

{
  "Groups": {
    "default": {
      "Permissions": ["hytale.chat", "hytale.build"],
      "Inheritance": []
    },
    "moderator": {
      "Permissions": ["hytale.kick", "hytale.mute"],
      "Inheritance": ["default"]
    },
    "admin": {
      "Permissions": ["*"],
      "Inheritance": ["moderator"]
    }
  },
  "Players": {
    "player-uuid-here": {
      "Group": "admin"
    }
  }
}

Permission Tips

  • Use * for all permissions (admin only)
  • Inheritance lets groups build on each other
  • Player-specific permissions override group permissions
  • Changes require server restart to take effect

Troubleshooting Advanced Configurations

Config Changes Not Applying

  • Make sure server is stopped before editing
  • Check for JSON syntax errors (missing commas, brackets)
  • Verify file encoding is UTF-8
  • Check server logs for config parsing errors

Multi-Server Connection Issues

  • Ensure all servers are on the same Hytale version
  • Verify firewall rules allow traffic between servers
  • Check that referral hostnames resolve correctly
  • Test with direct IP addresses first

Performance Problems

  • Monitor RAM usage - increase -Xmx if consistently high
  • Check view distance settings
  • Review entity counts in logs
  • Consider pre-generating heavily explored areas

See Also