Connexion
Menu Principal
Recherche
Menu secondaire
Image Aléatoire
Spiky3.jpg
Publicité
Formation Blender ElephormBlender 3d Elephorm


     




(1) 2 3 4 »


Bonne pratiques pour le jeux vidéo & optimisation.
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1210
Bonjour à toutes et à tous,

Je rédiges ce topic pour deux raisons:
- Avoir une sauvegarde
- Le partager aux autres, tant qu'à faire (c'est en toute humilité que je le fais)

Ce topic à pour but de donner des conseils sur la création et l'optimisation d'un jeu vidéo, surtout pour le BGE mais aussi applicable, selon moi, pour tout autre moteurs de rendu.

Enfin, ce topic est une traduction de cette source. Certes, la rédaction date mais me semble

toujours d'application.

Général:

- Mettre à jour le driver de la carte graphique - À ma connaissance, c'est rare ce problème.

- Désactiver l'Anti-Aliasing dans blender et/ou dans le panneau de configuration de votre driver (Nvidia/ATI-AMD) - Dans la plupart des jeux, ça augmente effectivement les

performances et la qualité visuelle n'est pas très impactée, à mon sens.


- Désactiver le V-Sync au possible.

La camera:

- Rêgler le "clipping" (champ de vision, ne pas confondre avec le "Depth of field", la "profondeur de champ") de la camera peut influencer les performances. - En effet, je

l'ai remarqué aussi. Je ne sais pas l'expliquer, mais toutes faces hors clipping sont ignorés dans les calculs.


L'environnement ou world:

- Utiliser le système de brouillard - Si cela est possible selon le concept de votre projet, cela peut effectivement améliorer les performances.

- Utiliser le LOD (niveau de détail) à foison - Je le recommande activement, ne pas l'utiliser sur un objet qui subit un "replace mesh" !

- Exploiter au maximum l'occlusion culling et le backface culling - À utiliser le plus possible. Les objets en mode occlude permettent de cacher, physiquement et

virtuellement, les objets derrière eux, ce qui donne comme message au moteur de ne pas les calculers et donc ne pas allouer de mémoire.


Objets, meshes et faces:

- Vos modèles doivent avoir le moins de faces possible (appelé aussi low poly) - Je ne dis pas que cela doit être cubique mais vous devez trouver un bon compromis entre les

performances et la qualité visuelle du projet. C'est l'une des étapes les plus longues et difficiles. En général, on peut s'apercevoir de ça quand on complexifie progressivement le terrain

de jeu et les personnages durant le développement. Il n'y a pas de secrets, il faut tester par soi-même.


- Supprimer toutes faces inutiles - j'insiste sur ce point, car quand on modélise, on a tendance à oublier ou laisser des faces inutiles. Pour 10 objets, ça va,

mais si vous les dupliquez, ça fait effet boule-de-neige et vous en vous rendrez compte qu'avec le temps


- Fixez-vous des règles pour le nombre de faces par objets - Un personnage, par exemple, peut atteindre 3000 à 3500 faces mais pas un bâtiments... Ou alors, c'est un

bâtiments clé que l'on veut mettre en valeur. Tout ceci est une question de réflexion et de bon sens.


- Privilegier les faces avec des tiles pour les effets spéciaux. Par anarchy62, je ne suis pas convaincu par ses dires, ayant testé moi-même, j'ai une chute de performance

quand j'ai fais un essais.


Matériaux et shaders:

- Utiliser, au possible, le diffuse "Lambert" et le specular "phong" - on dit que ces deux-là sont rapidement calculés. Je n'en sais pas plus mais je peux vous dire

d'utiliser le plus de paramètres similaires pour chaque objets. Ne pas utiliser un matériau par objet, comme les murs des maisons, les toits, etc.


- Désactiver ou mettre à zéro l'énergie spéculaire, si possible, selon l'objet. - à tester

- Désactiver l'alpha, si possible et si non nécessaire.

- Si vous avez plusieurs couches de textures, utiliser les modes "mix", "add", "substract" ou "multiply". - on dit que ces modes sont rapidement calculés mais je ne comprends

