Messagerie


Problème de performances

Xsoul
mardi 10 janvier 2017 à 13:32
Salut à tous, cette fois ci c'est moi qui viens vous demander un coup de main ^^

Sur mon projet (Dark Devotion) j'ai des problèmes de performances avec les PC qui ont des cartes graphiques faibles!

Vu que depuis le début je bosse sur un gros PC bien violent je me rendais pas compte que certains pc plus modestes pouvaient être embêtés ! Donc oui j'aurais dû le prendre en compte depuis le début, pas la peine de revenir sur le passé, ce qui est fait est fait :D

Alors mes plus grosses scènes ont :
- Jusqu'à 1200 objets en même temps
- 3500 lignes de code, optimisé pas mal, lues le moins possible mais jai quand meme quelques boucles pour chaque objet qui se lisent pas super souvent
- Résolution 1920x1080
- Certains salles font du 12000px de long par 8000 de haut
- Jai bcp d'objets qui ne sont pas inactivés sur loin de la scène
- Jai des objets avec bcp de frames d'animations mais transparence coupée
- Beaucoup d'objets globaux avec "chargement à la demande" je sais pas ce que ça change ce dernier truc :p
- Pas mal de shaders sur des objets genre Ombre, BrightnessAndContrast, certains sont modifiés en temps réel selon des conditions


J'ai déjà lu l'article fait par le gars qui conseillait des optims mais je veux savoir si vous aviez des conseils?

Merci d'avance!
Falco
mardi 10 janvier 2017 à 13:42
Yop je m'incruste un peu :P
Pour avoir analysé le code d'Xsoul, je n'ai rien trouvé de vraiment gênant, le tout est assez optimisé. Je pense que le problème vient surtout de la façon dont est géré les maps (c'est du brut, pas d'éditeur de map, et tous les objets sont affichés au démarrage) également de la grande résolution de l'application, et surtout des nombreux shaders et effets utilisés.
Pour l'instant la technique que je lui ai conseillé c'est de proposer une option pour désactiver les shaders et autres effets visuels sur les PC un peu plus faibles, en général c'est la solution proposé par la majorité des jeux.
Si vous avez d'autres techniques d'optimisation en tout cas je suis également preneur ça peut toujours servir !
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
mardi 10 janvier 2017 à 13:47
J'opterai pour une version HD avec un avertissement : nécessite un config minimale (avec détails).
Et une version en 1024x768 resizée. Je ne sais pas si tu as codé avec beaucoup de coordonnées brutes. Mais si elles sont relatives, avec la fonction "cloner application" tout se redimensionne automatiquement avec un fichier txt qui te dit ce que tu dois revoir.
Xsoul
mardi 10 janvier 2017 à 13:55
Je connaissais pas ça!! :o où se trouve cette option? :p
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
mardi 10 janvier 2017 à 13:58
Je suis sur le téléphone, mais je suis sûr que quelqu'un peut te faire une capture d'écran. Bouton de droite sur ton application. Seulement sur la version dev
Xsoul
mardi 10 janvier 2017 à 14:04
Ok super je regarde ça en rentrant!!
Nuagedan100
mardi 10 janvier 2017 à 14:29
Je suis pas assez pro pour te donner des conseils désolé. Pour l option cloner. Tu te met sur l'icône du jeu toute en haut la ou tu peux donner un nom a ta production dans la fenêtre de toutes tes scenes.

HAUT A GAUCHE
Ensuite 2eme boutons de ta souris et tu fait cloner.

Ca va te proposer plusieurs resolutions. Tu selectione celle qui te convient le mieux et tu clic.

Comme patrice a dit un fichier texte va être généré sur toute les éventuelles erreurs ou decalages etcc qui ferons sans doute bugs ta creations a toi de les pointés et corrigés. One by one.

Je te conseil cette astuce pour ton .mfa
Créer un dossier Game_1024_768 (comme tu le sens !)

Met y dedans une copie de ton mfa actuelle dans sa dernier version.

