Consommation excessive de mémoire
-
- Messages : 45
- Inscription : 26 Mars 2019 16:39
Consommation excessive de mémoire
Bonjour à tous !
Je rencontre un problème dans mon jeu open world, j'ai construit une île assez grande avec des éléments répartis sur toute l'île (un village, un stade, des entrepôts, une route EasyRoads, une usine etc..). Le nombre de GameObject commence donc à être important sur la scène.
Quand je fais un build du jeu, la consommation de mémoire est très excessive (6Go utilisés voire plus) et le nombre de FPS est très faible (inférieur à 20)donc quasi injouable.
Tous mes objets sont bien équipés de LOD et j'ai construit l'occlusion culling. Tous les objets sont aussi en static.
Auriez-vous des solutions pour une scène contenant un gros nombre de GameObject afin que la consommation de mémoire soit beaucoup moins important ? Lorsque le terrain était vide, je n'avais aucun problème donc j'en déduis qu'une optimisation est nécessaire auprès des objets mais comment faire ?
Je vous remercie énormément par avance pour votre aide !
Je rencontre un problème dans mon jeu open world, j'ai construit une île assez grande avec des éléments répartis sur toute l'île (un village, un stade, des entrepôts, une route EasyRoads, une usine etc..). Le nombre de GameObject commence donc à être important sur la scène.
Quand je fais un build du jeu, la consommation de mémoire est très excessive (6Go utilisés voire plus) et le nombre de FPS est très faible (inférieur à 20)donc quasi injouable.
Tous mes objets sont bien équipés de LOD et j'ai construit l'occlusion culling. Tous les objets sont aussi en static.
Auriez-vous des solutions pour une scène contenant un gros nombre de GameObject afin que la consommation de mémoire soit beaucoup moins important ? Lorsque le terrain était vide, je n'avais aucun problème donc j'en déduis qu'une optimisation est nécessaire auprès des objets mais comment faire ?
Je vous remercie énormément par avance pour votre aide !
Re: Consommation excessive de mémoire
Bonjour,
c'est toujours difficile de répondre avec précision à ce genre de problème. Surtout qu'il manque énormément d'éléments permettant de se faire une juste idée du soucis, comme par exemple ta config, ou les élément statistique de base de ta fenêtre Game (Tris, Batches, Passcalls, etc...). As-tu regardé du coté du profiler pour mieux cerner où se situe la charge ? Au delà du nombre d'objets à afficher, quels sont aussi les effets utilisés dans ta scène (VFX, postprocess, nbre/type de lights, type de shaders, etc...) ? Tu parles d'occlusion culling, mais en extérieur son effet est souvent très limité.
Après il n'y a pas de secret, si ta scène est bien trop lourde, il va falloir explorer d'autre approches.
Un lien intéressant, à consulter si pas déjà fait: https://docs.unity3d.com/Manual/Optimiz ... mance.html
c'est toujours difficile de répondre avec précision à ce genre de problème. Surtout qu'il manque énormément d'éléments permettant de se faire une juste idée du soucis, comme par exemple ta config, ou les élément statistique de base de ta fenêtre Game (Tris, Batches, Passcalls, etc...). As-tu regardé du coté du profiler pour mieux cerner où se situe la charge ? Au delà du nombre d'objets à afficher, quels sont aussi les effets utilisés dans ta scène (VFX, postprocess, nbre/type de lights, type de shaders, etc...) ? Tu parles d'occlusion culling, mais en extérieur son effet est souvent très limité.
Après il n'y a pas de secret, si ta scène est bien trop lourde, il va falloir explorer d'autre approches.
Un lien intéressant, à consulter si pas déjà fait: https://docs.unity3d.com/Manual/Optimiz ... mance.html
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
-
- Messages : 45
- Inscription : 26 Mars 2019 16:39
Re: Consommation excessive de mémoire
Bonjour,
J'ai supprimé des objets inutiles de ma scène, mais la quantité de mémoire utilisée reste élevée.
Dans le profiler, j'obtiens ceci :
Dans les 5GB d'Assets du profiler, 3.97GB sont utilisés pour les Texture2D. J'ai supprimé certains objets inutiles qui consommaient le plus dans ma scène, mais la quantité de mémoire utilisée reste élevée.
J'ai supprimé des objets inutiles de ma scène, mais la quantité de mémoire utilisée reste élevée.
Dans le profiler, j'obtiens ceci :
Dans les 5GB d'Assets du profiler, 3.97GB sont utilisés pour les Texture2D. J'ai supprimé certains objets inutiles qui consommaient le plus dans ma scène, mais la quantité de mémoire utilisée reste élevée.
Re: Consommation excessive de mémoire
les textures ont toujours mis à mal les ressources niveau mémoire.
Donc commence par là, par exemple en terme de résolution, voir au niveau de la compression.
Donc commence par là, par exemple en terme de résolution, voir au niveau de la compression.
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
- stigma
- Messages : 1408
- Inscription : 17 Nov 2012 18:29
- Localisation : Perdu dans les mondes de Myst
- Contact :
Re: Consommation excessive de mémoire
Question basique, mais tes textures sont bien toutes en puissance de 2 ?
Sinon j'ai aussi des objets partout sur mon île réparties en zones. Par défaut tous les objets des zones sont désactivées. Quand j'entre dans une zone, les objets sont activés et quand je sors, ils sont désactivés. En général les objets sont dans un bâtiment qui reste activé. Donc de loin, on se rend pas compte qu'ils sont vides.
Sinon j'ai aussi des objets partout sur mon île réparties en zones. Par défaut tous les objets des zones sont désactivées. Quand j'entre dans une zone, les objets sont activés et quand je sors, ils sont désactivés. En général les objets sont dans un bâtiment qui reste activé. Donc de loin, on se rend pas compte qu'ils sont vides.
-
- Messages : 45
- Inscription : 26 Mars 2019 16:39
Re: Consommation excessive de mémoire
Merci beaucoup pour vos réponses.
Le truc c'est que même quand les objets sont désactivés, la consommation de mémoire reste élevée.
Il faut qu'ils soient supprimés de la scène pour que la consommation diminue.
Même si tous les objets sur mon terrain sont désactivés, la consommation reste identique.
Donc je pensais justement qu'en affichant que très peu d'objets et en désactivant les objets lointains du joueur ou selon la taille des objets (via LOD notamment), ça allait changer quelque chose mais pas du tout, est-ce normal que les textures consomment de la RAM même si elles ne sont pas visibles ?
Le problème c'est que je n'ai pas vraiment rempli toute ma carte donc je suis un peu bloqué vis à vis de ça, même si j'optimise les textures, je vais devoir ajouter encore pas mal d'objets sur ma carte pour faire une ville complète donc je vois mal comment je vais pouvoir réaliser ça sans avoir une consommation excessive de mémoire
Auriez-vous des solutions vis à vis de ça ?
Le truc c'est que même quand les objets sont désactivés, la consommation de mémoire reste élevée.
Il faut qu'ils soient supprimés de la scène pour que la consommation diminue.
Même si tous les objets sur mon terrain sont désactivés, la consommation reste identique.
Donc je pensais justement qu'en affichant que très peu d'objets et en désactivant les objets lointains du joueur ou selon la taille des objets (via LOD notamment), ça allait changer quelque chose mais pas du tout, est-ce normal que les textures consomment de la RAM même si elles ne sont pas visibles ?
Le problème c'est que je n'ai pas vraiment rempli toute ma carte donc je suis un peu bloqué vis à vis de ça, même si j'optimise les textures, je vais devoir ajouter encore pas mal d'objets sur ma carte pour faire une ville complète donc je vois mal comment je vais pouvoir réaliser ça sans avoir une consommation excessive de mémoire
Auriez-vous des solutions vis à vis de ça ?
Re: Consommation excessive de mémoire
oui bien sûr. Un objet désactivé ne veut pas dire qu'il n'est pas présent dans ta scène. Il n'est simplement pas visible. Cela va influencer sur les perf niveau framerate, mais ne changera rien niveau ressources mémoire. Comme pour la partie LOD, cela va jouer sur l'optimisation du framerate, mais ne changera rien niveau ressource, voir avoir même tendance à avoir l'effet inverse.calypsomen a écrit : ↑04 Août 2020 11:55est-ce normal que les textures consomment de la RAM même si elles ne sont pas visibles ?
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
-
- Messages : 45
- Inscription : 26 Mars 2019 16:39
Re: Consommation excessive de mémoire
Ne serais-ce pas possible D'utiliser AssetBundle ? Pour load les assets du terrain qui sont proches de nous et unload les assets lointains, je ne sais pas si c'est possible. Peut être que ça causerait un freeze le temps de l'instanciation de certains gros objets ou prefabs contenant un nombre important d'objets.
Je ne sais pas si ça pourrait être une solution? Ça permettrait d'économiser de la mémoire vu que les assets seraient unload donc plus présents et utilisés dans la scène jusqu'à ce que le joueur revienne dans la zone de l'asset.
Je ne sais pas si ça pourrait être une solution? Ça permettrait d'économiser de la mémoire vu que les assets seraient unload donc plus présents et utilisés dans la scène jusqu'à ce que le joueur revienne dans la zone de l'asset.
- stigma
- Messages : 1408
- Inscription : 17 Nov 2012 18:29
- Localisation : Perdu dans les mondes de Myst
- Contact :
Re: Consommation excessive de mémoire
C'est à creuser.
Re: Consommation excessive de mémoire
oui, un chargement/déchargement dynamique est une des solutions.
C'est pas toujours simple à mettre en œuvre, et en effet tu risque d'être confronté à des lag.
Quitte à faire, n'est-il vraiment pas possible de diviser ta scène en scènes de taille plus modeste (comme fait dans la plupart des jeux) ? Le SceneManager est ton ami.
C'est pas toujours simple à mettre en œuvre, et en effet tu risque d'être confronté à des lag.
Quitte à faire, n'est-il vraiment pas possible de diviser ta scène en scènes de taille plus modeste (comme fait dans la plupart des jeux) ? Le SceneManager est ton ami.
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