[Trucs et astuces] Gérer le maillage de surface (walkmesh)

Répondre
Partager Rechercher
Le walkmesh est par définition la surface que l'on peut parcourir librement. Il détermine la manière dont l'intelligence artificielle du jeu gère les déplacement du joueur (en mode exploration ou stratégie) et des créatures.

Je ne compte pas faire un cours sur le walkmesh en lui-même, je n'en sais pas plus que la plupart d'entre vous. Les principaux points que je soulèverai ici sont surtout :

- Tile ou triangles inaccessibles, pourquoi ?
- Objet statique, rogner walkmesh, ou collision ?

Pour mieux représenter la chose, j'ai réglé l'affichage pour qu'il ne montre que le maillage de surface calculé, le tout en mode "fil de fer".


Connaître le maillage :

Le maillage est constitué tout d'abord de triangles isocèles rectangles (olol le cours de math !). Deux triangles s'assemblent ensuite en un carré (que j'appellerai "petit carré"). Quatre petits carrés s'assemblent ensuite en un carré plus grand (que j'appellerai "grand carré"). Et enfin, neuf grands carrés s'assemblent en un très gros carré, que l'on connaît sous le nom de "tile" (que j'appellerai ici "tile").

Carré 1.JPG Carré 2.JPG Carré 3.JPG Carré 4.JPG

On peut éventuellement considérer le carré dessiné par les diagonales en tant que tel (et le nommer "carré moyen").

Carré 5.JPG

Un tile est donc composé de 72 triangles.


Modifier le maillage :

Il y a trois manières de modifier le maillage (et d'influer sur le calcul) :

- Utiliser le pinceau d'accessibilité/inaccessibilité (insignifiant).
- Insérer un plaçable statique (dépend de la forme de la base du plaçable).
- Dessiner un déclencheur de type "Rogner walkmesh" (dépend de la forme du déclencheur).


Tout d'abord, voici mon arme. Un inoffensif cadran solaire :

Calcul 1.JPG


Placer un plaçable (hmm) :

Attention, l'éditeur étant un gros fainéant, il préfère les calculs simples. Voici le principal problème encouru lorsqu'on place mal un objet :

Calcul 2.jpg

Le calcul devient trop complexe pour l'éditeur, qui décide de se simplifier la vie en rendant un triangle inaccessible. On le reconnaît facilement, ses bords sont surlignés en blanc.

Autre souci existant, le manque de calcul. L'éditeur ne sait pas trop par où le walkmesh doit être modifié, et fait un calcul inutile, qui n'apporte rien de concret. Le personnage peut donc traverser le plaçable en question, le walkmesh de la zone n'ayant pas été modifié :

Calcul 3.JPG Calcul 5.JPG

Voici ce qu'un calcul réussi devrait donner. Le maillage est altéré, pour pouvoir s'adapter à la base du plaçable statique que l'on veut insérer. Vous n'êtes pas obligé d'être aussi maniaque que moi, inutile de mettre le plaçable de façon à ce qu'il y ait une symétrie parfaite dans le maillage (il y aurait de quoi s'arracher de belles poignées de cheveux). Assurez-vous juste que le plaçable chevauche au moins un fil du maillage de la zone, et que ce fil traverse le plaçable de manière significative.

Calcul 4.JPG


Gérer le walkmesh d'un tile :

On n'y prête pas souvent attention, mais un tile est sensible au nombre d'objets statiques présent dans sa surface. Le mieux que j'ai pu faire fut d'insérer seulement 5 cadrans solaires dans un tile. Au delà, le calcul semblait trop complexe et l'éditeur a rendu la totalité du tile inaccessible. L'image de droite présente pourtant une belle organisation de plaçables, très spacieuse, avec vue sur la mer, mais peu importe la façon dont je les posais, le tile n'a pas voulu se faire calculer. Comme pour le triangle plus haut, mon tile non calculé présente des bords de couleur blanche, signalant qu'il est totalement inaccessible.

Calcul 7.JPG Calcul 6.jpg

La solution (qui n'en est pas une, finalement), fut de regrouper des plaçables en non-statiques, et de les entourer avec un "Rogner walkmesh". Mais là encore, si la forme de ce déclencheur n'est pas simplifiée, le calcul ne se fera pas :

Calcul 8.JPG

Adopter une forme ayant le moins d'angles possibles (donc 3 ou 4 côtés au pire) allégera le calcul du walkmesh, qui pourra être enfin résolu. Mais au final, nous n'avons toujours que 5 éléments dans un tile :

Calcul 9.JPG


Collision ou pas collision ?

Il serait simple d'activer la collision, et de laisser filer l'option du walkmesh, mais non. Le calcul du déplacement d'une créature dépend du walkmesh. Et un objet non-statique provoquant une collision, n'entre pas en compte dans ce calcul.

Le meilleur exemple est la porte, ou une autre créature. Vous avez déjà du remarquer combien de créatures s'agglutinaient derrière une porte verrouillée après avoir remarqué la présence de votre personnage, ou de les bloquer avec un guerrier bien équipé, pour les arroser de flèches et de feu en toute sécurité.

Il faut donc bien choisir ses objets non-statiques avec collision, et les placer dans les endroits qui gênent le moins possible le calcul d'un déplacement. Des statues le long d'un couloir, les meubles contre le mur, tout ceci peut être paramétré en objet non-statiques avec collision.

Ceci est primordial pour que l'intelligence artificielle puisse agir en toute sérénité, autant pour les déplacement d'une créature que celle d'un joueur.


Rogner walkmesh ou plaçable statique ?

Cela dépend de l'un et de l'autre. Si le plaçable présente une surface trop complexe, mieux vaut le rendre non-statique et l'entourer d'un "Rogner walkmesh" ayant une forme simple.

Si deux plaçables statiques sont côte à côte, mieux vaut également les réunir sous un "Rogner walkmesh".

Si vous donnez une forme trop complexe au "Rogner walkmesh", mieux vaut ne pas en mettre. L'exemple des cadrans solaire en est un parfait exemple :

Calcul 9.JPG Calcul 8.JPG

Mais en général, je pense pouvoir affirmer qu'utiliser proprement le "Rogner walkmesh" est plus un soulagement pour l'éditeur qu'une entrave.


Voilà, c'est tout pour aujourd'hui.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés