Il est important de savoir que Minecraft fonctionne sous forme de ticks.

En théorie un tick est exécuté toutes les 1 seconde. Lorsqu'il est est exécuté, différentes actions vont être effectuées : redstone, commande blocs, mobs, et bien d'autres.

Les rapports de timings permettent de mesurer le tick de son serveur et ainsi visualiser rapidement l'origine de mauvaises performances.

Créer son rapport de timings

Vous pouvez facilement générer un rapport de timings pour votre serveur sur les plateformes Spigot, Paper et SpongeForge.

Pour cela, il vous suffit de suivre le tutoriel créer un rapport de timings.

Vérification du tick de son serveur

Dans le meilleur des cas, votre serveur arrivera maximum à exécuter 20 ticks dans une seconde (soit 0,05s par tick). C'est le tickrate optimal.

Votre serveur à des problèmes de performances ?

Si par exemple un tick prend 0,09s sur votre serveur, il ne pourra qu'exécuter que 11 ticks par secondes.

Ainsi, plus votre tick par seconde (TPS) est proche de 20 plus votre serveur est performant et stable :

  • 19 tps et + : votre serveur est parfait.
  • 15-19 tps : bonne performance de la part du serveur.
  • 11-15 tps : le lag est remarquable mais le jeu est jouable.
  • 8-11 tps : serveur désagréable à jouer.
  • 1-8 tps : serveur insupportable à jouer (il ne tardera pas à crasher).

Comprendre le résultat

Mon serveur utilise Spigot

Normalement, une fois que vous avez généré le rapport, vous devriez avoir quelque chose de ce style là (sans les cadres de couleurs) : 

La partie 1 (en Bleu) est composé de pas mal d'informations importantes :

  • Total : le nombre de temps totale que le serveur a mit à gérer les events (on verra ce que c'est par la suite).
  • Sample time : depuis combien de temps la commande timings analyse le serveur.
  • Spigot version : la version de Spigot ainsi que entre parenthèse la version de minecraft pour laquelle est destinée cette version de Spigot (ici 1.12.2).
  • Average entities : le nombre d'entités actifs (qui bougent/attaquent, etc...) puis le nombre d'entités au total sur le serveur, les deux représentent la moyenne depuis que la commande timings est activé.
  • Average players : nombre moyen de joueurs actifs sur le serveur.
  • Average TPS : nombre de ticks par secondes (voir "Notion importantes" présentes au début de ce tuto).
Les parties 2 & 4 (Verte et rouge) sont deux parties contenants des events (les parties en jaunes que je détail ensuite ). La partie verte (la 2eme) contient tous les events liés à Minecraft directement (les mobs, la génération de la map, les ticks, etc....)

La partie rouge (la 4eme) contient tous les events liés aux plugins du serveur. Chaque plugin à sa propre catégorie, ils sont triés de ceux qui prennent le plus de performance à ceux qui en prennent le moins. De base tous les events ne sont pas affichés, en appuyant sur les boutons "Show rest..." vous affichez le reste des events.

Pour les parties 3 (en jaunes) : Je n’en ai créer que 3 dans l'image, mais chaque ligne comprise dans les zones 2 et 4 est un event donnant des informations :

Mon serveur utilise PaperSpigot / SpongeForge

Normalement, une fois que vous avez généré le rapport, vous devriez avoir quelque chose de ce style là (sans les cadres de couleurs) :

La partie 1 en rouge contient les informations de base du serveur (la RAM MAX, version etc...).

La partie 2 en jaune est un graphique qui donne des informations de base (TPS (voir Informations importantes pour plus d'infos) , entités sur le serveur, nombre de joueurs, etc...).

La partie 3 en vert est la partie vraiment utile, elle permet de changer ce qui est affiché dans la partie 4. Les 3 boutons qui nous sont vraiment utile sont :

  • Timings : affiche des informations pour chaque event du serveur.
  • Regions : affiche les regions (la map est divisé en region de 512x512) avec toutes les entités présentes dedans, c'est très utile pour voir quel partie de la map cause problème à votre serveur. Je n'expliquerai pas en détail car cette partie est assez simple à comprendre.
  • Plugins : affiche combien chaque plugin utilise (je conseil d'utiliser cette option pour voir quels plugins font lags.
La partie 4 en bleu est globalement la même quand vous sélectionnez timings ou plugins la seul différence c'est que dans "plugins" les events sont triés par plugins.

En cliquant sur un event, vous pouvez voir l'ensemble des events qu'ils contients (oui un event peut contenir d'autres events). 

Vous pouvez ainsi chercher l'event exacte qui cause des problèmes de performance. 

Ainsi l'event : Minecraft::Full Server Tick contient tous les events. Ici le "Minecraft" indique que l'event est celui de minecraft de base. 

Si l'event vient du plugin Citizens2, il y aura écrit : Citizens2::NomdeLevent.

A droite du nom de chaque event, il y a pas mal d'informations mais là seul dont vous voulez vous préocuper est : avg( 0,42ms per - (0,42 est un exemple, ça varie) qui montre le temps en moyenne que l'event prend pour 1 tick.

On sait grâce à Information importantes de ce tutoriel que 1 tick doit valoir 50ms Plus un event prend de ms, plus un tick prendra longtemps à s'exécuter entièrement, il vous faut donc chercher les events qui prennent trop de ms.

Utiliser les résultats

Une fois que vous savez d'où viennent les lags, vous pouvez essayer de les résoudre :

  • en contactant le créateur du plugin.
  • en supprimant le plugin problématique.
  • en supprimant les entités / blocs problématiques.
  • en modifiant les configurations.
  • en cherchant sur internet.
  • en demandant conseil sur le Discord ou le forum communautaire de mTxServ.

Des fois la solution peut simplement être d'upgrade le serveur.