Comme vous l'avez vu dans le titre, cet article va traiter d'une partie de la génération du monde minecraft, du générateur de nombres aléatoires jusqu'aux spawners et même comment générer des spawners en survie vanilla.
O
Ne vous-êtes vous jamais demandé pourquoi un même seed (ou graine) aboutit au même monde, alors que celui-ci apparaît aux premiers abords aléatoire? Je vous rassure, la génération du monde minecraft est bien aléatoire...enfin presque.
Je m'explique, le générateur de nombres aléatoires utilisé par minecraft est le suivant : on part d'un nombre entier (que l'on va nommer 'Seed0', ce nombre est plutôt grand), puis on effectue des opérations mathématiques basiques avec ce nombre entier qui nous redonne un autre nombre entier('Seed1'), ensuite on extrait un nombre de la taille souhaitée avec ce nouveau nombre, c'est le nombre aléatoire recherché et on recommence avec ce nombre.
Voilà un schéma pour illustrer le fonctionnement:
Ainsi à chaque fois que l'on effectue l'opération, un nombre est généré (les opérations mathématiques étant faites afin de ne pas pouvoir récupérer l'antécédent de ce nombre, en prenant le reste de la division par un autre nombre par exemple.)
Or il s'avère justement que le seed que vous rentrez pour générer votre monde minecraft est utilisé comme seed de base du générateur aléatoire du monde c'est donc pour cela que les mondes restent inchangés avec le même seed.
Voilà, maintenant que vous savez comment un nombre aléatoire est généré on peut maintenant passer à la génération du monde. Ce qu'il faut savoir c'est que celui-ci ne se génère pas d'un seul coup, mais plutôt en deux temps.
En premier, le terrain lui-même est généré : la terre, la pierre, le sable ou encore les océans ainsi que les biomes et les cavernes, ce qui donne déjà l'aspect global du monde,
Voici à quoi peut ressembler le monde à ce stade là :
Si vous vous demandez comment la génération des blocs se passe à ce stade là, sachez que je ne vais pas en parler aujourd'hui. (en effet, la génération des blocs utilise un générateur particulier pour cette génération, appelé 'perlin noise'.)
La deuxième phase de génération, appelée population, c'est ce qui donne vie au terrain : arbres, herbes, minerais, neige, animaux, structures, lacs d'eau et de lave par exemple. Elle s'effectue dès qu'un certain nombre de chunks adjacents sont générés, c'est-à-dire au fur et à mesure que le joueur s'approche.
Comme vous pouvez vous en douter, cette partie de la génération utilise le générateur aléatoire dont je vous ai parlé précédemment: un nouveau seed est calculé à partir des coordonnées du chunk et du seed du monde, et celui-ci est utilisé afin de savoir si oui ou non certains éléments du terrain doivent être placés, en outre cette partie de la génération est indépendante de la première phase de génération (pas totalement, on verra que pour les donjons, il faut qu'une certaine configuration de blocks se produise pour générer le donjon).
Voici à quoi ressemble le monde après cette phase de peuplement comparé à la première phase : (à droite : sans peuplement, à gauche : avec peuplement des chunks.)
On va enfin pouvoir parler de donjons et de spawners ! Les donjons sont les dernières structures à être générées, après les strongolds, les villages, les mineshafts et les temples. Pour un chunk, 8 positions sont testées pour générer les spawners, ces positions sont aléatoires et dépendent donc du chunk et des autres structures (car elles aussi utilisent le générateur aléatoire et donc changent la prochaine valeur aléatoire).
Voilà en gros toutes les positions qui sont testées si on les affiche dans le jeu :
Pour qu'un donjon soit généré, il lui faut : un sol, un toit et une ouverture de 1 à 6 blocks, c'est tout, mais en réalité (dans le monde minecraft, vous m'avez compris) ces simples conditions sont plutôt rares, car il faut que la position testée se situe à proximité d'une ouverture tout en ayant des blocs pour le toit et le sol. (c'est d'ailleurs pour cela que les donjons sont plus courants dans les mineshafts)
Voici un exemple : en violet et en bleu : les blocs qui constituent les murs, le sol et le toit, et en magenta : les blocs constituant le sol qui doivent avoir 4 blocks d'air au dessus d'eux : c'est l'ouverture enfin en blanc les blocks neutres qui n'ont pas de conséquences dans la génération du donjon.
Une fois que la position testée est valide, les blocks intérieurs sont supprimés, la mossycobblestone et la cobblestone sont placés, ainsi que les coffres, et enfin le spawner est placé au centre du donjon.
Les blocks de mossycobblestone étant générés aléatoirement, ainsi que le spawner, il est possible de contrôler le type de spawner à partir des blocks sous le sol (si il n'y a pas de blocks, la mossycobblestone n'est pas placée).
Cette histoire de générateur aléatoire vous sort peut-être un peu de la tête, mais grâce à lui il est possible de prédire les positions de donjons testées par l'algorithme de génération du monde. Si l'on parvient à placer des blocks loin du joueur, là où le monde est seulement généré et non peu peuplé, on peut forcer minecraft à placer des donjons en plaçant les blocs nécessaires. Pour l'instant seulement deux moyens permettent de placer les blocks nécessaires au donjons loin du joueur : des ponts de pistons illimités ou encore des machines volantes.
Voici la vidéo de la personne ayant découverte comment manipuler la génération de donjons:
J'ai moi-même généré un sextuple spawner à squelettes dans mon monde survie:
Il est même possible d'obtenir des positions avec une vingtaine de donjons activés en même temps lorsque le joueur se situe au milieu mais construire les flying machines, gérer les chargements de chunks devient très difficile voire impossible.
O
Ne vous-êtes vous jamais demandé pourquoi un même seed (ou graine) aboutit au même monde, alors que celui-ci apparaît aux premiers abords aléatoire? Je vous rassure, la génération du monde minecraft est bien aléatoire...enfin presque.
Je m'explique, le générateur de nombres aléatoires utilisé par minecraft est le suivant : on part d'un nombre entier (que l'on va nommer 'Seed0', ce nombre est plutôt grand), puis on effectue des opérations mathématiques basiques avec ce nombre entier qui nous redonne un autre nombre entier('Seed1'), ensuite on extrait un nombre de la taille souhaitée avec ce nouveau nombre, c'est le nombre aléatoire recherché et on recommence avec ce nombre.
Voilà un schéma pour illustrer le fonctionnement:
Ainsi à chaque fois que l'on effectue l'opération, un nombre est généré (les opérations mathématiques étant faites afin de ne pas pouvoir récupérer l'antécédent de ce nombre, en prenant le reste de la division par un autre nombre par exemple.)
Or il s'avère justement que le seed que vous rentrez pour générer votre monde minecraft est utilisé comme seed de base du générateur aléatoire du monde c'est donc pour cela que les mondes restent inchangés avec le même seed.
Voilà, maintenant que vous savez comment un nombre aléatoire est généré on peut maintenant passer à la génération du monde. Ce qu'il faut savoir c'est que celui-ci ne se génère pas d'un seul coup, mais plutôt en deux temps.
En premier, le terrain lui-même est généré : la terre, la pierre, le sable ou encore les océans ainsi que les biomes et les cavernes, ce qui donne déjà l'aspect global du monde,
Voici à quoi peut ressembler le monde à ce stade là :
Si vous vous demandez comment la génération des blocs se passe à ce stade là, sachez que je ne vais pas en parler aujourd'hui. (en effet, la génération des blocs utilise un générateur particulier pour cette génération, appelé 'perlin noise'.)
La deuxième phase de génération, appelée population, c'est ce qui donne vie au terrain : arbres, herbes, minerais, neige, animaux, structures, lacs d'eau et de lave par exemple. Elle s'effectue dès qu'un certain nombre de chunks adjacents sont générés, c'est-à-dire au fur et à mesure que le joueur s'approche.
Comme vous pouvez vous en douter, cette partie de la génération utilise le générateur aléatoire dont je vous ai parlé précédemment: un nouveau seed est calculé à partir des coordonnées du chunk et du seed du monde, et celui-ci est utilisé afin de savoir si oui ou non certains éléments du terrain doivent être placés, en outre cette partie de la génération est indépendante de la première phase de génération (pas totalement, on verra que pour les donjons, il faut qu'une certaine configuration de blocks se produise pour générer le donjon).
Voici à quoi ressemble le monde après cette phase de peuplement comparé à la première phase : (à droite : sans peuplement, à gauche : avec peuplement des chunks.)
On va enfin pouvoir parler de donjons et de spawners ! Les donjons sont les dernières structures à être générées, après les strongolds, les villages, les mineshafts et les temples. Pour un chunk, 8 positions sont testées pour générer les spawners, ces positions sont aléatoires et dépendent donc du chunk et des autres structures (car elles aussi utilisent le générateur aléatoire et donc changent la prochaine valeur aléatoire).
Voilà en gros toutes les positions qui sont testées si on les affiche dans le jeu :
Pour qu'un donjon soit généré, il lui faut : un sol, un toit et une ouverture de 1 à 6 blocks, c'est tout, mais en réalité (dans le monde minecraft, vous m'avez compris) ces simples conditions sont plutôt rares, car il faut que la position testée se situe à proximité d'une ouverture tout en ayant des blocs pour le toit et le sol. (c'est d'ailleurs pour cela que les donjons sont plus courants dans les mineshafts)
Voici un exemple : en violet et en bleu : les blocs qui constituent les murs, le sol et le toit, et en magenta : les blocs constituant le sol qui doivent avoir 4 blocks d'air au dessus d'eux : c'est l'ouverture enfin en blanc les blocks neutres qui n'ont pas de conséquences dans la génération du donjon.
Une fois que la position testée est valide, les blocks intérieurs sont supprimés, la mossycobblestone et la cobblestone sont placés, ainsi que les coffres, et enfin le spawner est placé au centre du donjon.
Les blocks de mossycobblestone étant générés aléatoirement, ainsi que le spawner, il est possible de contrôler le type de spawner à partir des blocks sous le sol (si il n'y a pas de blocks, la mossycobblestone n'est pas placée).
Cette histoire de générateur aléatoire vous sort peut-être un peu de la tête, mais grâce à lui il est possible de prédire les positions de donjons testées par l'algorithme de génération du monde. Si l'on parvient à placer des blocks loin du joueur, là où le monde est seulement généré et non peu peuplé, on peut forcer minecraft à placer des donjons en plaçant les blocs nécessaires. Pour l'instant seulement deux moyens permettent de placer les blocks nécessaires au donjons loin du joueur : des ponts de pistons illimités ou encore des machines volantes.
Voici la vidéo de la personne ayant découverte comment manipuler la génération de donjons:
J'ai moi-même généré un sextuple spawner à squelettes dans mon monde survie:
Il est même possible d'obtenir des positions avec une vingtaine de donjons activés en même temps lorsque le joueur se situe au milieu mais construire les flying machines, gérer les chargements de chunks devient très difficile voire impossible.
Fichiers joints
Dernière édition: