Besoin de conseils graphismes et performances

Toutes les questions sur le développement Mobile, y compris la partie script.
Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Besoin de conseils graphismes et performances

Message par DJ-OMZ » 24 Sep 2018 20:10

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.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Besoin de conseils graphismes et performances

Message par Alesk » 24 Sep 2018 21:05

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

Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Re: Besoin de conseils graphismes et performances

Message par DJ-OMZ » 25 Sep 2018 11:23

Il y a pas mal de choses que j'ai pas compris dans ton message :lol:
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 :langue2:
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 ?
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).
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 ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Besoin de conseils graphismes et performances

Message par boubouk50 » 25 Sep 2018 11:42

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
"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

Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Re: Besoin de conseils graphismes et performances

Message par DJ-OMZ » 25 Sep 2018 19:49

boubouk50 a écrit :
25 Sep 2018 11:42
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.
Je suis désolé, je ne vois pas dans le lien comment faire cette fusion :/

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Besoin de conseils graphismes et performances

Message par Alesk » 26 Sep 2018 08:48


Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Besoin de conseils graphismes et performances

Message par boubouk50 » 26 Sep 2018 09:24

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
"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

Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Re: Besoin de conseils graphismes et performances

Message par DJ-OMZ » 28 Sep 2018 11:37

boubouk50 a écrit :
26 Sep 2018 09:24
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
J'ai un Empty GameObject que j'ai appelé Foret.
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é ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Besoin de conseils graphismes et performances

Message par boubouk50 » 28 Sep 2018 12:42

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)
"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

Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Re: Besoin de conseils graphismes et performances

Message par DJ-OMZ » 28 Sep 2018 12:58

boubouk50 a écrit :
28 Sep 2018 12:42
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)
Le message complet :
"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.

Répondre

Revenir vers « Développement plateformes mobile Iphone et Android »