pas pourquoi l'auteur indique ce conseil.


- Utiliser le système nodal - j'ai fais des ébauches fonctionnels mais je ne vois pas de différances, ormis plus de possibilités d'application de texture.

- Désactiver les ombres et les textures "extra", tels que la normal map, specular map, autre - logique mais cela dépend du projet et des besoins.

Les textures:

- Fixez-vous une règle stricte des résolutions de vos textures, par puissance de 2 (2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096) - en effet, plus la

texture est grosse, plus de calcul est nécessaire. Beaucoup de grosses textures = effet boule-de-neige. Blender tolère une taille de texture max de 4096 x 4096. Question de bon sens: quels

sont les éléments visuellement importants et ceux qui ne le sont pas ? Posez-vous la question. Attention ! le format DDS exige ces résolutions, pas plus, pas moins, pas entre !


- Fusionner le plus de textures possible - assignez le moins de textures par objets que possible, ça augmente les calculs. Fusionner ceux-ci est recommandé. Par exemple,

fusionner la saleté avec la texture d'une porte en fer...


- Réutilisez vos matériaux et vos textures le plus possible - évitez le gaspillage: on a tendance à vouloir diversifier visuellement mais c'est pas une bonne chose à long

terme, ni pour vous ni pour votre jeu.


- Utiliser des textures "tilées"/répétées dans une petite résolution est un plus.

- Exploiter la puissance des normals map sur les objets low-poly - faire des objets high poly (beaucoup de faces) ne donnent pas toujours l'effet recherché, BGE ou pas. Ça

consomme beaucoup de calcul niveau moteur de jeu. Dans la plupart des cas, on privilégie les normals map et autres effets


- Utiliser le format de texture DDS - je le recommande activement ! J'en ai constaté les effets récemment ! Auparavant, dans mon projet, je n'avais que des jpg, jpeg et png.

Mon Rasterizer fut saturé à 70-80 %. Avec le format DDS, J'en suis à 10-20 % environ et je constate une meilleure stabilité. Je n'ai pas testé le format TGA. Après quelques recherches, le

format DDS a été spécialement conçu pour être traité de façon brute par les cartes graphiques plutôt que de faire du raffinage avec d'autres formats, ce qui diminue le temps de calcul. En

effet, le mip-mapping est intégrés, c'est un peu le même principe du LOD mais pour la texture: plus vous vous distancez, plus la texture diminue en résolution. D'ailleurs, on retrouve se

