Framework WEngine #3

Bonjour à tous,

Depuis le dernier article, beaucoup de choses ce sont passé, notamment le confinement lié à l’épidémie de COVID-19. Confinement oui, mais me concernant c’est du télétravail. Cela dit, j’ai quand même pu faire des choses sur mon framework…

Module mapManager

contrairement à ce que j’avais annoncé sur une précédente publication, je ne vais pas implémenter un module pour gérer les maps. En effet, il y a beaucoup de manières de gérer différent types de map et cela peut changer d’un projet à un autre.

Je n’ai donc pas trouvé pertinent la création d’un gestionnaire de map.

Module spritesheetManager

J’ai créé un gestionnaire de spritesheet. Celui-ci me permet d’importer des spritesheets très facilement et de pouvoir l’utiliser directement. La différence entre le module de spritesheet et le module de tilesheet est essentiellement que le gestionnaire de spritesheet permet de gérer l’animation des sprites.

Tout y est automatisé, vous importez l’image du spritesheet, vous créez un petit fichier de configuration qui définie le spritesheet (par exemple les dimensions de l’image) et hop, vous avez un système opérationnel et animé😎

Module entityManager

Voila un gros morceau. Ce module permet de créer et de gérer des entités (personnages). Ils peuvent avoir un spritesheet avec différents états, ils peuvent « spawner » (apparitre) sur une map, être visible ou invisible, être détruit, etc…

Le défis ici était au niveau des performances. En effet, lors de mes premiers tests, j’ai obtenu une consommation de 25 Go de RAM pour « seulement » 300 monstres présents sur la map.

300 monstres, 25 Go de RAM consommés

Après beaucoup de travail et de débogue, j’ai réussi à descendre à 200 Mo de RAM pour 100 000 monstres !

100 000 monstres, 200 Mo de RAM consommés

Voila c’est tout pour le moment. Pour continuer, je vais améliorer l’affichage des monstres pour faire en sorte que les monstres se superposes correctement !

Merci de m’avoir lu et à très vite 😘

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.