cegepmatane / projet-specialise-2022-TMRomain

Projet DOTS
http://romain-portfolio.com/
0 stars 0 forks source link

Optimisation de la génération de Terrain #8

Open TMRomain opened 2 years ago

TMRomain commented 2 years ago
TMRomain commented 2 years ago

🥇Exemple d'amélioration des performances (Système de génération de Chunk):

L'exemple est fait avec une map de 500*500 soit 250000 case, + les arbre qui se génère par dessus environ 300000 entités. Il est important d'optimiser se système car il est réutiliser lorsque le joueur se balade dans le monde.

Ancien système ;

Avec l'ancien système il y'avait plusieurs boucle qui fessait générer chaque case (et arbres) pour la map le temps de démarrage de la scène était environ de 40s :

AncienSystemePerf



Nouveau système ;

Le nouveau système génère une case (et arbre) puis le réutiliser pour continuer la génération donc au lieu de générer plusieurs case on en génère une puis on la copie. Ensuite il reste juste a modifier les paramètre diffèrent du clone comme la position ou le matériel. Le temps de chargement de la scène est de environ 11s :

NouveauSystemePerf


On peut voir que la quantité de ressource demander + le temps de chargement de se système est environ 7fois plus rapide. Se qui permet un chargement des chunk sans lag.

TMRomain commented 2 years ago

🥇Amélioration des performances (Système d'affichage des Chunk):

Avec l'ancien système je boucler dans tout les chunk et je vérifier si il était afficher ou cacher puis si je boucler dans tout les case du chunk pour les désactiver un par un. Avec le nouveau système je choisie que le chunk que je doit afficher ou cacher puis avec la technologie DOTS et les query je désactive tout d'un coup.

image

Chaque fonction si dessus désactive toute les case d'un coup, sans boucle. Avec l'ancien système juste le fait de cacher ou afficher les case produisez des lag maintenant on peut se balader au travers des chunk déjà générer avec une baisse de performance beaucoup moins importants.