Bienvenue à toi, cher joueur, dans la zone de test ! Ici, on passe au grill les idées reçues, on soumet les légendes urbaines à la rigueur des expériences afin de vérifier leur exactitude. Ensemble, nous allons soumettre le jeu à l’analyse afin de démêler le vrai du faux.
Aujourd’hui, nous allons nous étudier une des plus fameuses légendes du jeu : la croissance de la canne à sucre pousserait plus vite sur le sable que sur l’herbe.
Mise en contexte :
La canne à sucre est un végétal qui vous servira à de nombreuses reprises dans votre progression dans le jeu. En effet, trois des trophées du jeu sont directement liés à des dérivés du sucre ou du papier. Elle pousse jusqu’à 3 blocs de haut même si un bug de génération de terrain pourra vous faire rencontrer des cannes à sucre de 4 blocs de haut.
Canne à sucre générée près d’une rivière dans un biome forêt
Pour planter la canne à sucre, quelques conditions sont à prévoir : un bloc d’eau doit être à proximité immédiate et seuls certains blocs peuvent l’accueillir comme l’herbe, le sable ou encore le podzol et la terre stérile. Dans le but d’optimiser les fermes automatiques, la question de la vitesse selon le bloc support s’est posée. La légende voudrait que ce soit le bloc de sable qui permette le meilleur rendement, serait-ce fondé ?
Montage expérimental
L’objet ici est de déterminer une vitesse de croissance moyenne sur différents blocs. Notre méthode sera la suivante : on compare dans les mêmes conditions deux champs de canne à sucre et on mesure différent temps caractéristiques.
Vue du montage expérimental : à gauche l’herbe, à droite le sable
Le principe est le suivant : on place les cannes à sucre sur les blocs au même instant et on débute l’enregistrement de trois durées :
- Time12 : pour passer d’une hauteur de 1 bloc à 2 blocs de haut.
- Time13 : pour passer d’une hauteur de 1 bloc à 3 blocs de haut.
- Time23 : pour passer d’une hauteur de 2 blocs à 3 blocs de haut.
Il est temps de parler bloc de commandes. On va utiliser, sous chaque plant de canne à sucre, un ArmorStand qui servira de référence pour exécuter des commandes. Cela permettra en une seule commande de surveiller l’intégralité des plants de canne à sucre. La suite correspond au détail des commandes : vous pouvez sauter cette partie si seulement le résultat vous intéresse.
Sous chaque cube support se trouve un ArmorStand. Les blocs à surveiller (qui seront soit de l’air, soit de la canne à sucre) sont donc situé relativement à l’ArmorStand de 2 à 4 blocs au dessus.
Depuis la version 1.8, il existe la commande /execute qui se présente sous cette forme :
/execute <entité> <x> <y> <z> detect <x> <y> <z> <bloc> <donnée> <commande>
On peut lire cette commande ainsi : si l’entité détecte le bloc demandé à l’emplacement voulu, alors elle va exécuter notre commande. Grâce aux coordonnées relatives sur chaque ArmorStand, cela va être simple.
Voilà donc les trois stades de croissance de la canne à sucre, puisque la taille maximale est de 3 blocs. Récapitulons les trois temps mesurés :
- Time12 : le temps nécessaire pour passer du stade 1 (gauche) au stade 2 (milieu).
- Time 23 : le temps nécessaire pour passer du stade 2 (milieu) au stade 3 (droite).
- Time13 : le temps nécessaire pour passer du stade 1 (gauche) au stade 3 (droite).
Nous cherchons donc le temps Time12 nécessaire pour passer du stade 1 au stade 2.
Le passage du stade 1 au stade 2 est le remplacement du bloc d’air (signalé ici par un bloc de verre) en un bloc de canne à sucre. Tant que ce bloc d’air est présent, le chronomètre doit tourner pour mesurer la durée de vie du stade 1.
Le bloc d’air est situé en coordonnées relatives 3 blocs au dessus de l’ArmorStand. On va donc exécuter via une horloge toutes les 50 ms la commande suivante :
/scoreboard @e[type=ArmorStand] ~ ~ ~ detect ~ ~3 ~ minecraft:air 0 /scoreboard players add @e[r=1] Time12 1
Traduction : tant que l’ArmorStand détecte un bloc d’air 3 blocs au dessus de lui, il ajoute +1 au score Time12 qui lui est lié. Il suffira de diviser le résultat par 20 pour obtenir un temps en secondes.
Nous cherchons maintenant le temps Time13 nécessaire pour passer du stade 1 au stade 3.
Le passage du stade 1 au stade 3 comporte deux phases : le passage du stade 1 à 2, puis le passage du stade 2 à 3. C’est le remplacement d’un autre bloc d’air (signalé par un bloc de verre) en un bloc de canne à sucre qui nous intéresse : tant que ce bloc d’air est présent, le chronomètre doit tourner pour mesurer la durée de vie du stade 1 et du stade 2.
Le bloc d’air est situé en coordonnées relatives 4 blocs au dessus de l’ArmorStand. C’est donc cette commande qui sera exécutée toutes les 50 ms :
/scoreboard @e[type=ArmorStand] ~ ~ ~ detect ~ ~4 ~ minecraft:air 0 /scoreboard players add @e[r=1] Time13 1
La commande est similaire à la commande pour le temps Time12, sauf que le bloc testé est situé 4 blocs au dessus de l’ArmorStand.
Nous cherchons pour terminer le temps Time23 nécessaire pour passer du stade 2 au stade 3.
La difficulté ici est qu’il nous faut deux commandes : en effet, le temps Time23 est la durée du stade 2, ce qui est finalement la durée Time13 moins la durée Time12.
Nous allons donc réutiliser la commande Time13 quasiment telle qu’elle :
/scoreboard @e[type=ArmorStand] ~ ~ ~ detect ~ ~4 ~ minecraft:air 0 /scoreboard players add @e[r=1] Time23 1
Mais comme on retire Time12, la commande est réutilisée mais en changeant add par remove :
/scoreboard @e[type=ArmorStand] ~ ~ ~ detect ~ ~3 ~ minecraft:air 0 /scoreboard players remove @e[r=1] Time12 1
On exécute toutes les 50 ms les deux commandes. Vérifions que cela fonctionne :
- stade 1 : le bloc d’air ~ ~4 ~ est présent (+1) et le bloc d’air ~ ~3 ~ aussi (-1). Résultat : +0
- stade 2 : il ne reste plus que le bloc d’air ~ ~4 ~ (+1). Résultat : +1
- stade 3 : les deux positions sont maintenant de la canne à sucre, plus d’air. Résultat : +0
Il n’y a donc que pendant le stade 2 que Time23 augmente, victoire !
Décrivons le fonctionnement global : les ArmorStands sont réparties en deux équipes selon le bloc support. Au début du cycle, on remplace le bloc situé 2 blocs au dessus de chaque ArmorStand par un bloc de canne à sucre et on lance l’horloge pour récolter les trois temps pour chaque plant. Lorsque toutes les cannes à sucre ont fini de pousser, on retire toutes les cannes à sucre déjà présente pour pouvoir replanter au début du prochain cycle.
Pour faciliter la lecture des résultats, nous allons utiliser deux données :
- les temps moyens par zone et par type de croissance
- la répartition des temps par minute : on convertit les temps en minute et on prend la partie entière.
Analyse des résultats :
On effectue l’expérience un grand nombre de fois pour limiter les fluctuations dues au hasard. Les résultats sont présentés ci-dessous :
Temps de pousse moyens entre les différents stades (sur 2×6080 cannes à sucre)
Il semble donc avoir un léger écart entre les deux supports, mais c’est l’herbe qui sort vainqueur… mais cet écart n’est pas significatif pour plusieurs raisons :
- D’une part, cet écart ici n’est pas d’une seconde, mais lègerement inférieur (le résultat a été converti en seconde, les horloges dans Minecraft peuvent donner des précisions à 0.05 seconde).
- D’autre part, il est courant dans les expériences en statistiques d’observer des fluctuations, et l’écart trouvé est encore dans l’intervalle de fluctuation de la loi normale.
Dans le précédent TestZone, nous avions tracé la loi de probabilité associée. Si on fait de même avec nos résultats, en les regroupant par intervalle d’une minute, on retrouve encore des coubes en forme de cloche (lois gaussiennes ou loi normales) :
Histoire de trancher, regardons le mécanisme de la croissance de la canne à sucre d’un peu plus près. Pour placer un bloc de canne à sucre, nous avons utilisé la commande suivante :
/setblock <x> <y> <z> minecraft:reeds
Mais ce bloc dispose de plusieurs Data Values. La Data Value correspond à des informations supplémentaires sur le bloc : par exemple, pour la laine, la Data Value sert à déterminer la couleur.
/give @p minecraft:wool 1 donnera une laine orange au joueur.
/give @p minecraft:wool 2 donnera une laine magenta au joueur.
Pour la canne à sucre, la Data Value ne sert vraisemblablement pas pour sa couleur. Mesurons la Data Value au cours de la croissance d’un plan de canne à sucre :
Variation de la Data Value lors de la croissance d’un plan de canne à sucre
La Data Value de la canne à sucre correspond donc à son âge. Décrivons le processus :
- Régulièrement, la jeu sélectionne des blocs aléatoirement dans les zones du monde chargées (ce sont les fameux « random Tics » de la commande /gamerule randomTickSpeed).
- Si le bloc sélectionné est un bloc de canne à sucre avec un bloc d’air au dessus, on augmente sa Data Value de 1.
- Si le bloc de canne à sucre sélectionné à une Data Value de 15, un nouveau bloc de canne à sucre apparait au dessus et l’ancien bloc est ré-initialisé avec une Data Value de 0.
- Si deux blocs de canne à sucre sont présents sous le bloc de canne à sucre sélectionné, la Data Value reste à 0 : la canne à sucre ne grandit plus.
Ceci est cohérent avec nos expériences : les temps Time12 et Time23 donnent des temps moyens et des courbes comparables. Le code du jeu ne semble pas indiquer que l’algorithme de pousse prend en compte la nature du bloc.
Si vous désirez voir d’autres expérimentations sur la canne à sucre, vous pouvez voir les résultats de Xisuma et de GenerikB sur le sujet, ainsi que la vidéo de MisterDaweed qui a testé sur d’autres blocs.
Conclusion :
Nous avons terminé nos expérimentations : la canne à sucre ne pousse pas plus vite sur le sable que sur l’herbe. J’espère que cet article vous aura intéressé et que vous avez eu autant de plaisir à le lire que moi à l’écrire. N’hésitez pas à donner vos retours dans les commentaires, ainsi que des expériences que vous voudriez tester sur les mécaniques de jeu dans Minecraft (je remercie d’ailleurs Test1212 pour son commentaire proposant ce sujet). À bientôt dans la TestZone.
Téléchargement :
Pour tester par vous-même, voici le monde de test utilisé pour obtenir les résultats présentés :
J’avais déjà fait la remarque la dernière fois mais j’adore le principe de cet article ^^ merci pour ca.
catly
Ten
« Encore un mythe bidon!!retrouver Mythbuster sur minecraft france »
Prochain mythe : invoquer herobrine est il possible? (Je suis taré)
« la canne à sucre ne pousse pas plus vite sur le sable que que l’herbe » bien sur « que que » voulait surement dire « que sur » je pense :) Sinon très bonne article très complet bravo :D
Les Mythcrafters XD, « Encore un mythe totalement faux Jammy ! »
Je pense que c’est un énorme compliment.
-Et bien, Jamy, encore un mythe qui s’est avéré être faux!
-Oui Fred! Tout ça grâce à la science!
« Retrouvez c’est pas sorcier toutes les semaines sur Minecraft-France! »
Exactement. On a pas accès au code du monde IRL, c’est pour ça que la science est si intéressante et amusante. ;-)
J’ai regardé le code ensuite pour vérification, mais ce n’est pas la partie la plus fascinante à mon avis. ^^
Oui mais tu gâches le plaisir de l’expérience !
Sinon, on peut regarder dans le code du jeu. xD