Comme de très nombreux jeux vidéo, Minecraft est régi par une grande boucle de programme. À l'image des roues crantées d'une horloge qui sont toutes synchronisées avec leur balancier, l'ensemble des tâches destinées à faire évoluer le jeu sont synchronisées avec cette boucle de programme.
Un cycle de cette boucle de jeu est appelé tick.
Tick de jeu[]
Nombre de ticks écoulés |
Avancement de la journée dans Minecraft |
Durée réelle |
---|---|---|
0 tick | 0 s | 0 s |
1 tick | 3,6 s | 0,05 s |
20 ticks | 1 min 12 s (72 s) | 1 s |
1 000 ticks | 1 h (60 min/3600 s) | 50 s |
1 200 ticks | 1 h 12 min (72 min, 4320 s) | 1 min (60 s) |
12 000 ticks | 12 h (720 min, 43200 s) | 10 min (600 s) |
24 000 ticks | 1 j (24 h, 1440 min, 86400 s) | 20 min (1200 s) |
La boucle principale de Minecraft est lancée 20 fois par seconde et s'exécute donc tous les 0,05 seconde (1/20ème de seconde). Une journée dans le jeu dure exactement 24 000 ticks ou 20 minutes (24000 × 0,05 seconde = 1200 secondes). Le tableau ci-contre présente quelques valeurs permettant de convertir le nombre de ticks en durée écoulée dans Minecraft et en réalité (voir aussi l’article Cycle jour/nuit).
Dans le cas où l'ordinateur exécutant le jeu n'est pas suffisamment puissant pour opérer à cette vitesse, il y aura moins de ticks par seconde. La majorité des actions s'exécutant en fonction de ces ticks, les choses peuvent prendre plus de temps sur un ordinateur trop lent (comme la pousse des cultures par exemple).
À chaque tick, de très nombreux aspects du jeu sont mis à jour (la position des objets animés, le comportement des créatures, les niveaux de vie, de saturation et de faim du joueur, etc.).
D'autres aspects du jeu, comme le rendu graphique, sont indépendants des ticks, et sont gérés à part dans une boucle asynchrone. Le rendu graphique est effectué une fois le tick effectué. C’est pourquoi on peut observer une variation du nombre d’images par seconde (FPS) tout en conservant un nombre de ticks par seconde (TPS) constant (si la synchronisation verticale est désactivée). Cela empêche les performances vidéo d'affecter la mécanique de jeu et vice versa.
La commande /time set <nombre de ticks>
permet de régler manuellement l'heure dans le jeu. Ainsi :
/time set 0
correspond au matin/time set 6000
correspond à midi/time set 12000
correspond au soir/time set 18000
correspond à minuit
Notez qu'un serveur multijoueur peut être « lent » lors du premier démarrage, ce qui est dû en partie au compilateur Java qui prend plus de temps par défaut à compiler le code Java à l'exécution.
Mise à jour des blocs[]
7 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6 | |||||||||||||||
5 | |||||||||||||||
4 | |||||||||||||||
3 | |||||||||||||||
2 | |||||||||||||||
1 | |||||||||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||
1 | |||||||||||||||
2 | |||||||||||||||
3 | |||||||||||||||
4 | |||||||||||||||
5 | |||||||||||||||
6 | |||||||||||||||
7 | |||||||||||||||
Vue du dessus des tronçons mis à jour par rapport à la position du joueur. |
Mise à jour des tronçons[]
À chaque tick de jeu, chaque tronçon (chunk) inclus dans la distance de rendu et dans les 128 blocs de distance autour du joueur est mis à jour.
Ces mises à jour peuvent avoir différents effets :
- s’il y a de l’orage, la foudre peut s’abattre quelque part dans le tronçon (1 chance sur 100 000)
- 1 chance sur 16 qu’une colonne du tronçon soit choisie, et, sur le bloc le plus élevé de cette colonne :
- un certain nombre de blocs compris dans le tronçon seront mis à jour, comme décrit ci-dessous.
Mise à jour des blocs[]
À savoir :
Un tronçon est un ensemble de 16×256×16 blocs (256 étant l’altitude).
Un tronçon est constitué de 16 sections cubiques de 16×16×16 blocs les unes sur les autres.
À chaque tick, dans un rayon de 7 tronçons autour du joueur (15×15 tronçons centrés sur le joueur, soit 225 tronçons), 3 positions de bloc (ou le nombre défini par la règle de jeu randomTickSpeed
) sont choisies aléatoirement dans chaque section (225×16, soit 3 600 sections). Lorsqu'un bloc se trouve à l'une de ces positions, il reçoit un tick de bloc. Ce tick est ignoré par la plupart des blocs car ils ne peuvent pas être mis à jour (comme le bloc de pierre par exemple), mais il déclenche pour certains autres blocs une action spontanée :
- Les cultures poussent.
- Les champignons prolifèrent.
- Les lianes grimpent.
- Le feu peut s’éteindre ou se propager.
- La glace et les couches de neige peuvent fondre.
- Les feuillages peuvent disparaître.
- L'irrigation de terre labourée est actualisée.
- Le cactus, la canne à sucre et la fleur de chorus peuvent pousser.
- L'herbe et le mycélium peuvent se propager ou se transformer en terre.
- Les pousses d’arbre peuvent générer un arbre.
- La lave peut enflammer les alentours.
- Le minerai de redstone éclairé peut s’éteindre.
- Le bloc du portail du Nether peut faire apparaître un Piglin zombifié.
- Une source d’eau placée sur un bloc de magma peut s’évaporer.
La particularité de cette mécanique repose sur son caractère aléatoire. Il n'y a aucun moyen de prédire quand un bloc va recevoir son prochain tick et être mis à jour. Ceci explique pourquoi, dans un champ de blé, la dernière graine plantée peut arriver à maturité avant la première graine plantée ! En moyenne, un bloc est mis à jour toutes les 68,27 secondes, la médiane étant à 47 secondes (c’est-à-dire 1 chance sur 2 que ce soit moins de 47 secondes, et 1 chance sur 2 que ce soit plus de 47 secondes). Il y a 1 % de chances que cette durée atteigne 5 minutes ou plus. Pour davantage de détails mathématiques concernant ces statistiques, consulter les articles Loi binomiale et Loi de Poisson de Wikipédia.
Dans Minecraft, la limite maximale est de 65 536 mises à jour de blocs en un tick de jeu.
D’autres blocs peuvent générer une requête de tick. Ces ticks « programmés » permettent à certains blocs d’agir de façon prédéterminée. Par exemple, les répéteurs vont programmer un tick pour prévoir un changement d’état, ou l’eau qui va programmer un tick lorsqu’elle a besoin de se déverser. Un tick programmé et un tick aléatoire peuvent avoir des effets différents sur un même bloc.
Correspondance avec le tick de redstone[]
Certains composants, comme le répéteur, imposent au signal de redstone, des délais appelés ticks de redstone. Ces délais ne doivent pas être confondus avec les ticks du jeu. Il n'ont d'ailleurs pas la même durée :
Réglage du répéteur (ticks de redstone) | 1 | 2 | 3 | 4 |
---|---|---|---|---|
Correspondance en ticks du jeu | 2 | 4 | 6 | 8 |
Durée en secondes | 0,1 | 0,2 | 0,3 | 0,4 |