Ensuite tu louvre et tu fais comme dicte plus haut.
Cloner reso ok .

Cela va te refaire dans ta fenêtre actuel. Le jeu en-dessous avec toute ces scènes et fenêtre resizer en 1024x768.
Minutieusement tu supprimer partie du dessus qui correspond au scenes 1920x1080.

Tu enregistre tu aura ton fichiee mfa pour ton jeu en 1024...

Comme ca si jamais il se passe quoi ce soit ou on sais jamais tu aura une copie de côté. Il te restera plus qu'à faire tes correctifs.

Soie sur de la résolution que tu souhaite utilisé au final. Afin De ne pas te retaper tous les correctifs a chaque fois.

Bon courage. J'espère être au maximum compréhensible car je suis moi meme aussi sur mon téléphone.
Eagle4
241 messages
Fusion 2.5 Dev
Fusion 2.5+ Exporteur Android Exporteur HTML5 Exporteur iOS
mardi 10 janvier 2017 à 15:44
Si tu as tout codé pour du Full HD ça peut être cool de garder ça, ce sera plus vendeur ! ^^

Après il faut surtout voir plusieurs choses. Déjà, personnellement j'essai de ne JAMAIS dépassé les 800 Objets actifs simultanés, c'est vraiment trop lent sur beaucoup de machines sinon. Et dans tous les cas, il faut faire en sorte de ne pas avoir plus 400 objets dans la scène, avec la limite des 800 en cas d'effets temporaire. J'insiste sur le temporaire ;)

1200 Objets actifs ça me parait énorme, si tu as des effets, des particules ou autre, il faut faire en sorte qu'il soit détruit s'ils ne sont pas dans le champs de vision. 500 Objets dans le champs de vision ça sera déjà phénoménale, ce sera un vrai feu d'artifice...

Ensuite concernant les différentes machines, il faut faire attention à la mémoire vidéo (et non pas que RAM comme on pense souvent). il faut savoir que dans la carte graphique les texture (n'importe qu'elle image est une texture) ne peuvent avoir une dimension qu'en multiple de 2 donc 64x64, 128x128, 256x256, 512x512, 1024x1024, 2048x2018...
Si tu as une image en 2200x 300, ce sera en réalité équivalent à 4096x4096 en mémoire !!
Dans l'ensemble, il ne faut (pareil) JAMAIS avoir des textures de plus de 2048x2048. Dans ce cas précis il vaut carrément mieux découper en plusieurs images de 512 px max de large.

Concernant les animations, de la même façon, cela fait énormément de texture en mémoire, étant donné que tu as un style pixel art, il faut peut être optimisé certaines animations quitte à ce qu'elles soient légèrement moins fluide...

Enfin les Shaders peuvent avoir un réel impact négatif sur les performances, SURTOUT sur une résolution de 1920x1080... Je te conseillerais de virer déjà purement et simplement le shader pour la luminosité (essai de voir plutôt avec un objets qui modifierais le GAMMA de Windows)

Après, si ça t’intéresse je peux aussi tenter de voir comment améliorer plus dans ton mfa...
890 messages

mardi 10 janvier 2017 à 17:18
Salut Xsoul,

Pour ma part, je ferais çà :
-1 éditeur qui exporte ta map de collision et le positionnement de tes blocs graphiques ( reste à savoir si c'est le même array ou si tu as une taille différente entre tes blocs de collision et tes blocs graphiques.)
-chargement de tes collisions sur la fenêtre affichée + 1colonne à gauche et 1 colonne à droite avec un past to background et un destroy de l'objet collision.
-chargement des graphiques (images) avec les mêmes limites

De cette façon, tu limites le nombre d'objet. l'idéal serait d'avoir des blocs graphiques pas trop petits, mais ne dépassant pas 256x256.

Bonne continuation !
Xsoul
mardi 10 janvier 2017 à 19:41
Merci à tous, je n'ai pas le temps de regarder cette semaine c'est la folie au boulot ^^ je regarde sûrement tout ça ce week end :D
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 33 visiteurs au total

Derniers messages