Une grotte sans fin avec un rendu topographique
Prêt pour un nouveau test ! Parceque j’aime beaucoup ces aquarelles où l’on observe un paysage montagneux, clairement démarqué par un simple dégradé de couleur. Si je peux mixer cela à une esthétique de carte topographie (que j'apprécie pas mal ces dernier temps), je pense pouvoir obtenir un rendu intéressant à explorer.
Mais alors comment générer et modifier mes terrains et paysages sur Unity ? Et bien commençons par la base. Un objet est représenté par un maillage, c’est-à-dire un ensemble de triangles arrangés les uns et les autres en 3D, pour ainsi nous donner une impression de volume. Et pour obtenir ces triangles, il me faudra simplement créer un matrice de points, que l’on relie un à un, en prenant bien garde à l’orientation, car seul une face de ces triangles pourra projeter une texture et sera donc visible (parce qu'on ne veut pas de trous dans nos objets).
Ensuite je répète tout cela jusqu’à obtenir un plan, et en jouant avec la position en hauteur de chaque point, je peux créer mon terrain ! Sachant que je peux récupérer sur une carte d’altitude la couleur des pixels définissant la valeur d’élévation pour le point de mon maillage correspondant. Grâce à cela, je peux dessiner en amont la forme de mon terrain sur une carte. Ici, je n’invente rien, je suis juste très assidûment un tas de vidéos Youtube, comme un bon élève (e.g.. génération de mesh et terrain procédural).
Maintenant que je maîtrise le concept, à moi de modifier les paramètres à ma sauce, construire les terrains, et pourquoi pas, je dis bien pourquoi pas, les découper comme du jambon ? Pour mieux voir l'intérêt de la chose, je modélise un petit sous-marin, je lui programme ses mécaniques de mouvement, et ainsi je peux tester le rendu.
Et c’est pas mal déjà ! Je retrouve cette séparation distinctes et ce dégradé de couleur. Je m’amuse même avec le concept et lui donne un rendu futuriste, avec des textures vertes fluo normalement utilisées dans l’éditeur seulement.
À ce stade, je décide de peaufiner un peu le prototype, de lui donner un peu d’ambiance ! Déjà pour me faciliter la vie, je rajoute quelques options de personnalisation pour générer mes tuiles de terrains. Je dois pouvoir facilement y changer leur hauteur, mais aussi vers le bas pour créer le plafond et ses aspérités, définir la carte d’altitude qui sera prise en compte ici, ou encore la distance en profondeur entre chaque tranches, et ainsi de suite.
Avec tout ça, je peux maintenant agencer mes tuiles pour former une cave. Et par un petit tour de magie qui consiste à téléporter en arrière le joueur quand il dépasse une certaine distance, le voilà piégé dans une cave infinie !
Enfin pour un meilleur confort de jeu, j’ajoute une interface, un peu de son, travaille sur l’éclairage et peaufine les mouvements, et voilà ! J’aime beaucoup et je suis plutôt fier de moi ! J’ai vraiment ce sentiment d’être perdu au fin fond des abysses. Ce rendu, ce style de roche, ajoute du mystère à l’horizon. Et éclairer les surfaces proches de mon sous-marin me font retrouver cet effet topographique sur mon terrain.
Par contre, j’ai oublié de prendre en compte un détail. Les maillages ne projettent que sur une seule orientation leurs textures. Donc si je me retourne, je ne vois plus rien… Encore un petit peu de travaille si je veux pouvoir progresser dans un sens puis dans l’autre dans ces tunnels.
Mais quand même, je valide le prototype ! Il me donne envie de continuer à travailler dessus. Plus tard, j'y concevrai de vrais niveaux, avec un début et une fin, où le joueur doit retrouver la sortie. Avec une jauge d’oxygène peut-être ? Il faudra bien sûr aussi ajouter du décor, un peu de vie et des petits poissons ! Et puis enfin, cela serait agréable de pouvoir émerger des profondeur, histoire de respirer un peu et récompenser l’exploration. Mais tout ça viendra en temps et en heure, en attendant, testez mon prototype!
La morale de l'histoire ?
C’est bien de s’inspirer de tout ce qu’on peut trouver autour de soi, ça peut donner de bonnes idées.