Skip to content

Devblog #3 : Nouveautés et Progrès dans Forge Keepers

Salut à tous !

C’est avec enthousiasme que je vous présente ce troisième devblog de Forge Keepers. Bien que je n’ai pas pu avancer lors de la première semaine de septembre, je me suis bien rattrapé récemment, en apportant de nombreux changements et améliorations. Depuis le dernier article, beaucoup de choses ont évolué, et j’ai continué à explorer les possibilités offertes par Godot. Voici un aperçu des principales modifications, des réussites et des défis rencontrés.

Mise à jour vers Godot 4.3

Je ne pensais pas que cette mise à jour aurait un grand impact, mais elle a impliqué quelques ajustements, notamment avec le remplacement du composant TileMap par TileMapLayer.

Ce changement a nécessité de gérer les calques de tuiles dans différents nœuds plutôt que dans un seul, mais heureusement, cela n’a pas trop perturbé le développement.

Transition vers un Modèle de Composants pour les Armes

Comme prévu lors du dernier devblog, j’ai travaillé sur la modularisation des armes en utilisant un système de composants. L’objectif était de créer une arme de base, avec des caractéristiques, un nombre de munitions, des projectiles et une méthode simple de tir. Ensuite, des composants supplémentaires, tels que Rechargeable et Tir Chargé, devaient enrichir les fonctionnalités de l’arme.

Initialement, ces composants étaient des nœuds Godot, mais n’utilisant pas leurs capacités spécifiques, je les ai remplacés par des classes C# basiques. Cependant, cette solution n’a pas fonctionné pour les fonctionnalités complexes que je souhaitais implémenter, comme la gestion des états de rechargement ou de charge d’attaque, car ces états interféraient avec le comportement normal de l’arme. Je me suis rendu compte que j’avais surtout besoin d’une gestion d’état plutôt que de composants pour ces cas-là.

Tests Unitaires

J’ai commencé à implémenter des tests unitaires pour vérifier la validité des composants, notamment pour les nouvelles fonctionnalités des armes et des projectiles. Cela permet de garantir que chaque composant fonctionne comme prévu.

Finalement, cet ajout était plutôt prématuré. Je me rends compte que j’aurais dû me concentrer sur la mise en place d’un gameplay simple plutôt que de vouloir avoir quelque chose de parfait tout de suite.

Améliorations de la Navigation et du Tilemap

Avec l’arrivée de TileMapLayer, j’ai voulu ajouter un bâtiment, la Forge, dans la carte. Malheureusement, cela a causé des problèmes de navigation pour les IA, car l’obstacle n’était pas pris en compte. Après plusieurs heures de recherche et d’essais, j’ai finalement trouvé une solution avec NavigationRegion2D. Voici comment j’ai résolu le problème :

  1. Utilisation de NavigationRegion2D pour gérer les zones navigables :
    • Génération d’une région de navigation incluant toute la zone devant être navigable.
    • Configuration d’un groupe de nœuds (sorte de tag) nommé collision.
    • Configuration de NavigationRegion2D pour prendre en compte les collisions des nœuds présents dans le groupe collision.
  2. Intégration de la Tilemap et de la Forge dans ce groupe pour les considérer comme obstacles.
  3. Génération du polygone de navigation après la création de la Tilemap.

Refonte de la Génération de Carte

J’ai profité de cette réorganisation pour effectuer un rework complet de la génération de carte. La structure des fichiers a été optimisée, et la transition vers la première scène de génération de carte a été clarifiée, rendant le développement futur plus modulable. Les spawners ont également été améliorés pour mieux gérer l’apparition des ennemis, limitant ainsi leur nombre sur un même point de spawn.

Intégration d’une Machine à États

J’ai cherché un plugin visuel pour mettre en place des machines à état et suis tombé sur LimboAI, une solution prometteuse.

Cependant, l’intégration de ce plugin nécessite d’écrire le code en GDScript, ou de reconstruire Godot avec cette extension pour l’utiliser en C#. Après réflexion, j’ai décidé de continuer en C# et de voir comment intégrer cette extension via la compilation de Godot incluant cette extension. Je crois les doigts pour la suite.

Prochaines Étapes

Je réalise que ma vision de Forge Keepers évolue et que j’ai tendance à me disperser. J’ai décidé d’arrêter de vouloir construire directement le jeu final, et plutôt de créer des petits morceaux de gameplay qui m’intéressent afin de mieux maîtriser Godot et d’expérimenter rapidement. Je vais donc mettre en pause la génération de carte et me concentrer sur la mise en place d’une IA simple et d’un système de combat sur une scène fixe. De plus, je vais abandonner le tir automatique de Brotato, qui ne correspond plus à ce que je veux pour le jeu à long terme.

Merci à tous de suivre cette aventure de développement. Chaque nouvelle itération me permet de découvrir Godot un peu plus et me rapproche, je l’espère, de la création de Forge Keepers. À très bientôt pour de nouvelles mises à jour !

Published inDevblog

Be First to Comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *