Cómo Crear tu Propio Servidor de Hytale
Introducción
Este artículo cubre la configuración, instalación y operación de servidores dedicados de Hytale.
Audiencia objetivo: Administradores de servidores y jugadores que alojan servidores dedicados.
Configuración del Servidor
El servidor de Hytale puede ejecutarse en cualquier dispositivo con al menos 4GB de memoria y Java 25. Tanto arquitecturas x64 como arm64 están soportadas.
Recomendamos monitorear el uso de RAM y CPU mientras el servidor está en uso para entender el consumo típico según tu cantidad de jugadores y estilo de juego - el uso de recursos depende en gran medida del comportamiento de los jugadores.
Guía General
| Recurso | Factor Principal |
|---|---|
| CPU | Alto número de jugadores o entidades (NPCs, mobs) |
| RAM | Gran área del mundo cargada (alta distancia de renderizado, jugadores explorando independientemente) |
Nota: Sin herramientas especializadas, puede ser difícil determinar cuánta RAM asignada realmente necesita un proceso Java. Experimenta con diferentes valores para el parámetro
-Xmxde Java para establecer límites explícitos. Un síntoma típico de presión de memoria es el aumento del uso de CPU debido a la recolección de basura.
Instalar Java 25
Instala Java 25. Recomendamos Adoptium.
Confirmar la Instalación
Verifica la instalación ejecutando:
java --version
Salida esperada:
openjdk 25.0.1 2025-10-21 LTS
OpenJDK Runtime Environment Temurin-25.0.1+8 (build 25.0.1+8-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.1+8 (build 25.0.1+8-LTS, mixed mode, sharing)
Archivos del Servidor
Dos opciones para obtener los archivos del servidor:
- Copiar manualmente desde tu instalación del Launcher
- Usar el Hytale Downloader CLI
Copiar Manualmente desde el Launcher
Ideal para: Pruebas rápidas. Incómodo de mantener actualizado.
Encuentra los archivos en la carpeta de instalación de tu launcher:
- Windows:
%appdata%\Hytale\install\release\package\game\latest - Linux:
$XDG_DATA_HOME/Hytale/install/release/package/game/latest - MacOS:
~/Application Support/Hytale/install/release/package/game/latest
Lista el contenido del directorio:
ls
Salida esperada:
Directory: C:\Users\...\Hytale\install\release\package\game\latest
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 12/25/2025 9:25 PM Client
d----- 12/25/2025 9:25 PM Server
-a---- 12/25/2025 9:04 PM 3298097359 Assets.zip
Copia la carpeta Server y Assets.zip a la carpeta de destino de tu servidor.
Hytale Downloader CLI
Ideal para: Servidores de producción. Fácil de mantener actualizado.
Una herramienta de línea de comandos para descargar archivos del servidor y assets de Hytale con autenticación OAuth2. Consulta el archivo QUICKSTART.md dentro del archivo comprimido.
Descarga: hytale-downloader.zip (Linux y Windows)
| Comando | Descripción |
|---|---|
./hytale-downloader |
Descargar la última versión |
./hytale-downloader -print-version |
Mostrar versión del juego sin descargar |
./hytale-downloader -version |
Mostrar versión de hytale-downloader |
./hytale-downloader -check-update |
Verificar actualizaciones de hytale-downloader |
./hytale-downloader -download-path game.zip |
Descargar a un archivo específico |
./hytale-downloader -patchline pre-release |
Descargar desde el canal pre-release |
./hytale-downloader -skip-update-check |
Omitir verificación automática de actualizaciones |
Ejecutar un Servidor de Hytale
Inicia el servidor con:
java -jar HytaleServer.jar --assets RutaAAssets.zip
Autenticación
Después del primer arranque, autentica tu servidor.
> /auth login device
===================================================================
AUTORIZACIÓN DE DISPOSITIVO
===================================================================
Visita: https://accounts.hytale.com/device
Introduce el código: ABCD-1234
O visita: https://accounts.hytale.com/device?user_code=ABCD-1234
===================================================================
Esperando autorización (expira en 900 segundos)...
[El usuario completa la autorización en el navegador]
> ¡Autenticación exitosa! Modo: OAUTH_DEVICE
Una vez autenticado, tu servidor puede aceptar conexiones de jugadores.
Información Adicional sobre Autenticación
Los servidores de Hytale requieren autenticación para habilitar la comunicación con nuestras APIs de servicio y para contrarrestar abusos.
Nota: Existe un límite de 100 servidores por licencia de juego de Hytale para prevenir abusos tempranos. Si necesitas más capacidad, compra licencias adicionales o solicita una cuenta de Proveedor de Servidores.
Si necesitas autenticar una gran cantidad de servidores o autenticar servidores dinámicamente de forma automática, por favor lee la Guía de Autenticación para Proveedores de Servidores para información detallada.
Ayuda
Revisa todos los argumentos disponibles:
java -jar HytaleServer.jar --help
Salida esperada:
Option Description
------ -----------
--accept-early-plugins Reconoce que cargar plugins tempranos
no está soportado y puede causar problemas de estabilidad
--allow-op
--assets <Ruta> Directorio de assets (por defecto: ..\HytaleAssets)
--auth-mode <authenticated|offline> Modo de autenticación (por defecto: AUTHENTICATED)
-b, --bind <InetSocketAddress> Dirección a escuchar (por defecto: 0.0.0.0:5520)
--backup Habilitar copias de seguridad automáticas
--backup-dir <Ruta> Directorio de copias de seguridad
--backup-frequency <Entero> Intervalo de backup en minutos (por defecto: 30)
[...]
Puerto
El puerto por defecto es 5520. Cámbialo con el argumento --bind:
java -jar HytaleServer.jar --assets RutaAAssets.zip --bind 0.0.0.0:25565
Firewall y Configuración de Red
Hytale usa el protocolo QUIC sobre UDP (no TCP). Configura tu firewall y reenvío de puertos correspondientemente.
Reenvío de Puertos
Si alojas detrás de un router, reenvía el puerto UDP 5520 (o tu puerto personalizado) a tu máquina servidor. No se requiere reenvío TCP.
Reglas de Firewall
Windows Defender Firewall:
New-NetFirewallRule -DisplayName "Servidor Hytale" -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
Consideraciones de NAT
QUIC maneja bien el NAT traversal en la mayoría de casos. Si los jugadores tienen problemas para conectarse:
- Asegúrate de que el reenvío de puertos sea específicamente para UDP, no TCP
- Las configuraciones de NAT simétrico pueden causar problemas - considera un VPS o servidor dedicado
- Los jugadores detrás de NAT de grado carrier (común en redes móviles) deberían conectarse bien como clientes
Estructura de Archivos
| Ruta | Descripción |
|---|---|
.cache/ |
Caché para archivos optimizados |
logs/ |
Archivos de log del servidor |
mods/ |
Mods instalados |
universe/ |
Datos de guardado del mundo y jugadores |
bans.json |
Jugadores baneados |
config.json |
Configuración del servidor |
permissions.json |
Configuración de permisos |
whitelist.json |
Jugadores en lista blanca |
Estructura del Universo
El directorio universe/worlds/ contiene todos los mundos jugables. Cada mundo tiene su propio config.json:
{
"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",
"RequiredPlugins": {},
"IsSpawningNPC": true,
"IsSpawnMarkersEnabled": true,
"IsAllNPCFrozen": false,
"GameplayConfig": "Default",
"IsCompassUpdating": true,
"IsSavingPlayers": true,
"IsSavingChunks": true,
"IsUnloadingChunks": true,
"IsObjectiveMarkersEnabled": true,
"DeleteOnUniverseStart": false,
"DeleteOnRemove": false,
"ResourceStorage": {
"Type": "Hytale"
},
"Plugin": {}
}
Cada mundo se ejecuta en su propio hilo principal y descarga trabajo paralelo en un pool de hilos compartido.
Consejos y Trucos
Instalar Mods
Descarga mods (.zip o .jar) de fuentes como CurseForge y colócalos en la carpeta mods/.
Deshabilitar Informes de Errores de Sentry
Importante: Deshabilita Sentry durante el desarrollo activo de plugins.
Usamos Sentry para rastrear errores. Deshabilítalo con --disable-sentry para evitar enviar tus errores de desarrollo:
java -jar HytaleServer.jar --assets RutaAAssets.zip --disable-sentry
Aprovechar la Caché Ahead-of-Time
El servidor viene con una caché AOT pre-entrenada (HytaleServer.aot) que mejora los tiempos de arranque al omitir el calentamiento JIT. Consulta JEP-514.
java -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets RutaAAssets.zip
Plugins Recomendados
Nuestros socios de desarrollo en Nitrado y Apex Hosting mantienen plugins para necesidades comunes de alojamiento de servidores:
| Plugin | Descripción |
|---|---|
Nitrado:WebServer |
Plugin base para aplicaciones web y APIs |
Nitrado:Query |
Expone el estado del servidor (conteo de jugadores, etc.) vía HTTP |
Nitrado:PerformanceSaver |
Limita dinámicamente la distancia de renderizado basándose en el uso de recursos |
ApexHosting:PrometheusExporter |
Expone métricas detalladas del servidor y JVM |
Distancia de Renderizado
La distancia de renderizado es el principal factor para el uso de RAM. Recomendamos limitar la distancia máxima de renderizado a 12 chunks (384 bloques) tanto para rendimiento como para jugabilidad.
Para comparación: Los servidores de Minecraft tienen por defecto 10 chunks (160 bloques). El valor por defecto de Hytale de 384 bloques es aproximadamente equivalente a 24 chunks de Minecraft. Espera mayor uso de RAM con la configuración por defecto - ajusta este valor basándote en tu cantidad esperada de jugadores.
Arquitectura Multiservidor
Hytale soporta mecanismos nativos para enrutar jugadores entre servidores. No se requiere un reverse proxy como BungeeCord.
Referencia de Jugadores
Transfiere un jugador conectado a otro servidor. El servidor envía un paquete de referencia conteniendo el host de destino, puerto y un payload opcional de 4KB. El cliente abre una nueva conexión al destino y presenta el payload durante el handshake.
PlayerRef.referToServer(@Nonnull final String host, final int port, @Nullable byte[] data)
⚠️ Advertencia de Seguridad: El payload se transmite a través del cliente y puede ser manipulado. Firma los payloads criptográficamente (ej. HMAC con un secreto compartido) para que el servidor receptor pueda verificar la autenticidad.
Casos de uso: Transferir jugadores entre servidores de juego, pasar contexto de sesión, controlar acceso detrás de matchmaking.
Próximamente: Array de destinos intentados en secuencia para conexiones de fallback.
Redirección de Conexión
Durante el handshake de conexión, un servidor puede rechazar al jugador y redirigirlo a un servidor diferente. El cliente se conecta automáticamente a la dirección redirigida.
PlayerSetupConnectEvent.referToServer(@Nonnull final String host, final int port, @Nullable byte[] data)
Casos de uso: Balanceo de carga, enrutamiento regional de servidores, forzar conexiones primero al lobby.
Fallback de Desconexión
Cuando un jugador es desconectado inesperadamente (caída del servidor, interrupción de red), el cliente se reconecta automáticamente a un servidor de fallback preconfigurado en lugar de volver al menú principal.
Casos de uso: Devolver jugadores a un lobby después de una caída del servidor de juego, mantener el engagement durante reinicios.
Próximamente: Implementación de paquete de fallback esperada dentro de semanas después del lanzamiento de Early Access.
Construir un Proxy
Construye servidores proxy personalizados usando Netty QUIC. Hytale usa QUIC exclusivamente para comunicación cliente-servidor.
Las definiciones de paquetes y la estructura del protocolo están disponibles en HytaleServer.jar:
com.hypixel.hytale.protocol.packets
Usa estas para decodificar, inspeccionar, modificar o reenviar tráfico entre clientes y servidores backend.
Detalles Varios
Argumentos de Línea de Comandos de Java
Consulta la Guía de los Parámetros JVM Más Importantes para temas como -Xms y -Xmx para controlar el tamaño del heap.
Actualizaciones de Protocolo
El protocolo de Hytale usa un hash para verificar la compatibilidad cliente-servidor. Si los hashes no coinciden exactamente, la conexión es rechazada.
Limitación Actual: Cliente y servidor deben estar en la misma versión exacta del protocolo. Cuando lanzamos una actualización, los servidores deben actualizarse inmediatamente o los jugadores en la nueva versión no pueden conectarse.
Próximamente: Tolerancia de protocolo permitiendo diferencia de ±2 versiones entre cliente y servidor. Los operadores de servidores tendrán una ventana para actualizar sin perder conectividad de jugadores.
Archivos de Configuración
Los archivos de configuración (config.json, permissions.json, etc.) se leen al iniciar el servidor y se escriben cuando ocurren acciones en el juego (ej. asignar permisos vía comandos). Los cambios manuales mientras el servidor está corriendo probablemente serán sobrescritos.
Artefacto de Maven Central
El jar de HytaleServer será publicado en Maven Central para usarse como dependencia en proyectos de modding.
<dependency>
<groupId>com.hypixel.hytale</groupId>
<artifactId>Server</artifactId>
</dependency>
Los detalles exactos incluyendo versionado están pendientes para el lanzamiento. Consulta los recursos de la comunidad de modding para la información más reciente sobre el uso de estas dependencias.
Adiciones Futuras
Descubrimiento de Servidores y Minijuegos
Un catálogo de descubrimiento accesible desde el menú principal donde los jugadores pueden buscar y encontrar servidores y minijuegos. Los operadores de servidores pueden optar por aparecer en el catálogo para promocionar su contenido directamente a los jugadores.
Requisitos para el Listado
| Requisito | Descripción |
|---|---|
| Directrices para Operadores de Servidores | Los servidores deben adherirse a las directrices de operadores y estándares de la comunidad |
| Auto-Clasificación | Los operadores deben clasificar con precisión el contenido de su servidor. Las clasificaciones potencian el filtrado de contenido y controles parentales |
| Aplicación | Los servidores que violen su auto-clasificación están sujetos a acciones de aplicación según las políticas de operadores de servidores |
Verificación del Conteo de Jugadores
Los conteos de jugadores mostrados en el descubrimiento de servidores se recopilan de la telemetría de clientes en lugar de datos reportados por el servidor. Esto previene la falsificación de conteos y asegura que los jugadores puedan confiar en los números que ven al buscar servidores. Los servidores aún podrán reportar un conteo de jugadores no verificado a usuarios que agregaron el servidor fuera del descubrimiento de servidores.
Grupos (Parties)
Un sistema de grupos que permite a los jugadores agruparse y permanecer juntos a través de transferencias de servidor y colas de minijuegos.
Integración con el descubrimiento de servidores:
Los jugadores pueden buscar servidores con su grupo y unirse juntos. Los requisitos de tamaño de grupo y restricciones son visibles antes de unirse, para que los grupos sepan de antemano si pueden jugar juntos.
Este sistema proporciona la base para una experiencia social fluida donde los amigos pueden moverse a través del ecosistema de Hytale como grupo sin coordinación manual.
Sistema de Pagos Integrado
Una pasarela de pago integrada en el cliente que los servidores pueden usar para aceptar pagos de jugadores. Opcional pero recomendado.
Beneficios para operadores de servidores:
- Acepta pagos sin manejar detalles de pago o construir infraestructura
- Transacciones procesadas a través de un sistema seguro y confiable
Beneficios para jugadores:
- No necesitas visitar sitios web externos
- Todas las transacciones son seguras y rastreables
- La información de pago permanece dentro del ecosistema de Hytale
Soporte de Registros SRV
Los registros SRV permiten a los jugadores conectarse usando un nombre de dominio (ej. play.ejemplo.com) sin especificar un puerto, con DNS manejando la búsqueda para resolver la dirección real del servidor y puerto.
Estado Actual: No soportado. En evaluación.
Por qué no está disponible aún:
No existe una librería C# probada en batalla para resolución de registros SRV. Las opciones existentes requieren incorporar una implementación completa de cliente DNS, lo que introduce complejidad innecesaria y potenciales riesgos de estabilidad, o carecen de la preparación para producción que requerimos para una característica central de networking.
Estamos evaluando alternativas y revisaremos esto cuando exista una solución adecuada.
Endpoints de API de Primera Parte
Los servidores autenticados tendrán acceso a endpoints oficiales de API para datos de jugadores, versionado y operaciones de servidor. Estos endpoints reducen la necesidad de servicios de terceros y proporcionan datos autoritativos directamente desde Hytale.
Endpoints Planificados
| Endpoint | Descripción |
|---|---|
| Búsqueda UUID ↔ Nombre | Resolver nombres de jugadores a UUIDs y viceversa. Soporta búsquedas individuales y masivas |
| Versión del Juego | Consultar versión actual del juego, versión del protocolo y verificar actualizaciones |
| Perfil de Jugador | Obtener datos del perfil del jugador incluyendo cosméticos, renders de avatar e información de perfil pública |
| Telemetría del Servidor | Reportar estado del servidor, conteo de jugadores y metadatos para integración con el descubrimiento |
| Reportar | Reportar jugadores por violaciones de ToS |
| Pagos | Procesar pagos usando nuestra pasarela de pago integrada |
Bajo Consideración
| Endpoint | Descripción |
|---|---|
| Sanciones Globales | Consultar si un jugador tiene sanciones a nivel de plataforma (no baneos específicos del servidor) |
| Lista de Amigos | Obtener la lista de amigos de un jugador (con permisos apropiados) para características sociales |
| Suscripciones a Webhooks | Suscribirse a notificaciones push para eventos como cambios de nombre de jugador o actualizaciones de sanciones |
Objetivos de Diseño
- Límites de tasa generosos: Endpoints masivos y respuestas compatibles con caché para soportar grandes redes
- Acceso autenticado: Todos los endpoints requieren autenticación del servidor para prevenir abuso
- API versionada: Contratos estables con ventanas de deprecación para cambios disruptivos