Guía de Optimización de Servidores de Minecraft

Guía de Optimización de Servidores de Minecraft

En esta guía aprenderás cómo optimizar tu servidor de Minecraft. Te presentaremos una optimización completa, diseñada específicamente para servidores que interactúan con todos los elementos de Minecraft, la cual puede mejorar el rendimiento hasta 50 veces.

⚙️ Software del servidor

La selección de un buen núcleo ( archivo del servidor .jar ) puede hacer una gran diferencia en el rendimiento y configuración en un servidor. Entre las opciones disponibles en el mercado existen núcleos recomendados para usar y otros que deben ser evitados.

✅ Software recomendado

Paper: Es el software de servidor más popular y con menos incompatibilidades, enfocado en mejorar el rendimiento. También incluye algunas opciones que ayudan a mejorar las mecánicas de Minecraft Vanilla.

Purpur: Es un fork (derivado) de Pufferfish, que se enfoca en ofrecerle al dueño del servidor más libertad en la configuración de funciones del juego, con decenas de nuevas configuraciones y características, y con un pequeño costo de rendimiento.

❌ Software no recomendado

Vanilla/CraftBukkit/Spigot: Se consideran obsoletos en cuanto a rendimiento en comparación con otros softwares de servidor más modernos y accesibles, como Paper.

Mohist: Posee comportamiento malicioso, rompe mecánicas y es muy inestable. Motivos por los cuales no deberías usarlo

Núcleos de paga - exclusivos: Estos núcleos suelen ser bastante costosos, y si encuentras alguno que sea muy barato, es posible que sea una estafa. Considera optar por uno gratuito en su lugar.


☕ Configuración de Java

Los servidores de Minecraft utilizan Java para funcionar. Por lo general, utilizamos un Script para ejecutar el núcleo del servidor. Un Script básico se ve así : java -Xms1G -Xmx1G -jar server.jar. No obstante, podemos utilizar ciertos parámetros, conocidos como Flags (banderas), para optimizarlo aún más. Puedes generar automáticamente un Script .sh (Linux/Mac) o .bat (Windows) con las flags ideales para tu servidor desde la aplicación web Flags.sh

Para mayor información de estas flags haz click aquí.


📝 Configuraciones optimizadas

Al momento de iniciar nuestro servidor de Minecraft, este tendrá diferentes archivos de configuración con parámetros predeterminados. A continuación, se muestran opciones para los archivos según el tipo de núcleo, junto con una breve descripción de lo que hace.

Recuerda que puedes encontrar las configuraciones más facil en tu editor de texto y navegador usando la herramienta de búsqueda con el atajo de teclado CTRL + F.

📄 server.propertiesnetwork-compression-threshold
  • Recomendado:
    • Servidor independiente: 512
    • BungeeCord: 1
  • Descripción: Esta opción captura el tamaño de un paquete antes de que el servidor lo comprima. Establecerlo en valores mayores puede ahorrar algunos recursos a costa de un mayor consumo de ancho de banda, y establecerlo a 1 lo desactiva. Si tu servidor es una network con un proxy en la misma máquina o datacenter (con menos de 2ms de ping), deshabilitarlo (1) tendrá beneficios, ya que usualmente las redes internas pueden manejar el tráfico sin comprimir.
simulation-distance
  • Recomendado: 4
  • Descripción: Esta opción indica la distancia a la que deben estar los chunks alrededor de un jugador para que sean tickeados por el servidor. Básicamente, la distancia a la que sucederán cosas alrededor del jugador. Esto incluye hornos que estén encendidos, cultivos que estén creciendo, etc. Esta es una opción que, por lo general, se debe mantener baja (alrededor de 3 o 4) debido a la existencia de view-distance (opción que permite cargar más chunks sin tickearlos, permitiendo así ver más chunks sin afectar al rendimiento).
view-distance
  • Recomendado: 7

  • Descripción: Esta es la distancia en chunks que serán enviados al jugador, similar al no-tick-view-distance de Paper.

    La distancia de renderizado total será igual al mayor de los valores entre simulation-distance y view-distance. Por ejemplo, si simulation-distance está en 4 y view-distance en 12, la distancia total que será enviada al jugador (cliente) va a ser de 12 chunks.

📄 bukkit.ymlspawn-limits
  • Recomendado:

    spawn-limits:
      monsters: 20
      animals: 5
      water-animals: 2
      water-ambient: 2
      water-underground-creature: 3
      axolotls: 3
      ambient: 1
  • Descripción: Valores menores significan menos mobs. Menos mobs es menos lag en general, pero debes intentar balancearlo para mantener la calidad de juego, encontrar mobs en un mundo es una gran parte del juego. Con per-player-mob-spawns esos números básicamente representan 1:1 del límite de mobs en la categoría dada por cada jugador, así que la matemática de esto es cantidadJugadores*límite donde “cantidadJugadores” es la cantidad de jugadores conectados actual en el servidor.

chunk-gc.period-in-ticks
  • Recomendado: 400
  • Descripción: Esto decide qué tan frecuentemente los chunks desocupados son descargados. Valores menores significará menos chunks siendo tickeados, pero ir a valores muy bajos solamente estresará más a tu CPU porque tendrá que estar cargando y descargando chunks constantemente.
ticks-per
  • Recomendado:

    ticks-per:
      monster-spawns: 10
      animal-spawns: 400
      water-spawns: 400
      water-ambient-spawns: 400
      water-underground-creature-spawns: 400
      axolotl-spawns: 400
      ambient-spawns: 400
  • Descripción: Esto establece que tan frecuentemente en ticks (20 ticks equivale a 1 segundo) el servidor intenta aparecer ciertos tipos de entidades vivas. Mobs de agua/ambiente no necesitan aparecer cada tick debido a que usualmente no son asesinados rápidamente. Para los monstruos comunes: Incrementar un poco el tiempo entre apariciones no debería impactar en la tasa de apariciones, ni tampoco en granjas de mobs.

📄 spigot.ymlview-distance
  • Recomendado: Valor por defecto
  • Descripción: Cambiar esta opción provocará que se sobrescriba el valor que se le asigna en server.properties, es por ello que es preferible no cambiarla para así tener todo en un mismo lugar.
item-despawn-rate
  • Recomendado: Valores menores, dependiendo de la situación.
  • Descripción: Una de las razones por las que no son necesarios plugins como ClearLagg es esta opción, ya que te permite remover objetos del suelo en un tiempo determinado de ticks. El valor por defecto son 5 minutos, pero dependiendo del tipo de servidor que tengas debes bajarlo.
arrow-despawn-rate
  • Recomendado: 300
  • Descripción: Similar a item-despawn-rate, pero para las flechas lanzadas en general. Aquí lo estaríamos estableciendo en 15 segundos (300 ticks) en vez de 60 segundos (1200 ticks).
nerf-spawner-mobs
  • Recomendado: true
  • Descripción: Cuando está activado, los mobs de los spawners no tendrán IA (no nadarán, atacarán o se moverán). Esto beneficia bastante a los TPS en servidores con granjas de mobs, pero también arruina la mecánica de éstas; en caso de que se quiera activar, también se recomienda activar spawner-nerfed-mobs-should-jump para así no arruinar tanto la mecánica.
mob-spawn-range
  • Recomendado: 3
  • Descripción: Algunas personas discuten que establecer esto a uno menos que simulation-distance es bueno (pero jamás más alto que el valor hard en despawn-ranges), pero valores menores como 2 o 3 te permitirán disminuir la cantidad de mobs en spawn-limits. Esta opción principalmente lo que hará será hacer creer al jugador que hay más mobs alrededor suyo.
merge-radius
  • Recomendado:

    merge-radius:
      item: 3.5
      exp: 4.0
  • Descripción: Esto decidirá la distancia entre los objetos que serán juntados, reduciendo la cantidad de items tickeando en el suelo. Juntarlos llevará a la ilusión de que los objetos han desaparecido, al combinarse en uno solo.

entity-activation-range
  • Recomendado:

    entity-activation-range:
      animals: 16
      monsters: 24
      raiders: 48
      misc: 8
      water: 8
      villagers: 16
      flying-monsters: 48
      villagers-work-immunity-after: 100
      villagers-work-immunity-for: 20
      villagers-active-for-panic: true
      tick-inactive-villagers: false
      wake-up-inactive:
        animals-max-per-tick: 2
        animals-every: 1200
        animals-for: 40
        monsters-max-per-tick: 4
        monsters-every: 400
        monsters-for: 60
        villagers-max-per-tick: 1
        villagers-every: 600
        villagers-for: 20
        flying-monsters-max-per-tick: 1
        flying-monsters-every: 200
        flying-monsters-for: 60
  • Descripción: Entidades pasado este rango serán menos tickeadas frecuentemente. Evita establecer esto muy bajo o podrías romper las mecánicas de los mobs.

