Besoin de conseils graphismes et performances
Besoin de conseils graphismes et performances
Bonjour,
J'éspère avoir posté ça au bon endroit
Voila, je suis assez débutant sur Unity, j'ai un projet sur lequel je bosse depuis un moment.
J'aimerais tenter de mettre ce Jeu sur le Play Store et de voir ce que ça peut donner...
Donc le jeu est pour les mobiles, et j'aimerais savoir comment faire pour le rendre le plus fluide possible, tout en ayant de beaux décors.
Le style de jeu est un puzzle-game qui s'inspire pas mal du jeu Monument Valley pour ceux qui connaissent (une vue isométrique fixe, sur un puzzle ou on contrôle un personnage qui se déplace lorsque l'on clique sur un endroit).
J'aurais 2 questions :
D'abord, comment dois-je m'y prendre pour avoir un résultat fluide sur Mobile ?
J'ai plusieurs niveaux, et je constate une baisse de la frame-rate dans certains, lorsque j'ai des décors (des arbres).
J'ai pu améliorer le résultat en enlevant des choses inutiles, comme les box colliders des décors, leur Animator, et en déclarant ces décors comme statiques, mais il reste une petite différence qui subsiste quand-même...
La 2ème question : Dans un de mes mondes, j'aimerais mettre de l'eau comme décor, pouvez vous me guider vers un tuto pour avoir un résultat le plus light possible ? (J'ai tenté du low-poly sur Blender, mais la encore, le résultat assomme mes fps).
J’espère pouvoir avoir de l'aide, merci a vous.
J'éspère avoir posté ça au bon endroit
Voila, je suis assez débutant sur Unity, j'ai un projet sur lequel je bosse depuis un moment.
J'aimerais tenter de mettre ce Jeu sur le Play Store et de voir ce que ça peut donner...
Donc le jeu est pour les mobiles, et j'aimerais savoir comment faire pour le rendre le plus fluide possible, tout en ayant de beaux décors.
Le style de jeu est un puzzle-game qui s'inspire pas mal du jeu Monument Valley pour ceux qui connaissent (une vue isométrique fixe, sur un puzzle ou on contrôle un personnage qui se déplace lorsque l'on clique sur un endroit).
J'aurais 2 questions :
D'abord, comment dois-je m'y prendre pour avoir un résultat fluide sur Mobile ?
J'ai plusieurs niveaux, et je constate une baisse de la frame-rate dans certains, lorsque j'ai des décors (des arbres).
J'ai pu améliorer le résultat en enlevant des choses inutiles, comme les box colliders des décors, leur Animator, et en déclarant ces décors comme statiques, mais il reste une petite différence qui subsiste quand-même...
La 2ème question : Dans un de mes mondes, j'aimerais mettre de l'eau comme décor, pouvez vous me guider vers un tuto pour avoir un résultat le plus light possible ? (J'ai tenté du low-poly sur Blender, mais la encore, le résultat assomme mes fps).
J’espère pouvoir avoir de l'aide, merci a vous.
Re: Besoin de conseils graphismes et performances
Salut,
Ce qui bouffe pas mal de performance sur mobiles ce sont les meshes superposés avec un shader semi transparents. Il faut éviter ça au maximum.
Ensuite, il faut utiliser des shaders optimisés pour mobiles, évidemment
Et il faut aussi essayer de faire tourner le batching automatique d'Unity fond, ou bien s'assurer d'avoir le moins possibles de meshes différents séparés (en gros, tout ce qui est statique et qui a le même shader devrait être un seul mesh).
Tu peux trouver pas mal de détails ici : https://docs.unity3d.com/Manual/MobileO ... Guide.html
Ce qui bouffe pas mal de performance sur mobiles ce sont les meshes superposés avec un shader semi transparents. Il faut éviter ça au maximum.
Ensuite, il faut utiliser des shaders optimisés pour mobiles, évidemment
Et il faut aussi essayer de faire tourner le batching automatique d'Unity fond, ou bien s'assurer d'avoir le moins possibles de meshes différents séparés (en gros, tout ce qui est statique et qui a le même shader devrait être un seul mesh).
Tu peux trouver pas mal de détails ici : https://docs.unity3d.com/Manual/MobileO ... Guide.html
Re: Besoin de conseils graphismes et performances
Il y a pas mal de choses que j'ai pas compris dans ton message
Bon d'abord les meshes, ce sont les modèles, les polygones quoi, donc il faut éviter de les superposer, j'ai bon ?
Les shaders, a ce niveau tu m'as perdu
Pour ma part j'utilise des modèles et je leur crée un Material que j'applique sur le modèle... J'ai jamais touché aux shaders. C'est une faute grave ?
Bon d'abord les meshes, ce sont les modèles, les polygones quoi, donc il faut éviter de les superposer, j'ai bon ?
Les shaders, a ce niveau tu m'as perdu
Pour ma part j'utilise des modèles et je leur crée un Material que j'applique sur le modèle... J'ai jamais touché aux shaders. C'est une faute grave ?
J'ai pas compris. En gros, j'ai un cube jaune en statique, j'applique le Material "Jaune" sur le cube, et je copie colle le cube autant de fois que je le veux dans le décor, c'est ça ?Et il faut aussi essayer de faire tourner le batching automatique d'Unity fond, ou bien s'assurer d'avoir le moins possibles de meshes différents séparés (en gros, tout ce qui est statique et qui a le même shader devrait être un seul mesh).
- boubouk50
- ModoGenereux
- Messages : 6185
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Besoin de conseils graphismes et performances
As-tu lu le lien? C'est tout écrit dedans.
En gros, il faut limiter les DrawCalls, c'est à dire les appels à la carte graphique pour dessiner. C’est lent.
(je fais très large) Chaque occurrence d'un matériau par objet envoie un DrawCall. Donc avoir 4 matériaux différents sur un objet fait 4 DrawCalls. Si tu as 10 fois cet objet dans la scène. Tu vas en avoir 4 x 10 = 40.
Il faut donc fusionner les objets qui possèdent les mêmes matériaux. Et donc avoir 4 objets avec un matériau chacun. soit 4 DrawCalls.
Déjà, là tu as une première opti.
Ensuite, pour les shaders, il s'agit de la manière dont le matériau réagit à la lumière (+ ou -). Certains, sont plutôt gourmands puisqu'ils utilisent tout -> Emissive, Normal, transparence, etc.
Pour le mobile, c'est lourd. Il vaut mieux utiliser des shaders compatibles mobiles déjà optimisé. Tu en as certains de base sous Shader/Mobile. Pour changer le shader d'un matériau, tu vas dans ce matériau et tu as en haut de celui-ci le DropDownList Shader. Tu cliques dessus et peux après changer de shader.
https://docs.unity3d.com/2017.1/Documen ... rials.html
En gros, il faut limiter les DrawCalls, c'est à dire les appels à la carte graphique pour dessiner. C’est lent.
(je fais très large) Chaque occurrence d'un matériau par objet envoie un DrawCall. Donc avoir 4 matériaux différents sur un objet fait 4 DrawCalls. Si tu as 10 fois cet objet dans la scène. Tu vas en avoir 4 x 10 = 40.
Il faut donc fusionner les objets qui possèdent les mêmes matériaux. Et donc avoir 4 objets avec un matériau chacun. soit 4 DrawCalls.
Déjà, là tu as une première opti.
Ensuite, pour les shaders, il s'agit de la manière dont le matériau réagit à la lumière (+ ou -). Certains, sont plutôt gourmands puisqu'ils utilisent tout -> Emissive, Normal, transparence, etc.
Pour le mobile, c'est lourd. Il vaut mieux utiliser des shaders compatibles mobiles déjà optimisé. Tu en as certains de base sous Shader/Mobile. Pour changer le shader d'un matériau, tu vas dans ce matériau et tu as en haut de celui-ci le DropDownList Shader. Tu cliques dessus et peux après changer de shader.
https://docs.unity3d.com/2017.1/Documen ... rials.html
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Besoin de conseils graphismes et performances
Fais un tour ici aussi : https://avangarde-software.com/insight- ... 017-3-0p1/
- boubouk50
- ModoGenereux
- Messages : 6185
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Besoin de conseils graphismes et performances
La fusion ne se fait pas généralement dans Unity mais en amont.
Il est possible de le faire en script via CombineMeshes
Sinon, certains assets du store sont spécialisés dessus: Mesh Baker
Il est possible de le faire en script via CombineMeshes
Sinon, certains assets du store sont spécialisés dessus: Mesh Baker
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Besoin de conseils graphismes et performances
J'ai un Empty GameObject que j'ai appelé Foret.boubouk50 a écrit : ↑26 Sep 2018 09:24La fusion ne se fait pas généralement dans Unity mais en amont.
Il est possible de le faire en script via CombineMeshes
Sinon, certains assets du store sont spécialisés dessus: Mesh Baker
Dedans, j'ai pleins de gameObjects qui sont mes arbres.
J'ai appliqué le script a Foret. Au départ j'avais une erreur, il fallait ajouter un Mesh a Foret.
Par la suite j'ai eu une autre erreur "Cannot combine Mesh that does not allow access...", j'avais tout en static, j'ai retiré le static.
Et du coup maintenant, je n'ai plus d'erreur, mais je n'ai aucun arbre qui s'affiche... Ou ai-je foiré ?
- boubouk50
- ModoGenereux
- Messages : 6185
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: Besoin de conseils graphismes et performances
that does not allow access: ...
Tu as coupé le message d'erreur! La partie la plus importante en plus. Je suppose que c'est Mesh Statics et pas Line Mesh ou toutes les autres possibilités...
Il me semble que tu ne peux pas combiner tes objets Static, puisqu'ils vont changer à cause de la fusion.
Pour la disparition, là, par contre, je ne peux vraiment t'aider.
Sont-ce des arbres générés à partir du Terrain? Vu qu'il y a un lien entre, fusionner le casserait, et donc les arbres ne s'afficherait plus. Ca pourrait provenir de là), mais je n'ai jamais été confronté à cela (Ni même utilisé CombineMeshes d'ailleurs)
Tu as coupé le message d'erreur! La partie la plus importante en plus. Je suppose que c'est Mesh Statics et pas Line Mesh ou toutes les autres possibilités...
Il me semble que tu ne peux pas combiner tes objets Static, puisqu'ils vont changer à cause de la fusion.
Pour la disparition, là, par contre, je ne peux vraiment t'aider.
Sont-ce des arbres générés à partir du Terrain? Vu qu'il y a un lien entre, fusionner le casserait, et donc les arbres ne s'afficherait plus. Ca pourrait provenir de là), mais je n'ai jamais été confronté à cela (Ni même utilisé CombineMeshes d'ailleurs)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Re: Besoin de conseils graphismes et performances
Le message complet :boubouk50 a écrit : ↑28 Sep 2018 12:42that does not allow access: ...
Tu as coupé le message d'erreur! La partie la plus importante en plus. Je suppose que c'est Mesh Statics et pas Line Mesh ou toutes les autres possibilités...
Il me semble que tu ne peux pas combiner tes objets Static, puisqu'ils vont changer à cause de la fusion.
Pour la disparition, là, par contre, je ne peux vraiment t'aider.
Sont-ce des arbres générés à partir du Terrain? Vu qu'il y a un lien entre, fusionner le casserait, et donc les arbres ne s'afficherait plus. Ca pourrait provenir de là), mais je n'ai jamais été confronté à cela (Ni même utilisé CombineMeshes d'ailleurs)
"Cannot combine mesh that does not allow access: Combined Mesh (root: scene)
UnityEngine.Mesh:CombineMeshes(CombineInstance[])
CombineMeshes:Start() (at Assets/Scripts/CombineMeshes.cs:20)"
Ce sont des arbres que j'ai fait sur Blender. Il y a un tronc avec son Material et des feuilles, les mêmes répétées a chaque fois et qui ont aussi leur material.