[WIP] The Crystal Raiders Tales

11 commentaires
Portrait de Nival
Inscrit le : 23/10/2013
Commentaires : 760
Messages : 1620
Message Sujet: Re: [WIP] The Crystal Raiders Tales     14/10/2018 à 20:43

j'ai pas bien compris le dernier point. Il n'y a pas de quadrillage, juste un angle de camera isometric identique dans notre moteur de jeu et dans notre logiciel pour calculer nos décors.

Je ne parle pas d'un point de vu visuel, mais du point de vu de la gestion du gameplay. Caler les éléments de jeu sur une grille a d'énormes avantages pour gérer les interactions, les règles, l'IA, le pathfiding, limiter les bugs et approximations, etc.

Par exemple :
IMAGE(http://nival.free.fr/images/cr_grid_test01.png)

Il ne s'agit pas forcément d'imposer en permanence un placement des éléments/personnages sur la grille (notamment lors d'un déplacement, il peut très bien se faire en ligne direct sans "suivre les cases", et de toute façon au cours d'un mouvement tes objets vont forcément passer par des étapes où ils seront à cheval sur plusieurs cases), mais tu peux ancrer les positions cibles sur cette grille (quitte à ce que les éléments puissent éventuellement se trouver interrompus toujours à cheval entre plusieurs cases, mais dans une situation considérée par le moteur comme "non optimale" qui aura tendance à être corrigée dés que possible ; et quand un personnage est à cheval sur plusieurs casses --4 au maximum-- il suffit de pondérer la propriété de chacune de ces cases en fonction de son taux de chevauchement pour en tirer les propriétés de la position actuelle).

Un exemple simple de truc super relou dans les jeux genre Baldur's Gate : tu veux placer des personnages à couvert derrière un élément de décor, disons 3 personnages derrière un élément qui fait justement la largeur de 3 personnages. Tu vas pouvoir placer le premier sans problème ; le deuxième à coté pas de soucis ; mais le troisième ça va se corser, parce que tu n'auras pas forcément exactement la bonne largeur de dispo entre les deux premiers ou à l'une des extrémités sans que ce dernier personnage ne dépasse de quelques pixels fatidiques à sa couverture. Souvent ce genre de situations entrainent problèmes de comportements avec des personnages qui se gênent et n'arrivent plus à attaquer/se défendre efficacement, voire des aberrations de pathfinding avec un perso qui fait le tour complet du couvert pour se repositionner et du coup ruine complètement sa couverture. Avec un système de case c'est très simple, parce que si un élément de décor fait 3 cases de large, 3 perso y trouveront tout naturellement leur place ; et si tu autorises un placement pas obligatoirement calé strictement sur la grille, les deux premiers persos positionnés pourront être à cheval chacun sur 2 des 3 cases du couvert, mais à l'arrivée du 3ème personnage, il sera aisé d'avoir une routine d'IA qui fasse se déplacer les personnages qui gênent en les recalant sur la grille afin de libérer une case complète pour le dernier arrivant (et sans que personne ne dépasse).

De même gérer l'IA est largement facilité, car tu peux aisément calculer pour chaque case le degré d'exposition et de pertinence tactique par rapport à la situation en cours, permettant aux ennemis d'adopter des positionnement judicieux et cohérents ; beaucoup plus complexe sur une map non structurée de façon explicite et simple d'exploitation.

Après il s'agit évidemment de caler les éléments de décors sur la grille, mais ça ne pose généralement pas de gros soucis (dans l'exemple que j'ai mis plus haut il suffit essentiellement de repositionner un peu la chaise et le reste peut grossièrement rester en l'état) ; il faut aussi bien équilibrer la taille de la grille évidemment (dans mon exemple elle est probablement "trop grosse" mais je me suis adapté à ton décor qui n'était pas pensé pour, alors que dans ce genre d'approche il faut créer les décors en les pensant spécifiquement pour ça (ce qui reste généralement très peu contraignant si on s'y prend bien)). Il y a aussi des techniques permettant plus de liberté comme utiliser en fait une grille deux fois plus dense, avec donc un personnage = 4 cases, ce qui permet des placements plus fins mais aussi l'implémentation d'ennemis de petite taille pouvant plus facilement se faufiler et encercler, etc. C'est naturellement un peu plus complexe à utiliser, mais toujours moins qu'un pur système de coordonnées libres "au cm près" (à noter que sans cela on peut aussi implémenter des ennemis "plus petits qu'une case" en autorisant de les grouper à plusieurs, et donc un ennemi petit aura un paramètre stipulant s'il est seul ou 2 (ou plus) sur la même case, ce qui se reflètera sur la représentation à l'écran et dans le nombre d'attaques infligées qui seront plus fréquentes, mais ça restera "une occupation de case").

À noter que cela peut peut-être aussi simplifier la gestion des masques du décor, puisque chaque masque est dés lors attribué à une case et donc il est très facile de savoir si un objet est placé devant ou derrière (en fonction de la case (ou des cases) que lui-même occupe).

Pages