tick-inactive-villagers
  • Recomendado: false
  • Descripción: Desactivar esto evita que el servidor haga tick a los aldeanos que están fuera del rango de activación (esto ya es desactivado anteriormente en entity-activation-range). Las tareas de los aldeanos en versiones 1.14+ son muy pesadas.
entity-tracking-range
  • Recomendado:

    entity-tracking-range:
      players: 48
      animals: 48
      monsters: 48
      misc: 32
      other: 64
  • Descripción: Esta es la distancia en bloques desde la cual serán vistas las entidades. Si este valor está muy bajo, puede provocar que los mobs aparezcan de la nada cerca de un jugador. En la mayoría de los casos, es recomendable que esté en un valor menor que entity-activation-range.

hopper-transfer
  • Recomendado: 8
  • Descripción: Tiempo en ticks que las tolvas esperarán para mover un ítem. Aumentar esto ayudará a mejorar el rendimiento si hay muchos tolvas en tu servidor, pero romperá sistemas de ordenamiento de objetos y también relojes de redstone hechos con tolvas.
hopper-check
  • Recomendado: 8
  • Descripción: Tiempo en ticks entre que las tolvas buscan un ítem sobre ellas o en el inventario sobre ellas. Aumentar esto ayudará a mejorar el rendimiento si hay muchas tolvas en tu servidor, pero romperá los relojes de redstone que usen tolvas y también sistemas de ordenamiento de ítems que usen el flujo del agua.
📄 paper-world.ymlenvironment.optimize-explosions
  • Recomendado: true
  • Descripción: Algoritmo más rápido de explosión sin ningún impacto notable en la jugabilidad.
chunks.max-auto-save-chunks-per-tick
  • Recomendado: 8
  • Descripción: Hace más lento el guardado de mundo incremental al repartir la tarea en el tiempo incluso más, para así tener un mejor rendimiento promedio. Probablemente quieras establecer esto en un valor un tanto mayor si tienes más de 20 - 30 jugadores; si el guardado incremental no logra terminar a tiempo, entonces Bukkit automáticamente guardará los chunks restantes de una vez y comenzará el proceso nuevamente.
entities.spawning.per-player-mob-spawns
  • Recomendado: true
  • Descripción: Por defecto los límites de mob están contados para el servidor entero, lo que significa que los mobs probablemente terminen distribuidos de forma desigual entre los jugadores conectados. Esta opción habilita los límites de mobs por jugador, haciendo así que cada jugador pueda obtener aproximadamente la misma cantidad de mobs independiente de la cantidad de jugadores en línea. Habilitar esta opción también te permite disminuir el valor por defecto de spawn-limits en bukkit.yml, ya que éstos están optimizados para límite de mobs para todo el servidor.
collisions.max-entity-collisions
  • Recomendado: 2
  • Descripción: Sobrescribe la misma opción con el mismo nombre de spigot.yml. Limita la cantidad de colisiones que una entidad calculará al mismo tiempo. Establecer esto en el valor optimizado te permitirá mantener la habilidad del jugador para empujar mobs. Establecer esto a 0 completamente desactivaría las colisiones, haciendo que empujar mobs/jugadores sea imposible.
misc.update-pathfinding-on-block-update
  • Recomendado: false
  • Descripción: Desactivar esto resultará en que los mobs hagan una menor búsqueda de rutas, aumentando así el rendimiento, pero se verán como si fueran con retraso ya que solamente actualizarán su ruta cada 5 ticks (0.25 segundos).
tick-rates.grass-spread
  • Recomendado: 4
  • Descripción: Tiempo en ticks (20 ticks equivalen a 1 segundo) en el que el servidor intenta esparcir el pasto/micelio. No afecta a la jugabilidad en la mayoría de los casos.