format dans beaucoup de jeux tels que Oblivion et Skyrim (pour ne citer que c'est deux-là).


Les lampes et sun:

- Utiliser un seul "sun" et le moins de "lamp" (ou autres types) possible - diminution de performances constatée après avoir mis une vingtaine de lampes, même si leurs

énergie fut à zéro.


- Désactiver le spéculaire que la lampe fait générer - si possible selon le projet

- Exploiter le plus possible de la lumière sous forme de texture (bake lighting).

- Utiliser le moins de shadow (d'ombre) générée par les lampes que possible - en général, l'ombre généré par le sun ou un spot attaché au personnage suffit, ou, le mettre

sous forme de texture.


- Configurer les lampes de sorte à ce qu'elles n'influent que sur un calque en particulier. - logique mais pas testé

La physique:

- Utiliser le moins d'objets dynamiques (rigid body, soft body inclus) que possible. - désactiver la physique selon la distance par rapport au joueur est recommandé.

- Utiliser le mode "bounding box", qui génère une collision en forme basique (cube, cylindre, cône, etc) - à utiliser prudemment

- Désactiver les collisions pour les objets n'en ayant pas besoin. - Utilisez, si possible, le mode "no collision". Vous pouvez désactiver le "physic" dans le matériel de

l’objet en question mais peu recommandé et je ne sait pas pourquoi il est là pour le BGE.


- Utiliser le bounding box "Convex Hull" avec précaution. - il se fie effectivement aux faces de votre objets sans exceptions, tout comme le "static".

Filtres et effets spéciaux:

- Le "depth of field", l’ambiant occlusion, le bloom lighting et tout autre effet peut diminuer les performances - pas testé

- L'utilisation du module video texture en temps réel est gourmands, à utiliser avec précaution. - en optimisant bien le script et en le désactivant au bon moment, ça devrai

le faire.


Animation:

- Utiliser une armature "réelle" - quand je dit ça, je veux dire par là de ne pas utiliser l'armature riggée en jeu, avec les contraintes et tout. L'armature riggée sert

strictement pour la confection d'animation. L'armature réelle, elle, sera utilisée en jeu. Vous devez faire un "bake animation" afin d'avoir les coordonnées de l'armature réelle


- Utiliser le moins de bones (os) possible - c'est très compliqué selon le projet: si vous voulez une armature complète et que vous la multipliez pas 5, vous allez avoir

beaucoup de ralentissements. Au mieux, activez-les selon la distance du joueur par rapport à eux.


Brique logiques et système:

- Optimiser - Si vous utilisez un senseur "always" en mode "toujours vraie" (pour un script python, par exemple), veillez à exploiter à quelle fréquence il envoie un signal

au contrôleur.


- Utiliser le senseur "radar" et "near" prudemment - pas testé mais diminuerai les performances

- Faites un mélange de briques logiques et de scripts, mais en privilégiant les briques. - En effet, si vous rédigez en python le fait de faire avancer votre objet, ce sera

plus gourmand qu'en briques. Impossible de définir pourquoi mais c'est comme ça. Gardez à l'esprit ceci: un senseur lance une impulsion pour activer puis pour désactiver la suite. Plus

d'explications disponible sur demande.


- Utiliser les "states" des contrôleurs - C'est effectivement utile dans le sens où cela vous permet de garder le principal et désactiver le superflu ou encore d'éviter les

répétitions et optimiser le nombre de briques. Un exemple: que votre personnage soie à l'arrêt ou en marche, il doit frapper. Donc, on va créer la commande "frapper" dans une state ajoutée

dans les deux autre "repos" et "marche".


- Limiter le nombre d'objets présents avant et pendant le jeu - j'ai effectivement constaté que plus l'on met d'objets séparés, plus cela diminue les performances. Les

grouper non pas par "group instance" mais comme objets réels semble pallier à ce problème (les empty ne sont pas concernés).


Python:

Optimiser - on dit souvent qu'il faut faire le moins de lignes possible dans un script. Or, je pense personnellement, que c'est plutôt le nombre d'instructions qu'il faut

limiter: pourquoi faire deux vérifications si une seules sera disponible ? Posez-vous la question.




Voilà, j'ai passé certains points qui me semblent inutiles ou que je n'ai moi-même pas compris, j'espère que cela va aider plus d'un pour l'élaboration de leurs projets.

Si, dans ce que j'ai écris, il y à des erreurs de compréhensions concernant le fonctionnement du BGE, n'hésitez pas à me le faire savoir. Si vous avez des astuces à partager que je ne

connais pas, je vous invite à en faire part également.

Dans les deux cas, le topic principal sera mis-à-jour.

Contribution le : 05/07/2017 10:51
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Bonne pratiques pour le jeux vidéo & optimisation.
Fou Furieux du Clan
Inscrit:
28/08/2012 11:13
Post(s): 254
Citation :
- Utiliser le format de texture DDS - je le recommande activement ! J'en ai constaté les effets récemment ! Auparavant, dans mon projet, je n'avais que des jpg, jpeg et png. Mon Rasterizer fut saturé à 70-80 %. Avec le format DDS, J'en suis à 10-20 % environ et je constate une meilleure stabilité. Je n'ai pas testé le format TGA. Après quelques recherches, le format DDS a été spécialement conçu pour être traité de façon brute par les cartes graphiques plutôt que de faire du raffinage avec d'autres formats, ce qui diminue le temps de calcul. En effet, le mip-mapping est intégrés, c'est un peu le même principe du LOD mais pour la texture: plus vous vous distancez, plus la texture diminue en résolution. D'ailleurs, on retrouve se format dans beaucoup de jeux tels que Oblivion et Skyrim (pour ne citer que c'est deux-là).



AHHHHH, la tu as toucher un point sensible!!! ça m’intéresse beaucoup car mois aussi j'ai beaucoup de jpj et png! Le DDs gère l'alpha?

Citation :
le format DDS exige ces résolutions, pas plus, pas moins, pas entre !

Tu veux dire que le DDS gere que le 4096 x 4096? ou que les puissances de 2 ?

Je vais faire des recherches et des testes. Mais si je remplaces tous j'ai du boulot car j'ai 630 images en comptant les masks et tout ! Donc il faudra que je trouve un convertisseur automatique .

Contribution le : 05/07/2017 20:27
Créer un fichier PDF de la contribution Imprimer


Re: Bonne pratiques pour le jeux vidéo & optimisation.
OverdOzed
Inscrit:
19/03/2016 15:30
De Belgique
Post(s): 1210
Le DDS supporte l'alpha et ne gère que les puissances de deux, oui .

J'ai ouï-dire que le programme PhotoFiltre a cette option, la conversion de plusieurs fichiers. Regarde si ça peut t'aider.

Contribution le : 05/07/2017 20:57
_________________
Mon projet jeu vidéo
Mes tutos
Créer un fichier PDF de la contribution Imprimer


Re: Bonne pratiques pour le jeux vidéo & optimisation.
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
Regarde aussi ImageMagick, avec l'outil convert en CLI, c'est sûrement l'une des solutions les plus simples et efficaces.

Contribution le : 05/07/2017 21:03
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Bonne pratiques pour le jeux vidéo & optimisation.
OverdOzed
Inscrit:
26/12/2012 23:15
Post(s): 386
Photoshop peut enregistrer l'image en DDS lui aussi.

Contribution le : 05/07/2017 21:13
_________________
Blog ; http://anarchie-jeu.over-blog.com
Créer un fichier PDF de la contribution Imprimer


Re: Bonne pratiques pour le jeux vidéo & optimisation.
OverdOzed
Inscrit:
21/08/2013 19:12
De CH [+]
Post(s): 1558
@Anarchy62: Par contre question automatisation c'est moins pratique, non?

Contribution le : 05/07/2017 21:15
_________________
BAddons, La Collection d'Addons de Matpi: https://github.com/qwenger/BAddons
Développeur Blender quand j'en ai le temps...

Créer un fichier PDF de la contribution Imprimer


Re: Bonne pratiques pour le jeux vidéo & optimisation.
OverdOzed
Inscrit:
26/12/2012 23:15
Post(s): 386
En tout cas sympa le résumé Redstar, merci beaucoup.

Un petit truc à ajouter peut être pour faire des effets visuels, genre, explosions, magies and co.
Privilégier un plan animé plutôt que trop de particules. Le plan animé avec un petit script ou qui utilise les "tiles" et placé correctement permet beaucoup de choses et me paraît moins lourd. J'ai pu constater dans les jeux dernières générations qu'ils utilisés ce système. Si besoin d'infos la dessus j'ai pas mal travaillé le sujet même si je maîtrise pas encore à 100%. Surtout pour créer des plans animées bouclés. My dream :x

Contribution le : 05/07/2017 21:28
_________________
Blog ; http://anarchie-jeu.over-blog.com
Créer un fichier PDF de la contribution Imprimer


Re: Bonne pratiques pour le jeux vidéo & optimisation.
OverdOzed
Inscrit:
26/12/2012 23:15
Post(s): 386
Oui Matpi effectivement. J'en suis à ouvrir chaque images pour les convertir manuellement :x

Contribution le : 05/07/2017 21:29
_________________
Blog ; http://anarchie-jeu.over-blog.com
Créer un fichier PDF de la contribution Imprimer


Re: Bonne pratiques pour le jeux vidéo & optimisation.
Ze Grand Manitou
Inscrit:
24/07/2003 14:50
De la Région Parisienne
Post(s): 21779
Tu peux le faire en automatique avec des Macros sur Photoshop tu sais ?

@+

Contribution le : 06/07/2017 08:28
_________________

Mickaël Guédon | Site pro : www.mickaelguedon.com | Fondateur du Blender Clan : www.blenderclan.org
Auteur de Formations Blender chez Elephorm
Créer un fichier PDF de la contribution Imprimer


Re: Bonne pratiques pour le jeux vidéo & optimisation.
OverdOzed
Inscrit:
26/12/2012 23:15
Post(s): 386
J'ai jamais trop regardé comment à vrai dire. C'est vrai que ça pourrait être utile :D

Contribution le : 06/07/2017 09:31
_________________
Blog ; http://anarchie-jeu.over-blog.com
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant
(1) 2 3 4 »




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
Mes premières images sous Blender (débutants) mes trucs de noob    [1][2][3]...[16] 156 9987 Aujourd'hui 12:45:43
Gilead_Maerlyn 
Questions & Réponses faire bouger/objet 9 62 Aujourd'hui 11:50:03
moonboots 
[WIP] et travaux terminés [WIP] FLuide et couleur changente - test 4 59 Aujourd'hui 09:36:23
vinceproduc 
Questions & Réponses Problème mise à jour Blender 2.8 Linux 0 27 Aujourd'hui 07:46:52
Krol 
[WIP] et travaux terminés [WIP] Portrait réaliste - Zbrush/Blender    [1][2][3][4] 34 1929 Hier 23:05:36
Papa_Dragon 
[WIP] et travaux terminés Entraînement personnage cartoon    [1][2][3] 23 2918 Hier 22:58:14
busanga 
Questions & Réponses [non résolu] Problème boolean Blender 2.8 9 90 24/04 22:57:12
Akyelle 
Moteur de jeu GameBlender et alternatives Parenter armature 6 390 24/04 18:36:42
MaGe 
Questions & Réponses [résolu] Objet non visible à la caméra 9 89 24/04 12:07:51
Zarathoustra 
Questions & Réponses [résolu] L'onglet Mapping a disparu 4 72 23/04 20:16:07
stigmamax 
Questions & Réponses [non résolu] problème de caméra (et de rendu ?)    [1][2] 13 130 23/04 20:04:43
Guppy88 
Questions & Réponses Supprimer sommets en double 4 93 22/04 16:40:46
thierry_st_malo 
Moteur de jeu GameBlender et alternatives Personnage catapulté 4 126 22/04 11:03:31
MaGe 
Questions & Réponses [non résolu] conseils svp pour modéliser un personnage    [1][2][3]...[6] 51 4452 22/04 08:43:07
blendinfos 
Questions & Réponses [résolu] prblm rendu caméra    [1][2] 11 878 22/04 08:22:59
blendinfos 
Questions & Réponses [non résolu] aligner plusieurs vertices dans un même plan 2 103 22/04 07:12:25
Rimpotche 
Questions & Réponses Exportation avec smooth (.fbx) 3 93 20/04 16:54:10
Redstar 
Questions & Réponses [résolu] Point d'Origine du squelette 1 88 20/04 08:52:17
Zarathoustra 
Questions & Réponses shape key vs NLA 2 126 20/04 06:15:26
Corpia 
The Blender Clan 'tchat Blender 2.8x : Actus, tests, feedback..    [1][2][3] 27 16043 19/04 10:34:50
lucky 

Qui est en ligne
99 utilisateur(s) en ligne (dont 44 sur Forums)

Membre(s): 0
Invité(s): 99


plus...
Nouveaux membres
Krol 26/4/2019
canabalt 23/4/2019
Blaceyes 20/4/2019
MaGe 19/4/2019
Wanzenkova 11/4/2019
krasarah225 11/4/2019
RemiB 9/4/2019
killiann 8/4/2019
lfau13 8/4/2019
lesouriciergris 7/4/2019
Dernier Ajout
super8_2.jpg

Evènements à venir
Mai 7
Anniv OlivS
Mai 18
Anniversaire Luneo
Jui 30
Anniv des Jedi :-D
plus 287 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2019 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445