Les UI trop lourd sur android et iOS ?

Toutes les questions sur le développement Mobile, y compris la partie script.
cyfi
Messages : 9
Inscription : 12 Août 2011 13:18

Les UI trop lourd sur android et iOS ?

Message par cyfi » 17 Mai 2016 11:38

Bonjour a tous !

Ca fait plusieurs semaines que je galère à faire tourner mon jeu sur tous les supports (android, iOS ). J’ai beau chercher partout, je ne trouve pas !

Image

Voici les tests

Editeur : 50 fps avec des ralentissements de temps en temps à cause de vSync
Smartphone android Moto E (plutôt bas de gamme) : 60 fps (nickel)
iPad mini 2 Retina : 60 fps (nickel)
Smartphone android JIAYU S3 (plutôt puissant) : 24fps
iPad 3 Retina avec iOS 9.3 : 20 fps :(

Quand je profile l’iPad 3 j’ai :
90% d’overhead
30 drawcalls max pour le jeu
70 batched drawcalls en Dynamic Batch
5000 tri et 8000 vertex

Les optimisations que j’ai faites

Sprite Packer -> J’ai regroupé toutes mes icônes de UI en une image
QualitySettings -> hard shadow only, low resolution, 50 de distance, Vsync activé (de toute les manières obligé pour l’iPad)
Physics -> toute la physique est géré en 2D. Elle consomme peu d’après le profiler.
Le personnage est modifié régulièrement, il est donc MarkDynamic()
Je n’ai aucun objet static car il bouge tous
J’ai enlever tous les matériaux standard (ca me mettait un warning sur l’iPad 3) et j’ai mis à la place « mobile / diffuse» 
Quasiment tous les objets qui ont une couleur unique (donc tous sauf le personnage). Je leurs ai mis tous le même shader que j’ai fait d’après ce tuto https://www.youtube.com/watch?v=O3dbE2t8lPQ de unity cookie.


Image


Voici un profile de l’iPad 3 quand je suis dans le menu du jeu. Le menu est une scène 3d assez simple. La ça tourne correctement.
Cependant, quand j’affiche un panel toujours dans la même scène, avec un menu déroulant comme dans l’image ci dessous, j’obtiens des ralentissements (cf le profile ci dessus)


Image

Notez également que j’ai quelques autres warnings sur xCode du type :

warning: arm64 function not 4-byte aligned: ltmp0 from /Users/rochet/Dangerous Bounce/Dangerous Bounce/Libraries/libiPhone-lib.a(PLCrashAsyncThread_current-5565F35D16E4818B.o)


Je me demande donc :


Pourquoi ai-je des ralentissement sur l’iPad 3 iOS 9 dans le jeu ?
Est ce que les UI serait à l’origine du problème ?

Mon jeu a vraiment besoin de tourner a 60fps pour être fluide.
Je vous remercie d’avance !

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

Re: Les UI trop lourd sur android et iOS ?

Message par boubouk50 » 17 Mai 2016 11:49

Dans le profiler, tu peux regarder plus en profondeur ce qui provoque le ralentissement dans l'overview. Tu cliques sur ton graphique, il se met en pause et tu peux vérifier.
Perso, tu devrais vérifier la taille de tes sprites. Qu'ils soient pas surdimensionnés donc qu'ils ne pompent pas trop de RAM.
"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

cyfi
Messages : 9
Inscription : 12 Août 2011 13:18

Re: Les UI trop lourd sur android et iOS ?

Message par cyfi » 17 Mai 2016 16:33

Salut

J'ai bien vérifié tout mes sprites et ils sont bien dimensionnés.
Je vais faire des tests en les compressant encore plus mais quand même pour un iPad 3, ça m'étonnerais qu'il ne soit pas capable de supporter une image de 1024 x 2048 (c'est l'image qui regroupe toutes les icônes de tête qui apparaissent dans le menu déroulant) surtout qu'il a un écran rétina.
Par ailleurs j'ai pu lire que le Scroll Rect était gourmand en ressource mais pourquoi il y aurait-il une telle baisse de fps ? Pourquoi est-ce fluide sur les autres appareils même moins puissant ?

Est ce qu'il est gourmand d'utiliser les variables Animator ?

Merci !

cyfi
Messages : 9
Inscription : 12 Août 2011 13:18

Re: Les UI trop lourd sur android et iOS ?

Message par cyfi » 02 Juin 2016 11:28

J'ai continué mes recherches et même en compressant les images ça ne fonctionne pas.

Voici les tests que j'ai fais :
- Scripting Backend : J'ai testé Mono2x
- J'ai activé l'option Strip Engine Code
- J'ai viré toute la physique et j'ai programmé par moi même
- J'ai fait un test en enlevant tout les GUI
- Désactivé dans le menu tous les GUI en dehors du champs de vision

Et avec tout cela : Pas de résultat !

Notez également que j'ai beaucoup d'animator qui tournent : un pour chaque panel avec deux états (affiché, caché).

Je vous met deux captures d'écran du profiler :

En voici une pour le jeu

Image

Et voici une qui montre la mémoire

Image

Je trouve ca énorme que System.ExecutableAndDlls prenne 0.79GB !
Est ce que quelqu'un aurait une idée d'où cela pourrait provenir ?

Est ce que l'AOT Compilation Options pourrait aider ?

Merci d'avance :) J'avoue que je ne sais plus trop où chercher !

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

Re: Les UI trop lourd sur android et iOS ?

Message par boubouk50 » 02 Juin 2016 11:45

0.79GB, c'est énorme!
Je suis pas calé pour ça, mais je dirai que tu dois utiliser des dlls/plugins bien trop complets et gourmands. Strip Engine Code permet de baisser l'utilisation de mémoire, apparemment.
Je serai plutôt d'avis d'aller voir du côté des dlls que tu utilises et de n'utiliser que celles dont tu as réellement besoin, voire essayer d'en trouver des moins complètes, voire reprogrammer un peu (-> je veux dire par là, que si tu utilises une dll énorme pour une simple fonction, ça peut valoir le coup de la programmer à ta sauce si c'est possible).
"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

cyfi
Messages : 9
Inscription : 12 Août 2011 13:18

Re: Les UI trop lourd sur android et iOS ?

Message par cyfi » 02 Juin 2016 18:46

Salut

J'ai utilisé très peu de plug-in , seulement 1 pour le Google Play Dev Console et un autre pour résoudre un bug. J'ai viré les deux : toujours pas de résultat. Par contre j'utilise Unity Analytics et SceneManager pour passer d'une scène a une autre.

J'ai fait d'autre tests avec la police de caractère que j'utilise : J'ai essayé ne pas la mettre dynamic mais ça na rien fait.

Autre chose intéressant, j'ai refait des tests sur le JIAYU en le profilant. De temps en temps le jeu tourne à 60 fps parfaitement pendant quelques parties ! Cependant les lags reviennent et durent plusieurs parties. Quand ça lag, j'obtient 90% de gfx.WaitForPresent.

Merci pour ta réponse rapide !

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Les UI trop lourd sur android et iOS ?

Message par F@B » 02 Juin 2016 23:30

Salut

Est-ce que tu utilises des scrollrect avec des mask ??? si oui enlève les mask et ajoute des Rect Mask 2D à la place.

As-tu bien fait le tour des sprites voir que tu n'ai pas des sprite énormes qui trainent quelquepart ?


pour le GFXWaitForPresent, as tu l'Vsync d'activé ? c'est probablement normal en fait c'est la syncrho des FPS max.
http://answers.unity3d.com/questions/69 ... esent.html
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

cyfi
Messages : 9
Inscription : 12 Août 2011 13:18

Re: Les UI trop lourd sur android et iOS ?

Message par cyfi » 03 Juin 2016 18:58

Oui j'utilisais les scrollrect avec des masks. Je l'ai changé par un RectMask2D mais malheureusement je n'ai pas vu vraiment différence :(
Merci quand même du conseil, ça ne peut que amélioré les performances.

Pour le vSync, il est toujours activés pour deux raisons :
- Sur iOS c'est obligatoire
- Sur les autres appareils, le jeu parait légèrement saccadé même à 60fps du fait que la caméra se déplace continuellement.

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: Les UI trop lourd sur android et iOS ?

Message par simonj » 04 Juin 2016 00:58

Moi de mon coté je fais des jeux à interfaces. Donc à quasi 100% interface Unity avec le système d'UI. Et sur ma plus grosse application (qui elle n'est pas un jeu), j'ai pas mal de lags sur des tablettes qui ne sont pas au top.

J'ai fait pas mal d'optim' mais si vous avez des conseils encore, je suis preneur.

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Les UI trop lourd sur android et iOS ?

Message par F@B » 04 Juin 2016 10:51

ha oui j'oubliais, très important désactiver le pixel perfect !

et le scroll rect le RectMask2d a en principe changé beaucoup de chose face au mask normal

http://forum.unity3d.com/threads/scroll ... ow.396366/

l'UI unity reste galère, a mon premier build sur mon XperiaZ qu'a un paquet d'années, j'etais écran figé tellement ça lag.

plusieurs optis a vérifier :

le sprite packer et des images sprites petites 256
le pixel perfect, radical pour moi
RectMask2D a la place des mask ET de mon objectpoolling dans la liste (a priori il le fait pour nous)
éviter le multi canvas
désactiver tout ce qui ne sert pas, et faire de l'objectpooling si c'est nécessaire
bien entendu éviter les Update() voir s'interdire ces dernières en utilisant des Events

chose étrange il faut que je débranche mon téléphone de l'USB sinon en mode debug il souffre ! et encore plus avec le profiler.

une fois tout ça réglé mon interface est quasi fluide sous mon experia daubé.
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Répondre

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