misc.redstone-implementation
  • Recomendado: ALTERNATE-CURRENT
  • Descripción: Reemplaza el sistema de redstone con versiones alternativas más rápidas que reducen las actualizaciones redundantes de bloques, disminuyendo las operaciones que el servidor tiene que realizar. Usar una implementación alternativa puede introducir inconsistencias menores con redstones técnico, pero las ganancias en cuanto a rendimiento definitivamente valen la pena. Una implementación de redstone alternativa también puede arreglar inconsistencias causadas por CraftBukkit. La implementación ALTERNATE-CURRENT está basado en el mod Alternate Current. Para más información sobre este algoritmo, visita el enlace anteriormente mencionado.
environment.nether-ceiling-void-damage-height
  • Recomendado: 127
  • Descripción: Si esta opción es mayor que 0, los jugadores arriba del nivel de axis y establecido serán lastimados como si estuvieran cayendo al vacío. Esto prevendrá que los jugadores usen el techo del nether. El techo vanilla del nether es de 128 bloques de altura, por lo que este valor deberías colocarlo en 127. Si modificaste la altura del nether de alguna manera, debes colocarlo usando la siguiente fórmula: altura_nether - 1.
armor-stands.do-collision-entity-lookups
  • Recomendado: false
  • Descripción: Desactiva que los soportes de armadura (armor stands) tengan colisiones, es decir, no podrán ser empujados por entidades.
chunks.prevent-moving-into-unloaded-chunks
  • Recomendado: true
  • Descripción: Previene que los jugadores entren a chunks no cargados (debido al lag), lo cual causa más lag. Establecer esto a true los devolverá a su última ubicación segura en caso de que suceda esto.
tick-rates.container-update
  • Recomendado: 1
  • Descripción: Cuando un inventario o cofre es abierto, Minecraft actualiza la vista cada tick por defecto para mostrar apropiadamente los cambios. Puedes disminuir qué tan frecuentemente se actualiza el inventario, pero no uses valores más altos que 3 o 4 ya que podría causar molestias visuales.
collisions.fix-climbing-bypassing-cramming-rule
  • Recomendado: true
  • Descripción: Arregla una forma de evadir el límite de mobs en un solo bloque, que se basa en colocar mobs en distintos niveles. De esta forma evitamos que se junten grandes cantidades de entidades en un solo bloque.
armor-stands.tick
  • Recomendado: false
  • Descripción: La única cosa que hace que los soportes de armaduras sean tickeados es para verificar si están siendo empujadas por agua. Desactivando esto, eres libre de liberar algunos procesos de tick y solamente perder una mecánica menor. Ten en cuenta que hay algunos plugins que dependen de esto y por lo tanto pueden haber incompatibilidades, pero solamente en casos muy específicos.
entities.spawning.non-player-arrow-despawn-rate
  • Recomendado: 20
  • Descripción: El tiempo en ticks (20 ticks equivale a 1 segundo) en el que las flechas disparadas por mobs desaparecen. En este caso desaparecerán en 1 segundo tras ser disparadas.
entities.spawning.creative-arrow-despawn-rate
  • Recomendado: 20
  • Descripción: El tiempo en ticks (20 ticks equivale a 1 segundo) en el que las flechas disparadas por jugadores en creativo desaparecen. En este caso desaparecerán en 1 segundo tras ser disparadas.
entities.behavior.spawner-nerfed-mobs-should-jump
  • Recomendado: true
  • Descripción: Hace que los mobs de spawners salten a pesar de ser nerfeados en la opción nerf-spawner-mobs, haciendo así que la mecánica de las granjas de spawners no se vea tan afectada sin afectar al rendimiento.
tick-rates.mob-spawner
  • Recomendado: 2
  • Descripción: Determina qué tan frecuente los spawners deben hacer tick para calcular el área disponible y aparecer nuevas entidades en el mundo. Esto ayuda bastante a servidores con grandes granjas con spawners.
treasure-maps.enabled
  • Recomendado: false
  • Descripción: Generar mapas del tesoro es extremadamente caro en temas de rendimiento y puede colgar un servidor si la estructura que está intentando localizar está fuera del mundo generado. Solamente es seguro activar esto si has pre-generado tu mundo y establecido el borde de Minecraft Vanilla.
treasure-maps.find-already-discovered
  • Recomendado:
