Luni
Programmation & Game Design

Développement #1 : Le monde isométrique de Luni

La navigation, le pathfinding et le depth sorting ont été parmi les premiers défis techniques de Luni, en décembre 2024. Retour sur les fondations du jeu.

Par Andrei Alexandru3 min de lecture
Développement #1 : Le monde isométrique de Luni

Voir un personnage contourner un rocher ou passer derrière un arbre dans un jeu vidéo ne semble probablement pas particulièrement compliqué.
Pourtant, lorsque j'ai commencé à travailler sur Luni en décembre 2024, réussir à faire cela dans un monde isométrique 2D était l'un des premiers défis que je voulais relever.
Et, d'une certaine manière, c'était aussi un test personnel.

Les fondations techniques

Avant d'aller trop loin dans la création du monde, je voulais répondre à une question simple : serais-je capable de faire fonctionner un environnement isométrique 2D comme je l'imaginais ?
Pour moi, cela signifiait résoudre trois problèmes essentiels : la navigation, le pathfinding et le depth sorting. Je me disais que si j'arrivais à faire fonctionner ces systèmes ensemble, j'aurais suffisamment confiance pour poursuivre le développement du reste du jeu. Pour le jeu que je voulais créer, je considérais cela comme l'un des principaux obstacles techniques à surmonter. J'ai d'autres défis techniques en tête pour Luni, mais ce sera pour un autre chapitre.

Trois défis, un seul monde

L'objectif était assez simple à décrire : je voulais que les personnages puissent se déplacer naturellement dans un environnement isométrique, contourner les obstacles et s'intégrer visuellement au monde qui les entoure. Mais il fallait prendre plusieurs éléments en compte.

  • La navigation détermine comment les personnages se déplacent dans l'environnement.

  • Le pathfinding leur permet de trouver un chemin vers leur destination tout en évitant les obstacles.

  • Le depth sorting crée une illusion de profondeur en affichant les personnages et les objets dans le bon ordre. Quand Orin passe derrière un arbre, celui-ci doit le masquer. Quand il passe devant, c'est l'inverse.

Pris individuellement, ces concepts sont relativement simples à comprendre. Les faire fonctionner ensemble de manière cohérente dans un monde isométrique 2D était une autre histoire.

J'ai passé environ les deux à trois premiers mois à expérimenter avec des prototypes en C# dans Unity, en testant différentes approches et en construisant progressivement une base qui me convenait.
Au fil du développement, j'ai petit à petit étendu ces systèmes en ajoutant différents niveaux de hauteur, des pentes, des obstacles animés et d'autres éléments qui ont apporté leurs propres défis.
Chaque ajout m'a amené à revoir et à adapter certaines parties des systèmes existants pour que l'ensemble continue de fonctionner correctement.

Presque deux ans plus tard

Depuis ces premières expérimentations, Luni a considérablement évolué. Une grande partie du temps a été consacrée au développement des mécaniques de jeu, à la création et à l'amélioration des éléments graphiques, à la recherche d'une direction artistique, à la conception des environnements et à la construction progressive de l'univers du jeu.
Les premiers prototypes ont laissé place à un jeu bien plus complet, avec une identité visuelle qui s'est construite au fil de nombreuses expérimentations.
Il reste encore du travail, mais le monde que vous voyez aujourd'hui est bien plus proche de ce que j'avais imaginé au départ.

Et ces premiers systèmes font toujours partie de ses fondations.

Un aperçu du monde isométrique 2D de Luni

Orin se déplace dans le monde isométrique 2D de Luni, contourne des obstacles et passe devant ou derrière des éléments du décor.
Orin dans le monde isométrique 2D de Luni