Une décision qui change tous le rendu visuel du jeu. (Mise à jour)
En voulant traduire le scénario en code et l’intégrer au jeu, je m’acharnait à une seule coordonnée, autour de laquelle j’avais tout aménagé tout autour (c’est censé être un aménagement concentrique). Maintenant, le jeu lis enfin les reliefs du paysage, avec des variable que je peut régler et que je n’ai pas fini d’explorer. La prochaine sera d’habiller encore un peu plus ce monde, surtout dans un open world, quand on vois littéralement le bout du monde, c’est qu’il manque encore beaucoup de relief.
Allez un chantier de plus, mais c’est motivant. Surtout qu’aujourd’hui j’ai aussi pu afficher les shader de mon chevalier. Quel changement! Je vais retrouver mes anciennes capture et faire un avant/après. Il a enfin ses propre couleur: ce ne sont plus les reflets des biomes environnement qui déteignent dessus.
D’ailleurs, une fois dans la grotte, l’environnement s’assombrit mais pas sur le chevalier (qui soit dit en passant porte une petite barbe blanche apparue elle aussi). Pourquoi les choses apparaissent-elles soudainement? Parce que je suis en train de revoir tout mes fichiers, et de me rendre compte que j’ai, bien sûr, des bouts de codes morts appelé des fossiles, mais aussi des méthodes jamais appelées. Du coup je reconnecte ce que je peux et cela améliore grandement le jeu.

Avec le recul: mise à jour du 4 octobre 2026
Quelques mois après avoir écrit cet article, j’ai compris plusieurs choses qui m’échappait en juillet, les voici:
Ce qui s’est passé techniquement
Le relief. Le moteur lisait chaque position comme une distance au centre, fidèle à l’aménagement concentrique. Seulement, pour creuser des grottes, il fallait une montagne. Le moteur calcule désormais une hauteur propre à chaque endroit, avec le bruit procédural : l’amplitude, la fréquence et les octaves sont les variables réglables. Les grottes, elles, sont des volumes en 3D (des SDF) qui creusent dans ce relief.
Le chevalier. Son shader n’avait pas de couleur de base propre : je voyais la lumière des biomes posée sur lui. Dans la grotte l’assombrissement n’est calculé que dans le shader du décor et n’est jamais transmis à celui du chevalier. La solution sera de partager le même éclairage entre tous les shaders.
La barbe. C’est un orphelin : une méthode écrite mais pas appelée. Swift ne signale pas ce genre de code, il faut aller le chercher. Les fossiles eux, sont du codes mort, d’anciennes versions remplacées.
Pourquoi je ne comprenais pas
J’ai longtemps cherché le problème au mauvais endroit. En restant sur la coordonnée centrale : j’ajustais ce qui l’entourait en espérant que le relief finisse par apparaitre comme par magie.
Mais le problème n’était pas dans la coordonnée. Il était dans la façon dont le moteur la lisait. Les mêmes chiffres, (x, z), peuvent signifier « une distance au centre » ou « un endroit précis du paysage ». Le moteur ne connaissait que la première lecture.
Je ne le voyais pas aussi parce que, pour moi, l’idée d’avoir un monde concentrique était une donnée du jeu et pas un choix technique. C’était une limite invisible auquelle je ne fesais pas attention. Jusqu’au jour où j’ai voulu autre chose : une grotte.
Ce que j’ai compris depuis
Une coordonnée n’est qu’un nombre. Son sens vient de la fonction qui la lit. Changer cette fonction change le monde entier, sans toucher à une seule position.
Une idée de design devient une architecture. Une décision narrative peut verrouiller des possibilités techniques.
Un besoin nouveau révèle les limites anciennes. Le code n’était pas faux, il répondait à une autre question. C’est la grotte qui a posé la bonne.
Le relief et les grottes sont deux systèmes différents. Une surface décrit le dessus du paysage ; un volume décrit ce qu’il y a dedans. Il faut les deux, et les faire se rejoindre.
Une seule source de vérité. Quand le rendu et la logique lisent la même fonction de hauteur, ce qu’on voit et ce qu’on touche enfin coïncident.