find-already-discovered:
	loot-tables: true
	villager-trade: true
  • Descripción: El valor por defecto forzará a los mapas generados recientemente a buscar estructuras inexploradas que usualmente están fuera del terreno generado. Establecer esto al valor recomendado hace que los mapas puedan llevar a estructuras ya descubiertas. villager-trade es para mapas intercambiados por aldeanos y loot-tables se refiere a todo lo que genere un botín dinámicamente, como cofres del tesoro, cofres de mazmorra, etc.
entities.behavior.disable-chest-cat-detection
  • Recomendado: true
  • Descripción: Desactiva la mecánica que previene abrir un cofre cuando un gato está encima, algo bastante inútil y tierno al mismo tiempo.
chunks.entity-per-chunk-save-limit
  • Recomendado:

    entity-per-chunk-save-limit:
    	arrow: 16
    	dragon_fireball: 3
    	egg: 8
    	ender_pearl: 8
    	experience_bottle: 3
    	experience_orb: 16
    	eye_of_ender: 8
    	fireball: 8
    	firework_rocket: 8
    	llama_spit: 3
    	potion: 8
    	shulker_bullet: 8
    	small_fireball: 8
    	snowball: 8
    	spectral_arrow: 16
    	trident: 16
    	wither_skull: 4
  • Descripción: Limita la cantidad de entidades del tipo especificado que pueden ser guardadas en un chunk. Puedes colocar cualquier entidad aquí (con su respectiva ID). Ajusta el límite a tu gusto. El valor recomendado para todos los proyectiles es de alrededor de 10. Ten en cuenta que esta opción no está diseñada para prevenir grandes granjas de mobs.

entities.spawning.despawn-ranges
  • Recomendado:

    despawn-ranges:
      monster:
        soft: 30
        hard: 56
      creature:
        soft: 30
        hard: 56
      ambient:
        soft: 30
        hard: 56
      axolotls:
        soft: 30
        hard: 56
      underground_water_creature:
        soft: 30
        hard: 56
      water_creature:
        soft: 30
        hard: 56
      water_ambient:
        soft: 30
        hard: 56
      misc:
        soft: 30
        hard: 56
  • Descripción: Reduce el rango de limpieza de mobs en segundo plano y permite que más aparezcan en áreas de tráfico de jugadores. Esto reduce el impacto en la jugabilidad por las apariciones reducidas de bukkit.yml. Valores ajustados para simulation-distance en 4.

entities.spawning.alt-item-despawn-rate
  • Recomendado:

    alt-item-despawn-rate:
      enabled: true
      items:
        cobblestone: 300
    		netherrack: 300
        sand: 300
        red_sand: 300
        gravel: 300
        dirt: 300
        grass: 300
        pumpkin: 300
        melon_slice: 300
        kelp: 300
        bamboo: 300
        sugar_cane: 300
        twisting_vines: 300
        weeping_vines: 300
        oak_leaves: 300
        spruce_leaves: 300
        birch_leaves: 300
        jungle_leaves: 300
        acacia_leaves: 300
        dark_oak_leaves: 300
    		mangrove_leaves: 300
        cactus: 300
        diorite: 300
        granite: 300
        andesite: 300
        scaffolding: 600
  • Descripción: Esta opción te permitirá desaparecer algunos objetos más rápido que en la tasa de desaparición por defecto. Puedes añadir todos los objetos que quieras.

hopper.disable-move-event
  • Recomendado: true
  • Descripción: InventoryMoveItemEvent no es lanzado a menos que tengas un plugin activamente escuchando ese evento. Esto significa que deberías colocar esto en true solamente si no tienes plugins que modifiquen mecánicas de las tolvas o no te importa que no puedan escuchar este evento. Un ejemplo de plugin que utiliza esta mecánica sería los de protecciones.
anticheat.anti-xray.enabled
  • Recomendado: true
  • Descripción: Esconde menas de jugadores con X-ray. Para una configuración detallada de esta función, revisa los ajustes recomendados de Stonar96.
chunks.delay-chunk-unloads-by
  • Recomendado: 10s
  • Descripción: Retrasa la descarga de chunks en el tiempo especificado (en segundos). Valores muy altos pueden resultar en muchos chunks cargados al mismo tiempo aumentando así el consumo, por lo que se recomienda tocar esta opción con cautela. Áreas que tengan actividad permanente se recomienda tenerlas siempre cargadas. Esto ayudará a reducir la carga de tu servidor al no tener que estar cargando y descargando chunks todo el tiempo.
tick-rates
  • Recomendado:

    behavior:
      villager:
        validatenearbypoi: 60
        acquirepoi: 120
    sensor:
      villager:
        secondarypoisensor: 80
        nearestbedsensor: 80
        villagerbabiessensor: 40
        playersensor: 40
        nearestlivingentitysensor: 40
  • Descripción: Este valor decide qué tan frecuentemente comportamientos en específico y sensores son accionados en ticks (20 ticks es igual a 1 segundo). acquirepoi para los aldeanos parece ser el comportamiento más pesado, así que ha sido aumentado considerablemente. Puede ser disminuido en caso de que cause problemas con aldeanos intentando encontrar su camino.

hopper.ignore-occluding-blocks
  • Recomendado: true
  • Descripción: Determina si las tolvas transferirán ítems si se encuentran dentro de bloques ocluidos, por ejemplo, una tolva en un carrito dentro de un bloque de arena. Habilitar esto aumentará el rendimiento cuando las tolvas tengan que verificar dónde depositar objetos.
📄 purpur.ymluse-alternate-keepalive
  • Recomendado: true
  • Descripción: Puedes habilitar el sistema alternativo de keepalive de Purpur, para que así los jugadores con mala conexión no sean sacados del servidor tan frecuentemente.
aggressive-towards-villager-when-lagging
  • Recomendado: false
  • Descripción: Desactivar esto causará que los zombies dejen de atacar aldeanos si el servidor está bajo la cantidad de TPS establecida en lagging-threshold de purpur.yml.
entities-can-use-portals
  • Recomendado: false
  • Descripción: Esta opción desactivará el uso de portales de parte de toda entidad que no sea un jugador. Esto evita que las entidades carguen chunks mientras van cambiando de mundos, cosa que es manejada en el thread principal.
disable-treasure-searching
  • Recomendado: true
  • Descripción: Evita que los delfines busquen estructuras de forma similar a los mapas del tesoro.
teleport-if-outside-border
  • Recomendado: true
  • Descripción: Te permite teletransportar al jugador al punto de aparición del mundo si por algún motivo llegasen a salir del borde del mundo. Esto es de ayuda, debido a que el borde del mundo vanilla se puede evitar y el daño que causa al jugador puede ser mitigado de esta manera.
villager.lobotomize
  • Recomendado: true
  • Descripción: Los aldeanos lobotomizados no tienen AI y solamente cambian sus productos de vez en cuando. Habilitar esto convertirá en aldeanos lobotomizados a aquellos aldeanos que no puedan encontrar una ruta para su camino (se encuentran atrapados). Liberarlos debería hacer que dejen de estar lobotomizados.
📄 pufferfish.ymlmax-loads-per-projectile
  • Recomendado: 8
  • Descripción: Especifica la cantidad máxima de chunks que un proyectil puede cargar durante su existencia. Disminuir esto va a reducir la cantidad de chunks cargados por proyectiles, pero causará problemas con tridentes, perlas de ender, etc.
max-tick-freq
  • Recomendado: 20
  • Descripción: Este valor determina qué tan frecuentemente la entidad más lejana será tickeada. Aumentar este valor puede aumentar el rendimiento de las entidades lejanas, pero puede romper granjas y nerfear el comportamiento de mobs.
activation-dist-mod
  • Recomendado: 7
  • Descripción: Este valor define qué tanto la distancia modifica la frecuencia en la que una entidad es tickeada. El valor recomendado hará que las entidades más lejanas hagan tick menos veces. Disminuir esto puede aumentar el rendimiento, pero puede afectar la interacción de entidades con su entorno y romper granjas.
enable-async-mob-spawning
  • Recomendado: true
  • Descripción: Para habilitar el aparecimiento asincrónico de mobs. Para que esto funcione, la configuración per-player-mob-spawns de Paper debe estar habilitada. Esta opción realmente no hace aparecer a los mobs de forma asincrónica, pero mueve gran parte de la carga que se tiene al aparecer mobs a un hilo distinto. Habilitar esta opción no debería afectar a las mecánicas vanilla del juego.
enable-suffocation-optimization
  • Recomendado: true
  • Descripción: Esta opción optimiza la comprobación de la asfixia (la comprobación para ver si una criatura está dentro de un bloque y si debe recibir daño por asfixia), limitando la tasa de comprobación al tiempo de espera del daño. Esta optimización debería ser imposible de notar, a menos que seas un jugador extremadamente técnico que esté usando una sincronización precisa de ticks para matar a una entidad en el momento exacto por asfixia.
inactive-goal-selector-throttle
  • Recomendado: true
  • Descripción: Acelera el selector de objetivos de la IA en los ticks de las entidades inactivas, haciendo que éstas actualicen su selector de objetivos cada 20 ticks en lugar de cada uno. Puede mejorar el rendimiento en un pequeño porcentaje, y tiene mínimas implicaciones en el juego.
disable-method-profiler
  • Recomendado: true
  • Descripción: Esta opción desactivará algunos perfiles adicionales realizados por el juego. Este perfilado no es necesario para funcionar en producción y puede causar un retraso adicional.

🗺️ Mundo

🚧 Estableciendo un borde del mundo

Asegúrate de establecer un borde para que tus jugadores no generen nuevos chunks, de preferencia el borde del Minecraft vanilla, ya que ayuda a limitar ciertas funcionalidades, como el rango de búsqueda de mapas del tesoro que pueden causar problemas de rendimiento, sin necesidad de plugins.

Es clave de recordar que el mundo normal, el nether y el end tienen bordes de mundo separados que debes establecer en cada mundo. La dimensión del nether es 8 veces más grande que el mundo normal (si no está modificado por un datapack), así que si estableces mal el tamaño, tus jugadores podrían terminar el otro lado del borde del mundo.

Ejemplo de borde

Estableciendo un borde en un díametro de 20000 bloques desde la coordenada 0,0:

/worldborder center 0 0 - Centra el borde del mundo a las coordenadas 0,0.

/worldborder set 20000 - Establece el borde del mundo en un diámetro de 20000 bloques (10000 por 10000).


📊 ¿Cómo medir el rendimiento del servidor?

Después de realizar una optimización, tenemos que monitorear el comportamiento de nuestro servidor para saber que todo esté marchando bien.

⚡ spark

Spark es un plugin que te permite medir el uso de CPU y memoria RAM de tus servidores. Puedes leer cómo usarlo en su wiki. También hay una guía en cómo encontrar las causas de picos de lag aquí.

🔩 mspt

Paper, en versiones recientes, ofrece el comando /mspt que te dirá cuánto tiempo le tomó al servidor calcular los ticks recientes. Si el primer y segundo valor están por debajo de 50, ¡felicidades, tu servidor no tiene lag! Si el tercer valor está sobre 50, entonces eso significa que hubo al menos 1 tick que tomó más tiempo. Esto es complementamente normal y suele pasar en ocasiones, así que no te alteres.

mspt

⏱️ timings

Los timings son una herramienta incorporada en Paper que permite visualizar qué tareas están tomando más tiempo. Es la herramienta más básica para resolver problemas y si necesitas ayuda para solucionar tus problemas de lag, probablemente te pedirán tus timings.

Sin embargo, cuando los timings están activados (Paper los trae activados por defecto), suelen consumir recursos en el hilo principal del servidor. Dicho esto, sería razonable desactivarlos si no están siendo utilizados para ahorrar algunos recursos para otras tareas. Para desactivarlos, simplemente debemos usar el comando /timings off (se activarán nuevamente tras un reinicio) y si se desea que el cambio sea persistente, debemos ajustar el valor de timings.enabled en el archivo paper-global.yml:

timings:
  enabled: false

Para obtener los timings de tu servidor, simplemente activa el comando con /timings on (si están desactivados previamente), espera unos minutos (cuanto más tiempo, mejor, para obtener datos más precisos), ejecuta el comando /timings paste y haz clic en el enlace que se muestra para visualizarlos. Puedes compartir este enlace con otras personas para que te puedan ayudar. Es importante tener cuidado al leer los datos si no estás familiarizado con su interpretación. Aquí hay un video tutorial de Aikar que explica cómo leerlos.

Aviso: Posiblemente los timings sean reemplazados por Spark en las proximas versiónes. Al iniciar un servidor de la 1.20 podemos ver el siguiente mensaje. timings

Sin embargo, este cambio aun se está analizando por los desarolladores. Para mayor información haz click aquí.

Artículos relacionados