Catégories
Tower Defense Pixel Unity

Tower Defense Pixel /log2

Aujourd’hui, comme dit dans le précédent billet, je m’attaque au terrain. Les joueurs vont avoir besoin de placer leurs tours, murs et autres bâtiments pendant la partie. Il faut donc que le NavMesh se mette à jour en temps réel. Heureusement Unity Technologies propose maintenant des NavMeshComponents qui permettent cela. L’ayant déjà testé je sais que j’aurais à faire face à un petit détail non-bloquant au début. Lorsqu’un build est fait durant le jeu, tout les agents marquent un court arrêt. Cela se comprend mais si à chaque fois qu’un joueur pose un bâtiment les unités s’arrêtent, le gameplay risque d’être frustrant.

Avant de partir dans le développement, un petit rappel de l’objectif :

  • La carte est une grille de cases carrées
  • Il y a plusieurs types de terrain. Par dessus desquels il sera possible ou non de construire un bâtiment. La terraformation n’est pas prévue, mais les cases type forêt on des chances de ce voir transformée en plaine lors d’une construction. A voir donc…
  • Le terrain et les bâtiments affectent le path finding

Pour les différents types de terrain j’ai en tête un jeu de mon enfance orienté stratégie. Il s’agit de Advance Wars. Comme j’ai besoin de murs je vais chercher les sprite du second opus qui en possédait. Ci dessous donc tout les types dont nous allons avoir besoins, et même plus.

image

Pour commencer simplement je vais m’occuper des types principaux :

  1. Plaine (Case neutre)
  2. Forêt (Déplacement plus lent)
  3. Montagne (Déplacement très lent, pour l’instant)
  4. Mer (Déplacement impossible, pour l’instant)
  5. Route (Déplacement plus rapide)

Je vais partir sur une solution simple, mais peut-être pas la plus optimisée dans un premier temps. Je vais faire une série de prefabs qui représenteront chaque case, et qui comporteront un component NavMeshModifier.

image

Lors de la configuration, il est apparu que le système de NavMesh proposé risque de ne pas être complètement adapté à ce cas. En effet il y aura plusieurs types d’unités, qui réagiront différemment selon le terrain. Il faudra donc certainement dupliquer les Areas pour chaque type d’unité, mais pour l’instant ça ne gène pas.

Il est temps de créer une petite carte pour tester les réactions des unités. Sans éditeur de carte c’est un peu laborieux, il faudra rapidement en créer un. Mais les modificateurs fonctionnent comme prévu pour le terrain. Simplement il y a donc un modificateur de poids par case, et plus tard chaque type d’unité aura son NavMesh, cela risque d’être lourd. Aussi les montagnes sont finalement “Not Walkable” pour l’instant pour éviter que les unités se faufilent en diagonale entre deux montagnes. Je reverrais le comportement souhaité plus tard.

image

Pour faciliter la suite du développement, l’éditeur de carte sera la prochaine étape du développement. Pour simplifier les tests je reviendrais peut-être sur un format de tower defense plus classique avec d’un côté une vague ennemie, et de l’autre le joueur qui se défend en plaçant des tours.

Pour aujourd’hui ça sera malheureusement tout, je n’aurais pas plus de temps à accorder à ce développement. To be continue…

PS: Si vous avez connaissance des performances des NavMeshComponents dans ce cas, n’hésitez pas à commenter 😉