SERVER / DEPLOYMENT
Guía de Configuración del Servidor
Guía completa sobre TOKEN, variables de entorno, visibilidad en el lobby y ejemplos de despliegue.
Esta guía reúne las variables de entorno, el proceso de solicitud de TOKEN y las reglas de visibilidad en el lobby que más se usan al abrir un servidor. El contenido se actualizó con la versión más reciente del documento de configuración del servidor y se adaptó para su lectura en la web.
1. Descripción general
Este manual explica cómo configurar e iniciar tu propio servidor del juego mediante variables de entorno en un archivo .env. Después de iniciarse, el servidor se registra automáticamente en el lobby oficial, y tu configuración determina su tipo y su visibilidad.
Atención: las variables del tipo indicador de presencia, como GAME_HOST, GAME_LINK y GAME_AUTO_RESTART, se consideran activadas con solo existir. El resto de variables de tipo bool / booleano debe establecerse explícitamente en true/false o 1/0.
2. Preparación
- Debes usar un servidor en la nube, como Alibaba Cloud, Tencent Cloud, AWS o un proveedor similar, o bien una VPS.
- Obligatorio: solicita un TOKEN de autorización del juego válido (
GAME_TOKEN) al equipo oficial. Sin TOKEN no es posible abrir un servidor público. - Prepara un servidor con una IP pública fija que responda a ping y sea accesible por red; de lo contrario, la revisión será rechazada.
- Instala Docker y Docker Compose (recomendado), o asegúrate de que el entorno de ejecución del servidor cumpla con los requisitos del juego.
- Al solicitar el TOKEN, envía el correo a
team@nextindie.cn.
Plantilla de solicitud del servidor · Acuerdo de Licencia y Servicios del Juego
I. Información básica del solicitante
UID de usuario: [Indica el ID de usuario de tu cuenta del juego]
IP pública vinculada al servidor: [Indica la IP pública fija y única; debe responder a ping]
Región física del servidor: [Por ejemplo: Asia, Norteamérica]
Resumen del propósito de la solicitud y del tamaño de la comunidad: [Por ejemplo: servidor personal, servidor para una comunidad específica de jugadores]
II. Importante: compromiso de operación no lucrativa y aviso de cumplimiento
Como operador responsable de este servidor, he leído detenidamente el capítulo 10 del Acuerdo de Licencia y Servicios del Juego y asumo solemnemente los siguientes compromisos legales:
Naturaleza puramente no lucrativa: Este servidor mantendrá una naturaleza estrictamente no lucrativa.
Solo se permiten donaciones gratuitas: Este servidor solo aceptará donaciones voluntarias, gratuitas y sin contraprestación alguna por parte de jugadores que apoyan a la comunidad. Todos los fondos recibidos podrán utilizarse únicamente para cubrir los costes directos del alojamiento físico, como el alquiler del hardware del servidor, el ancho de banda de red y la protección contra DDoS.
Se prohíbe vender activos y valores del juego: Este servidor nunca venderá, de forma directa, indirecta o encubierta, criaturas o dinosaurios virtuales del juego, datos de personaje, niveles, bonificaciones de atributos, armas, equipo, materiales de construcción, monedas del juego ni ningún objeto virtual que afecte al equilibrio del juego.
Se prohíbe el intercambio encubierto por privilegios: Este servidor nunca utilizará fórmulas como sorteos para donantes, regalos por patrocinio, personajes o criaturas personalizados de pago, ni barreras o cuotas de pago para entrar al servidor o a la comunidad como condición de intercambio por objetos virtuales o privilegios dentro del juego.
Se prohíben los mecanismos de apuesta: Ni este servidor ni sus comunidades asociadas, como grupos de QQ o servidores de Discord, establecerán cajas ciegas, sorteos, ruletas ni mecanismos de devolución con naturaleza de apuesta relacionados con recursos virtuales del juego.
III. Aislamiento de privacidad y conocimiento de seguridad
Reconozco y acepto que la recopilación oficial de la IP de este servidor y la generación de un TOKEN son necesarias para la seguridad antitrampas y la ejecución del contrato, y que este tratamiento de datos cumple con la normativa de privacidad.
Me comprometo a custodiar adecuadamente el TOKEN de autorización emitido y a no transferirlo, alquilarlo ni divulgarlo a terceros de ninguna forma. Asumo toda la responsabilidad por las infracciones derivadas de una mala gestión del TOKEN o de la configuración de la IP.
Entiendo que enviar este correo de solicitud de apertura de servidor al equipo oficial constituye mi firma digital y mi aceptación incondicional de todos los términos legales del Acuerdo de Licencia y Servicios del Juego. Si incumplo cualquiera de las líneas rojas anteriores, el equipo oficial podrá revocar el TOKEN de autorización, incluir la IP en una lista negra y aplicar un bloqueo de cuenta en toda la plataforma y un bloqueo del dispositivo sin previo aviso. 3. Todos los parámetros configurables
3.1 Base y autorización
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_NAME | Cadena | The Mesozoic | Nombre del servidor que aparece en la lista de salas |
GAME_ANNOUNCEMENT | Cadena | Ninguno | Anuncio del servidor que se muestra en una ventana emergente cuando entra un jugador. Admite saltos de línea con \n |
GAME_PASSWORD | Cadena | Ninguno | Contraseña del servidor; si está vacío significa que no hay contraseña |
GAME_TOKEN | Cadena | Ninguno | TOKEN de autorización del juego. Debe solicitarse al equipo oficial. Sin un TOKEN válido, el servidor no puede registrarse como público. Consulta la Sección 4. |
GAME_AUTO_RESTART | Indicador de presencia | Ninguno | Si esta variable existe, se activa el reinicio automático del servidor para mejorar la estabilidad en ejecuciones prolongadas |
GAME_ADMINS | Cadena | Ninguno | IDs de usuario de los administradores normales del servidor, separados por comas, por ejemplo 100001,100002,100003. |
Anuncios multilingües (GAME_ANNOUNCEMENT_XX)
El servidor selecciona automáticamente el anuncio según el idioma del cliente de cada jugador. Se admiten 16 sufijos de idioma: ZH (简体中文), ZHTW (繁體中文), EN (English), JA (日本語), KO (한국어), PT (Português), PTBR (Português Brasil), RU (Русский), ES (Español), FR (Français), DE (Deutsch), AR (العربية), TH (ไทย), VI (Tiếng Việt), ID (Bahasa Indonesia), TR (Türkçe).
Configúralos en .env como GAME_ANNOUNCEMENT_XX=contenido, p. ej. GAME_ANNOUNCEMENT_EN=Welcome to the server!. Si no hay un anuncio para un idioma específico, se usa GAME_ANNOUNCEMENT como valor predeterminado.
Tras editar los anuncios, el propietario del servidor puede ejecutar /reloadAnnounce para recargarlos en caliente sin reiniciar el servidor.
3.2 Red y tipo de conexión
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_IP | Cadena | 127.0.0.1 | Dirección IP de bind del servidor. Si quieres aceptar conexiones desde internet, indica la IP pública correcta |
GAME_HOST | Indicador de presencia | Ninguno | Solo para modo LAN. Cuando está definido, el servidor detecta automáticamente la IP local de la máquina e ignora GAME_IP. El servidor pasa a ser LAN y no aparece en la lista pública |
GAME_PORT | Entero | 26666 | Puerto de escucha del servidor (UDP). Asegúrate de abrirlo en el cortafuegos |
GAME_MAX_PLAYERS | Entero | 64 | Número máximo de jugadores conectados al mismo tiempo |
GAME_GLOBAL | Booleano | true | Indica si el servidor se registrará en la lista global de salas. Normalmente conviene mantenerlo en true |
GAME_PUBLIC | Booleano | false | Ponlo en true para marcar el servidor como público. Si permanece en false, el servidor sigue siendo privado o visible solo para amigos |
GAME_LINK | Indicador de presencia | Ninguno | Fuerza al servidor a ser un servidor privado (PRIVACY). Define esta variable si quieres una sala privada con contraseña, opcionalmente junto con GAME_PASSWORD |
GAME_NODE | Cadena | AS | Nodo regional mostrado a los jugadores como referencia de latencia. Valores válidos: AS (Asia), CN (China), NA (Norteamérica), SA (Sudamérica), EU (Europa), ME (Oriente Medio) |
Prioridad y combinación de tipos de conexión
Si se define GAME_LINK, el servidor será un servidor privado (PRIVACY). Incluso si GAME_PUBLIC está en true, seguirá existiendo solo como sala privada con contraseña.
Si ninguna de esas variables especiales está activada y GAME_PUBLIC está en true junto con un GAME_TOKEN válido, el servidor se registra como servidor autorizado (AUTHORIZE). Esta es la forma principal en que los jugadores normales alojan servidores públicos.
Si GAME_PUBLIC está en false, o el TOKEN no es válido, el servidor no aparece en la lista pública.
3.3 Reglas del juego
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_DEAD_TIME | Entero (segundos) | 1800 | Tiempo que tarda un cadáver en descomponerse y desaparecer |
GAME_START_GROWTH | Decimal | 0.1 | Valor inicial de crecimiento para un personaje nuevo (0.0 ~ 1.0) |
GAME_MAX_GROWTH | Decimal | 1.0 | Valor máximo de crecimiento de un personaje |
GAME_SPEED_GROWTH | Decimal | 1.0 | Multiplicador de velocidad de crecimiento |
GAME_TEAM | Entero | 6 | Tamaño máximo del grupo |
GAME_CHILD | Entero | 0 | Cantidad máxima de crías que un jugador puede tener al mismo tiempo. 0 significa sin límite |
GAME_SAFE | Entero (segundos) | 0 | Duración de la protección al aparecer para nuevos personajes |
GAME_LEARN | Booleano | false | Permite aprender genes. Subregla: GAME_MAX_LEARN (entero, predeterminado 1, 0 = ilimitado) establece el máximo de genes que un personaje puede aprender |
GAME_MAX_LEARN | Entero | 1 | Número máximo de genes que un personaje puede adquirir mediante aprendizaje. 0 = ilimitado (aún limitado por el límite innato de espacios de genes del personaje). Subregla de GAME_LEARN |
GAME_CHILD_ATTRIBUTE_INHERIT | Booleano | false | Permite que las crías hereden atributos de los padres. Subreglas: GAME_CHILD_SIZE_INHERIT_MAX_MULTIPLIER y GAME_CHILD_ATTR_INHERIT_MAX_MULTIPLIER limitan el crecimiento máximo |
GAME_CHILD_SIZE_INHERIT_MAX_MULTIPLIER | Flotante | 1.5 | Multiplicador máximo de tamaño corporal heredable respecto al tamaño base de la especie. Subregla de GAME_CHILD_ATTRIBUTE_INHERIT |
GAME_CHILD_ATTR_INHERIT_MAX_MULTIPLIER | Flotante | 1.5 | Multiplicador máximo de atributos heredables (salud/ataque/defensa/velocidad/consumo) respecto a la referencia de la especie. Subregla de GAME_CHILD_ATTRIBUTE_INHERIT |
GAME_HABITAT | Booleano | false | Activa el sistema de captura de hábitats. Establézcalo en true para permitir que los jugadores capturen hábitats en el mapa y reciban mejoras de crecimiento |
GAME_SAME_RACE_TEAM_LIMIT | Booleano | false | Al activarla, todas las especies solo pueden formar equipo con su misma especie. Esta regla es más estricta que el límite solo para carnívoros y se comprueba primero |
GAME_ALLOW_MINIMAP | Booleano | true | Interruptor maestro del minimapa en el servidor. Usa false para ocultar el minimapa a todos los jugadores, aunque su ajuste local esté activado |
GAME_FREEZE_TIME | Booleano | false | Congela el avance de día/noche y estaciones del juego. No pausa mecánicas de supervivencia basadas en tiempo real, como los cambios de recursos del personaje |
GAME_START_TIME_HOUR | Entero | -1 | Define la hora inicial del juego después de que el servidor arranca y carga el guardado del clima. 0–23 son válidos; -1 o valores fuera de rango desactivan la regla |
GAME_SERVER_WHITELIST | Cadena | Vacío | Lista de userIds permitidos para entrar, separados por comas, punto y coma, espacios o saltos de línea. Se combina con Database/whitelist.txt; si ambas fuentes están vacías, la whitelist se desactiva. Desarrolladores, propietario del servidor y conexión local Host están exentos, y solo afecta a nuevas entradas |
GAME_EVOL | Booleano | true | Permite que los huevos se conviertan en huevos de evolución. Si se desactiva, los huevos siempre permanecen en la especie actual |
GAME_PK | Booleano | false | Ponlo en true para permitir que los jugadores inicien duelos |
GAME_ALT_TURN | Booleano | true | Permite girar en el sitio |
GAME_MALE_REBIRTH | Booleano | false | Permite renacer usando personajes machos |
GAME_SINGLE_BREED | Booleano | false | Permite incubación en solitario sin pareja |
GAME_ERA_REBIRTH | Booleano | false | Permite renacimiento entre generaciones |
GAME_DOWNGRADE_REBIRTH | Booleano | false | Permite renacer con retroceso del crecimiento |
GAME_LEARN | Booleano | false | Permite aprender genes |
GAME_CHILD_ATTRIBUTE_INHERIT | Booleano | false | Define si las crías heredan atributos de los padres (esto puede provocar crecimiento ilimitado de estadísticas) |
3.3.1 Equilibrio de población de especies
Esta regla está desactivada de forma predeterminada. Al activarla, limita cuántos jugadores pueden estar vivos al mismo tiempo con cada especie. Cuando se alcanza el límite, no se puede elegir esa especie temporalmente; sí se permite reconectarse con la especie que ya estás jugando. Solo cuentan los personajes vivos de jugadores, no las criaturas salvajes, las parejas ni la descendencia. Las pantallas relacionadas, como selección de especie, ADN, incubación y renacimiento, muestran la cantidad actual y el límite.
| Configuración de la regla | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_SPECIES_BALANCE | Booleano | false | Interruptor general de la regla. Ponlo en true para activar el equilibrio de población de especies |
GAME_SPECIES_RANK_CAPS | Cadena | S3:0|S4:22|S5:20|S6:18|S7:16|S8:14|S9:12|S10:10|S11:8|S12:6 | Subregla de límites por nivel, con el formato Snivel:límite y entradas separadas por |. La base es un servidor de 100 jugadores; los límites escalan según el máximo de jugadores y se redondean hacia arriba. El intervalo es de 0 a 10000; solo S3 puede tener valor 0 para quedar sin límite. Los niveles omitidos usan sus valores predeterminados |
GAME_SPECIES_CAP_OVERRIDES | Cadena | Vacío | Subregla de límite fijo por especie, con el formato IDdeespecie:límite y entradas separadas por |, por ejemplo trex:5|spino:8. El límite fijo prevalece sobre el límite por nivel y no cambia con el tamaño del servidor; cada límite debe estar entre 1 y 10000 |
En un servidor de 100 jugadores, los límites predeterminados son: S3 sin límite; de S4 a S12, respectivamente, 22, 20, 18, 16, 14, 12, 10, 8 y 6 plazas. En servidores de otros tamaños, los límites se ajustan según el máximo de jugadores y se redondean hacia arriba. El servidor puede ajustar los límites por nivel o fijar un límite distinto para una especie concreta; ese límite individual no cambia con el tamaño del servidor. Las especies iniciales del modo Evolución están exentas.
3.3.2 Reglas de realismo
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_REALISM | Booleano | false | Activa el preset completo de realismo PVE: desactiva PVP, usa la dificultad Realismo y activa la hostilidad por dieta, las reglas ecológicas, los duelos, los genes berserk, los ataques predeterminados de IA en PVE, la protección de nidos, la protección de invitaciones, la protección de huevos y todas las reglas de realismo. Las variables relacionadas pueden sobrescribir el preset |
GAME_REALISM_PK | Booleano | No definido | Sobrescribe la regla de duelos del preset de Realismo; usa true para permitir que los jugadores inicien duelos |
GAME_REALISM_CRAZY | Booleano | No definido | Sobrescribe la regla de genes berserk del preset de Realismo; usa true para activar los genes berserk |
GAME_INVITE_PROTECTION | Booleano | false | Activa la protección tras invitaciones de equipo o incubación; ninguno puede iniciar ataques durante la protección, pero los duelos confirmados y la autodefensa válida no se ven afectados |
GAME_EGG_PROTECTION | Booleano | false | Al activarla, otros jugadores no pueden destruir ni comer directamente tus huevos; los huevos dentro de un nido se destruyen normalmente cuando el nido recibe daño o es destruido |
GAME_REALISM_CARNIVORE_RACE_TEAM_LIMIT | Booleano | false | Los carnívoros solo pueden formar equipo con su misma especie; herbívoros, omnívoros y acuáticos no tienen esta limitación |
GAME_REALISM_CORPSE_NEARBY_SAN_PENALTY | Booleano | false | Matar a otro jugador cerca de un cadáver aplica una penalización de SAN a los carnívoros |
GAME_REALISM_PVE_DIET_HOSTILE | Booleano | false | En PVE, las criaturas de dietas distintas son hostiles por defecto y pueden atacar sin duelo |
GAME_PVE_AI_DEFAULT_ATTACK | Booleano | false | Al activarla, los jugadores y las criaturas IA salvajes pueden atacarse en PVE sin duelo; se mantienen las restricciones de protección, equipo, compañero, dueño y parentesco |
GAME_REALISM_HERBIVORE_PICKUP_CORPSE | Booleano | false | Controla si los herbívoros pueden cargar cadáveres; en el código actual, true bloquea la carga |
GAME_REALISM_HERBIVORE_CORPSE_FEAR | Booleano | false | Los herbívoros acumulan estrés dentro del rango de detección de cadáveres |
GAME_REALISM_DYNAMIC_TEAM_WEIGHT | Booleano | false | Activa la regla «Peso dinámico del equipo»: calcula el peso según el nivel de la criatura e impide nuevas incorporaciones al alcanzar el límite total |
GAME_REALISM_REVENGE | Booleano | false | Tras morir, el jugador no puede iniciar un ataque contra quien lo mató durante la protección; la autodefensa sigue permitida |
GAME_REALISM_CARCASS_CLAIM | Booleano | false | Los carnívoros reclaman el cadáver tras matar a un jugador; no pueden iniciar ataques hasta comerlo o abandonarlo |
GAME_REALISM_NEST | Booleano | false | Activa la regla «Protección de nidos»: impide destruir nidos ajenos; las reglas PVE existentes también pueden prohibirlo de forma independiente |
GAME_REALISM_KILL_COOLDOWN | Booleano | false | Tras una muerte, bloquea un nuevo ataque iniciado contra el mismo jugador o dispositivo; ambos equipos reciben además un enfriamiento menor |
GAME_REALISM_BAITING | Booleano | false | Los jugadores que permanecen cerca de un jugador comiendo, un nido completo o un hábitat ocupado provocan al dueño; la parte protegida puede contraatacar por tiempo limitado |
GAME_REALISM_TEAM_LEAVE | Booleano | false | Tras salir o ser expulsado de un equipo, bloquea temporalmente los ataques iniciados contra antiguos compañeros |
GAME_REALISM_HUNGER_HUNT | Booleano | false | Cuando el hambre baja del umbral, un carnívoro puede cazar una vez fuera de las restricciones de dieta PVE; debe comer hasta el umbral de reinicio para repetir |
GAME_REALISM_RACE_CHAT_ISOLATION | Booleano | false | El chat mundial y cercano solo es visible para jugadores de la misma especie; el chat de equipo no cambia |
GAME_DISABLED_RACES | Cadena | Vacío | IDs de especie en inglés separados por comas, por ejemplo trex,mapu,velo. Las especies indicadas no se pueden crear, elegir ni incubar |
GAME_WORLD_CHAT_COOLDOWN_SECONDS | Entero (segundos) | 15 | Espera esta cantidad de segundos entre mensajes mundiales; usa 0 para desactivar el enfriamiento. Los desarrolladores, propietarios del servidor y administradores están exentos de este enfriamiento |
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_REALISM_CORPSE_NEARBY_SAN_MULTIPLIER | Decimal | 3 | Multiplicador de SAN que se descuenta por matar a un jugador cerca de un cadáver |
GAME_REALISM_CORPSE_NEARBY_RANGE | Decimal (metros) | 50 | Rango de detección de las reglas relacionadas con cadáveres |
GAME_REALISM_MAX_TEAM_WEIGHT | Entero | 12 | Valor de la regla «Peso máximo del equipo»; el límite absoluto de miembros sigue determinado por GAME_TEAM |
GAME_INVITE_PROTECTION_SECONDS | Entero (segundos) | 1800 | Duración de la protección mutua contra ataques iniciados tras una invitación de equipo o incubación |
GAME_REALISM_REVENGE_SECONDS | Entero (segundos) | 1800 | Duración de la protección para que la víctima no inicie un ataque contra quien la mató |
GAME_REALISM_KILL_SECONDS | Entero (segundos) | 1500 | Enfriamiento antes de que el asesino pueda iniciar otro ataque contra el mismo jugador o dispositivo |
GAME_REALISM_TEAM_LEAVE_SECONDS | Entero (segundos) | 900 | Enfriamiento antes de que quien salió pueda iniciar un ataque contra un antiguo compañero |
GAME_REALISM_CARCASS_ABANDON_RANGE | Decimal (metros) | 200 | El abandono comienza cuando todos los reclamantes se alejan del cadáver más que esta distancia |
GAME_REALISM_CARCASS_ABANDON_SECONDS | Decimal (segundos) | 60 | La reclamación se libera después de permanecer alejados del cadáver durante este tiempo |
GAME_REALISM_BAITING_RANGE | Decimal (metros) | 30 | Radio de detección de provocación al comer y defender el nido |
GAME_REALISM_BAITING_THRESHOLD | Decimal (segundos) | 15 | Tiempo continuo dentro del rango de detección de provocación antes de conceder permiso de contraataque (compartido por provocación al comer, defensa de nido y defensa de hábitat) |
GAME_REALISM_BAITING_PERMISSION_SECONDS | Decimal (segundos) | 60 | Tiempo durante el que la parte protegida puede iniciar un contraataque tras la provocación (compartido por provocación al comer, defensa de nido y defensa de hábitat) |
GAME_REALISM_HUNGER_HUNT_THRESHOLD | Proporción decimal | 0.2 | Por debajo del 20% de saciedad, el carnívoro obtiene un permiso de caza fuera de las restricciones de dieta PVE |
GAME_REALISM_HUNGER_HUNT_RESET_THRESHOLD | Proporción decimal | 0.8 | Tras usar el permiso, la saciedad debe volver al 80% para obtenerlo de nuevo |
Orden del preset de realismo: GAME_REALISM=true aplica primero la configuración completa y después GAME_REALISM_*, GAME_PVE_AI_DEFAULT_ATTACK, GAME_INVITE_PROTECTION, GAME_EGG_PROTECTION y GAME_INVITE_PROTECTION_SECONDS sobrescriben las reglas correspondientes. Sin el preset, los interruptores de realismo y protección usan sus valores predeterminados normales.
3.4 IA y ecosistema
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_MAX_AI | Booleano | true | Define si se generan criaturas del ecosistema controladas por IA. Si se desactiva, en el mapa solo habrá jugadores |
GAME_AI_MATE | Booleano | false | Define si los jugadores pueden vincularse con IA salvajes y si las parejas IA pueden seguir y ayudar |
GAME_AI_MATE_ATTRACTION | Booleano | true | Define si se puede atraer a un candidato salvaje del sexo opuesto junto a un nido propio terminado Lv.3+. También se debe activar GAME_AI_MATE; usa false para desactivar solo la atracción desde el nido |
3.5 Genes y dominio
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_CRAZY | Booleano | true | Permite genes berserk |
GAME_GENE_SKILLFUL | Booleano | true | Activa el sistema de dominio de genes |
GAME_KILL_SKILLFUL | Booleano | false | Define si matar a otros jugadores otorga dominio genético |
3.6 Modos de juego (elige uno)
| Variable | Tipo | Descripción |
|---|---|---|
GAME_MODE_SANDBOX | Booleano | Ponlo en true para activar el modo sandbox, permitiendo elegir especies libremente y desactivando los genes berserk |
GAME_MODE_EVOL | Booleano | Ponlo en true para activar el modo evolución, centrado solo en la jugabilidad de evolución |
GAME_MODE_PRIMEVAL | Booleano | Ponlo en true para activar el modo primeval, que habilita genes berserk y renacimiento con retroceso mientras desactiva el dominio genético |
Activa solo un modo. Si defines varios, el último sobrescribirá a los anteriores.
3.7 Ajustes de dificultad
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_SIMPLE | Booleano | false | Ponlo en true para activar la dificultad simple: se activan el renacimiento generacional, el renacimiento con retroceso y la incubación individual, mientras que la incubación por invitación se desactiva |
GAME_NORMAL | Booleano | false | Ponlo en true para activar la dificultad normal: solo se activa el renacimiento generacional |
GAME_HARD | Entero | 0 | Nivel de dificultad. Cuanto mayor sea el valor, más difícil será, y sobrescribe las dos opciones booleanas anteriores |
3.8 PVP / PVE (elige uno)
| Variable | Tipo | Descripción |
|---|---|---|
GAME_PVP | Booleano | Ponlo en true para activar el modo PVP (los jugadores pueden atacarse entre sí) |
GAME_PVE | Booleano | Ponlo en true para activar el modo PVE (se desactiva el daño entre jugadores, pero se permiten duelos) |
Elige solo uno de estos modos. No se recomienda definir ambos a la vez.
3.9 Mapa
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_MAP | Cadena | Tag del primer mapa integrado del juego | Identificador del mapa, por ejemplo Oasis. Consulta la lista oficial de mapas para ver los valores disponibles |
3.10 Social y chat
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_WORLD_CHAT | Booleano | true | Estado inicial del canal de chat global. Ponlo en false para impedir que todos los jugadores usen el chat global por defecto; el anfitrión aún podrá cambiarlo durante la ejecución con /worldchat |
3.11 Carga de MOD
| Variable | Tipo | Predeterminado | Descripción |
|---|---|---|---|
GAME_MODS | Cadena | Ninguno | Nombres de MOD que deben cargarse, separados por comas, por ejemplo ModA,ModB. Asegúrate de que esos MOD estén instalados correctamente en el directorio Data/Mods del servidor |
Sintaxis de los parámetros booleanos
Usa true/false o 1/0 para todas las variables booleanas, por ejemplo GAME_PVP=true y GAME_WORLD_CHAT=false. Las variables del tipo indicador de presencia surten efecto en cuanto existen.
3.12. Auditoría y notificaciones de Discord
3.12.1 Controles generales
| Variable | Tipo | Por defecto | Descripción |
|---|---|---|---|
GAME_AUDIT_ENABLED | Booleano | false | Habilitar el sistema de auditoría; cuando está en false, todos los demás interruptores de auditoría se ignoran |
GAME_AUDIT_LOCAL_ENABLED | Booleano | false | Escribir eventos de auditoría en el registro local del servidor; cuando es true, los eventos se envían a Discord y se conservan localmente |
GAME_AUDIT_RETENTION_DAYS | Entero | 7 | Días de retención de los registros de auditoría antes de su eliminación automática |
GAME_AUDIT_CHAT_ENABLED | Booleano | false | Auditar mensajes del chat mundial y de equipo |
GAME_AUDIT_PVP_ENABLED | Booleano | false | Auditar eventos de combate PVP |
GAME_AUDIT_ADMIN_ENABLED | Booleano | false | Auditar comandos y acciones de administrador |
GAME_AUDIT_CONNECTION_ENABLED | Booleano | false | Auditar conexiones de jugadores y notificaciones de inicio del servidor |
GAME_AUDIT_DEATH_ENABLED | Booleano | false | Auditar eventos de muerte de jugadores |
3.12.2 URLs de Webhook de Discord
Consejo de seguridad: cada URL es un secreto. No las incluyas en capturas de pantalla, commits de Git ni mensajes públicos. Cinco canales separados facilitan la gestión de reportes, pero si lo prefieres, puedes usar la misma URL en las cinco variables.
| Variable | Tipo | Descripción |
|---|---|---|
GAME_AUDIT_WEBHOOK_CHAT | Cadena | URL del webhook de Discord para mensajes de chat |
GAME_AUDIT_WEBHOOK_PVP | Cadena | URL del webhook de Discord para eventos PVP |
GAME_AUDIT_WEBHOOK_ADMIN | Cadena | URL del webhook de Discord para acciones de administrador |
GAME_AUDIT_WEBHOOK_CONNECTION | Cadena | URL del webhook de Discord para conexiones y notificaciones de inicio del servidor |
GAME_AUDIT_WEBHOOK_DEATH | Cadena | URL del webhook de Discord para eventos de muerte |
La notificación de inicio se envía a través de GAME_AUDIT_WEBHOOK_CONNECTION e incluye el nombre del servidor, mapa, cantidad máxima de jugadores, reglas activas (en inglés) y nombres/versiones de los mods. No se incluyen IP, puerto ni claves. El código cumple con los límites de velocidad de Discord (lee Retry-After en errores 429 y reintenta).
# Auditoría y notificaciones de Discord
GAME_AUDIT_ENABLED=true
# Escribir también los eventos de auditoría en el registro local del servidor
GAME_AUDIT_LOCAL_ENABLED=false
# Días de retención de registros de auditoría
GAME_AUDIT_RETENTION_DAYS=7
# Interruptores por categoría: chat / PVP / admin / conexión / muerte
GAME_AUDIT_CHAT_ENABLED=true
GAME_AUDIT_PVP_ENABLED=true
GAME_AUDIT_ADMIN_ENABLED=true
GAME_AUDIT_CONNECTION_ENABLED=true
GAME_AUDIT_DEATH_ENABLED=true
# URL del webhook para mensajes de chat
GAME_AUDIT_WEBHOOK_CHAT=https://discord.com/api/webhooks/...
# URL del webhook para eventos PVP
GAME_AUDIT_WEBHOOK_PVP=https://discord.com/api/webhooks/...
# URL del webhook para acciones de administrador
GAME_AUDIT_WEBHOOK_ADMIN=https://discord.com/api/webhooks/...
# URL del webhook para conexiones y notificación de inicio del servidor
GAME_AUDIT_WEBHOOK_CONNECTION=https://discord.com/api/webhooks/...
# URL del webhook para eventos de muerte
GAME_AUDIT_WEBHOOK_DEATH=https://discord.com/api/webhooks/... 3.13. Gestión del Bot de Discord (/md)
Esta función es solo para servidores alojados por la comunidad. Está desactivada por defecto; el servidor del juego no se conectará a Discord a menos que se establezcan las variables de entorno a continuación.
Variables de entorno
| Variables de entorno | Variable | Tipo | Por defecto | Descripción |
|---|---|---|---|---|
GAME_DISCORD_BOT_ENABLED | Booleano | false | Activar el Bot de Discord (interruptor principal) | |
GAME_DISCORD_BOT_TOKEN | Cadena | Ninguno | Token del Bot de Discord (secreto — no compartir ni hacer capturas) | |
GAME_DISCORD_APPLICATION_ID | Cadena | Ninguno | ID de la Aplicación de Discord | |
GAME_DISCORD_SERVER_ID | Cadena | Ninguno | ID del servidor Discord objetivo (clic derecho en el servidor → Copiar ID del servidor) | |
GAME_DISCORD_ADMIN_ROLE_IDS | Cadena | Ninguno | IDs de roles de administrador, separados por comas (clic derecho en el rol → Copiar ID del rol) |
Pasos de configuración de Discord
- Abre el Discord Developer Portal, crea una Aplicación y ve a la página Bot para crear un Bot y copiar su Token.
- En la página OAuth2 → URL Generator, selecciona
botyapplications.commands, luego invita al Bot a tu servidor Discord objetivo. - Activa el Modo Desarrollador en Discord, haz clic derecho en el servidor objetivo y elige "Copiar ID del servidor"; este es tu
GAME_DISCORD_SERVER_ID. - Crea o elige un rol de administrador, haz clic derecho en ese rol y elige "Copiar ID del rol"; este es tu
GAME_DISCORD_ADMIN_ROLE_IDS. Usa comas para varios roles. - Rellena las cinco variables de la tabla anterior en el entorno de tu servidor comunitario y reinicia el servidor. El Bot registrará los comandos
/mden ese servidor Discord.
Comandos de Discord (/md)
| Comando | Descripción |
|---|---|
/md list [type] [page] | Listar registros de penalización activos: band, mute o all |
/md check user_id | Consultar el estado actual de baneo y silencio de un jugador |
/md ban user_id seconds reason | Banear y expulsar a un jugador en línea |
/md unban user_id | Levantar un baneo |
/md mute user_id seconds reason | Silenciar a un jugador en el servidor |
/md unmute user_id | Levantar el silencio de un jugador |
/md clear confirm:true | Solo rol de propietario: limpiar todos los registros BAND y MUTE del servidor (requiere confirmación explícita) |
Todas las respuestas de Discord son visibles solo para el administrador que ejecutó el comando. Los comandos operan solo en el band.db del servidor comunitario actual y no modifican las penalizaciones a nivel de plataforma.
Los administradores en el juego también pueden usar /bandList, /muteList, /bandCheck, /muteCheck, /band, /deband, /mute y /unmute. Solo el propietario del servidor o el desarrollador pueden usar /clearBans CONFIRM. El comando de Discord /md clear confirm:true no usa la configuración de roles — solo la cuenta de Propietario real del Servidor Discord puede ejecutarlo.
4. Tipos de servidor y visibilidad en el lobby
| Tipo de servidor | Variables de entorno requeridas | Características |
|---|---|---|
| Servidor LAN (LAN) | Define GAME_HOST | Solo pueden conectarse jugadores de la misma red local. El servidor no aparece en el lobby público |
| Servidor privado (PRIVACY) | Define GAME_LINK, opcionalmente junto con GAME_PASSWORD. No requiere TOKEN | Para entrar se necesita contraseña. El servidor sigue siendo privado por defecto, aunque tus amigos pueden conectarse directamente por otros medios. No aparece en la lista pública del lobby |
| Servidor autorizado (AUTHORIZE) | Pon GAME_PUBLIC en true y proporciona un GAME_TOKEN válido. No definas GAME_HOST, GAME_LINK ni GAME_OFFICIAL | Esta es la forma más común de alojar servidores públicos. El servidor aparece en el lobby marcado como autorizado, justo por debajo de los servidores oficiales |
Recordatorios clave
- Si quieres que tu servidor aparezca en el lobby y pueda ser encontrado por todos los jugadores, deben cumplirse las tres condiciones: 1) poner
GAME_PUBLICentrue, 2) proporcionar unGAME_TOKENválido y 3) no activarGAME_HOSTniGAME_LINK. - Si quieres una sala privada con contraseña, puedes usar
GAME_LINKjunto conGAME_PASSWORD. Este tipo de servidor no aparece en la lista pública del lobby. - Un servidor público sin TOKEN válido será bloqueado durante el registro e informará que el TOKEN del servidor es inválido o ha caducado.
- Tras iniciarse, el servidor envía un heartbeat al lobby cada 90 segundos para seguir listado. Si los heartbeats se detienen, el servidor se elimina de la lista, pero los jugadores ya conectados no se desconectan.
5. Ejemplos de configuración
5.1 Servidor en modo sandbox
# TOKEN de autorización del juego (solicítalo al equipo oficial; obligatorio para servidores públicos)
GAME_TOKEN=
# Nombre del servidor
GAME_NAME=The Sandbox
# IP pública (127.0.0.1 solo sirve para pruebas locales; usa tu IP pública real para que otros se conecten)
GAME_IP=203.0.113.10
# Puerto del servidor (UDP)
GAME_PORT=26666
# Tiempo de desaparición del cadáver (segundos)
GAME_DEAD_TIME=600
# Cantidad de crías: 0 = desactivado, 1 = una, 2 = dos, y así sucesivamente
GAME_CHILD=1
# Activar el modo sandbox
GAME_MODE_SANDBOX=true
# Registrar en la lista global de servidores
GAME_GLOBAL=true
# Número máximo de jugadores
GAME_MAX_PLAYERS=50
# Nodo del servidor (solo indica la región a los jugadores; sin efecto funcional)
GAME_NODE=AS
# Servidor público
GAME_PUBLIC=true
# Permitir el dominio de genes
GAME_GENE_SKILLFUL=true
# Permitir ganar dominio al matar
GAME_KILL_SKILLFUL=true
# Permitir el aprendizaje de genes
GAME_LEARN=true
# Dificultad del juego (cuanto mayor, más difícil)
GAME_HARD=1
# Sin huevos de evolución (los huevos siempre permanecen en la especie actual)
GAME_EVOL=false
# Nombre del mapa
GAME_MAP=Oasis
# Permitir pareja de IA
GAME_AI_MATE=true 5.2 Servidor en modo evolución
# TOKEN de autorización del juego (solicítalo al equipo oficial; obligatorio para servidores públicos)
GAME_TOKEN=
# Nombre del servidor
GAME_NAME=The Evolution
# IP pública (127.0.0.1 solo sirve para pruebas locales; usa tu IP pública real para que otros se conecten)
GAME_IP=203.0.113.10
# Puerto del servidor (UDP)
GAME_PORT=26666
# Tiempo de desaparición del cadáver (segundos)
GAME_DEAD_TIME=1200
# Cantidad de crías: 0 = desactivado, 1 = una, 2 = dos, y así sucesivamente
GAME_CHILD=1
# Activar el modo evolución
GAME_MODE_EVOL=true
# Permitir que los huevos contengan huevos de evolución (NO es el interruptor del modo evolución)
GAME_EVOL=true
# Activar el modo primeval
GAME_MODE_PRIMEVAL=true
# Registrar en la lista global de servidores
GAME_GLOBAL=true
# Número máximo de jugadores
GAME_MAX_PLAYERS=50
# Nodo del servidor (solo indica la región a los jugadores; sin efecto funcional)
GAME_NODE=AS
# Servidor público
GAME_PUBLIC=true
# Dificultad del juego (cuanto mayor, más difícil)
GAME_HARD=0
# Permitir pareja de IA
GAME_AI_MATE=true