Je viens à vous pour vous parler d'un nouveau projet déjà évoqué dans le topic de mes projets jamais terminé (ça commence bien lol)
Cette fois-ci, il s'agit d'un jeu de type RTS (Real Time Strategy) un peu à la sauce Starcraft ou Age of Empire mais couplé à pas mal d'éléments d'un RTS moins conventionnel : Pikmin.
Il s'agit d'un jeu où l'on contrôle un personnage principal (Un peu comme comme le capitaine Olimar, ici SERAPHIN) qui doit utiliser sa magie et sa stratégie pour créer et mener aux combats les TINIES, les petites créatures dont l'une d'elle était le héro de mon autre jeu GRAVITY ISLAND.
Pour ce faire, et contrairement aux Pikmin, il vous faudra acquérir des points de ressources, puis récolter des pierres de magie afin de construire de nouveaux bâtiments, et enfin augmenter la taille et la puissance de votre armée.
J'ai toujours rêvé de faire mon propre RTS avec Fusion. Mon premier RTS était un jeu avec des fourmis sur The Game Factory qui évidement, marchait très mal. Certaines fonctionnalités comme un Pathfinding global et réellement performant me semblait impossible. Certains se souviennent également d'un de mes anciens projets : Space Wars. Tombé à l'eau, lui aussi pour des problèmes de performances due au Pathfinding, et à l'IA en général.
Récemment j'ai fait un rêve où j'ai enfin trouver trouver une solution miracle pour avoir un Pathfinding stable, recalculé à chaque image qui ne prennent absolument aucun temps de calcul ou presque. J'ai réussi à générer plus de 800 agents en simultané sur une map géante sans perte de Framerate.
Pourquoi je vous parle de technique ? Parce que c'est ce qui a tout débloqué ^^ Je peux enfin faire le jeu dont j'avais envie... Après quelques essais sur des morceaux de projets et ma copine m'aidant pour dessiner de superbes et très grandes map bien sûr ^^
Le moteur est tellement performant que ce sera également mon tout premier projet en Full HD !
Youpi ! un barbichu ;)
Ouah la classe!
J'ai toujours rêvé de me faire mon RTS. J'avais vu quelques projets de RTS et j'avais fait quelques tests avec l'extension Flow d'Anders ou essayé d'implémenter des méthodes avancées de pathfinding mais je ne m'étais jamais vraiment lancé dans l'aventure.
Tu peux nous en dire plus sur ta solution de pathfinding ?
Merci ! C'est vrai que c'est du boulot niveau graphique, mais les tons pastels sont voulus. Bon ça peut carrément encore changés aussi ;)
Sinon pour le pathfinding comment je m'y suis pris :
- Avec Space Wars j'avais un système où pour chaque unité j'avais un tableau de position associé. à chaque nouvel ordre, je lançais une demande de pathfinding en utilisant l'objet pathfinding et je stockais le chemin dans un tableau (d'abord la première case, puis la deuxième, la troisième etc aux coordonnées décidé par l'objet, positionner dans la bonne case du tableau). Je récupérer le nombre de case à faire, puis je lançait un mouvement de balle, vers la bonne case avec le bon ID, et une fois atteint, j'incrémentais jusqu'à atteindre la dernière case du chemin.
Comme vous vous en doutez, sur des grilles de plus de 16 cases par 16 cases, ça donnait un coup de lag assez monstrueux lorsque je donnait l'ordre à genre 30 unités d'aller à l'autre bout de la map. Concernant les ennemis, le pathfinding se doit d'être recalculer très régulièrement au final pour aller vers l'unité du joueur la plus proche... C'était exécrable...
- ici l'idée est en réalité de calculer, pour une map donné, tous les chemins possibles. C'est à dire, lancer un pathfinding de chaque case vers chaque autre case, et de stocker toutes ces possibilités dans un immense tableau. Un tableau de Pathfinding pré calculer en quelques sortes. Vous vous imaginez bien que ça demande énormément de ressources (pour une grille de 64 x 64, cela donne 4096 chemins à calculer)
J'ai donc créer un éditeur de niveau où je peux établir les murs et les cases où l'on peut passer. Mes maps font 6144px X 6144px avec des cases de 128px X 128px et donc 64 cases X 64 cases. Chaque génération de grille peut prendre entre 30 min et 4 heures (!!!). Je stocke alors pour chaque case, 64 directions différentes vers les 64 autres cases (uniquement la première case de destination, pas besoin de tout le chemin, je vais y revenir)
Une fois en jeu, je n'ai plus qu'à charger l'immense tableau. Ensuite, je peux créer autant d'unités que je veux, il me suffit de savoir, via ses positions X,Y sur quelle case je me situe. Dans un always, je n'ai plus qu'à lire la case de destination qu'il faut entre la position de l'unité et la destination. Comme évidement je fais bouger l'unité, chaque fois qu'elle change de case, elle recharge le nouveau chemin entre cette nouvelle case la même destination.
Je ne sais pas si je suis très clair, mais en réalité, cette méthode porte le nom flowfield pathfinding. En fait on ne génère que les directions à prendre aux agents, en générant un champs de vecteur. Les unités n'ont plus à suivre un chemin, mais simplement des directions pré calculer dans un champs (voir exemple ci dessous)
Cela me permet en réalité d'avoir un pathfinding parfait, recalculé en temps réel pour toutes les unités. J'ai testé avec plus de 800 unités sur une grille de 64x64 et avec un calcul dans un always, je tenais les 60 FPS sur un PC assez vieux (ancien core i3) !!
La seule limitation c'est que la grille de pathfiding étant pré calculer, les éléments comme les murs sont immuables. Pas de recalcule en temps réel en fonction du terrain (pas de possibilité d'ajouter des murs par exemple). Mais certaines astuces inhérentes à Fusion permettent de contourner certaines de ces limitations et rends enfin un RTS avec des dizaines et des dizaines d'unités possible sous Fusion !! haha
Ouah, chapeau! Le pathfinding avec des "Flow Field Tiles", c'est du pathfinding avancé. C'est exactement une des méthodes que j'avais essayées pour faire des "steering behaviors" (atteindre un point fixe, suivre un leader, fuir, poursuivre, éviter des obstacles, ...). Mais sans résultat pour l'instant.
C'est à la fois simple et puissant. Bravo!
Tu me remotives à essayer des trucs maintenant, c'est malin. ;)
Il y a de quoi vendre un widget sur le clickstore avec ça.
Petites questions supplémentaires: intègres-tu la gestion des obstacles dans ton flow field en temps réel: collision avec unités ennemies ou unités amies?
Oui c'est ça, des assets achetés sur plusieurs stores, modifiés, assemblés, customisés et certains réalisés par nous même.
Pour la vidéo, il faudra encore être patient, les bases du gameplay sont pensés, mais pas encore toutes implémentés ;) J'ai commencé par le plus difficile haha
Allez voici un nouveau petit screen du jeu ;) :
Au tout début de l'aventure, notre petit séraphin glande un peu chez lui ^^
Z'avez eu peur hein ?? xD
Merci Valeth ;)
Au programme aujourd'hui, diverses améliorations sur l'interface ^^
- Désormais, la minimap ne s'affiche que si l'on construit le bâtiment "radar" (celui avec une tête d'oiseau)
- Même s'il n'y a pas de brouillard de guerre à proprement parler, puisque l'on contrôle Séraphin et non une caméra libre, la minimap ne dévoile pas pour autant toute la carte. La zone non découverte est dans l'ombre.
- On construit les bâtiments en cliquant sur les ruines déjà prévues, une icone s'affiche alors (comme sur le screen), puis on clique sur l'icone pour lancer la construction
- En revanche, pour tout ce qui est fabrication d'unité ou amélioration, on va trouver tout un tas de bouton sur le coté droit de l'écran (à l'instar d'un Command & Conquer)
Ce choix s'explique surtout puisque l'on ne contrôle pas la caméra. Il est donc très compliqué de devoir retourner à la base quand on est sur le champ de bataille pour améliorer ou construire des unités. De cette façon, tout est bcp plus fluide d'un point de vie Gameplay ;)
On peut donc lancer la construction d'unité à la base, et les appeler avec la touche F2 (voir surement une petite icone supplémentaire) qui sélectionne toute l'armée présente sur la base pour rapidement ramener les nouvelles unités encore à la base, vers le champ de bataille :p
Bonjour à tous !
Au menu aujourd'hui, un petit screen du menu principal ;)
Alors, vous en pensez quoi ?
tres joli, meme si je trouve que les couleurs de la sphere sont legerement différentes des autres couleurs de l'image, peut être poins pasteles que les autres, difficile a exprimer pour un mauvais graphiste comme moi
Merci ^^
Je pense que c’est dû au rayon de lumière qui forcément illumine la sphère et lui donne ce côté très brillant.. tout est animé sur le menu, y compris ce rayon qui change de luminosité par moment
ah ok , faudrait voir en cours d'animation alors pour bien appréhender le truc