Partage

Perfomance et jeux 2d

10 septembre 2017 à 15:34:57

Bonjour à tous!

Beaucoup de topics traitent sur les meilleurs outils pour la conception d'un jeu 2d en oubliant le paramètre le plus évident selon moi:

-l'optimisation du jeu en terme de performances.

Bien sure quand on parle d'optimisation on va dire qu'il vaudrait mieux programmer avec un langage bas niveau, avec une librairie, faire son moteur soi même ou autre...

Mais en fait, il y a un autre débat à ce niveau qui m'intéresse réellement, et qui n'a pas vraiment de rapport avec l'efficacité des algorithmes et autre, mais plutôt la façon dont la technologie évolue ces derniers temps. Il semblerait, d'après divers sites (dont je n'ai pas copié le lien...), que les cartes graphiques sont de plus en plus puissantes pour le rendu 3D, mais de moins en moins puissante (elles stagnent au mieux) pour les rendus 2D.

Personnellement, j'ai vite remarqué en utilisant pygame (bibliothèque python pour la création de jeux 2D) qu'un jeu 2D pouvait très vite ramer (même en prenant en compte que je l'optimise mal, que python est pas le langage le plus rapide, etc.).

J'ai l'intention d'utiliser un moteur de jeu à terme, et moi qui me penchait vraiment sur Godot ces derniers temps, j'hésite maintenant avec Unity... Parce que justement, Unity fait de la "fausse 2D", c'est à dire qu'il crée l'illusion de la 2D dans un environnement 3D. Cette technique permet donc d'utiliser la pleine puissance des cartes graphiques actuelles, et les jeux rameraient moins.

Bref, triste réalité pour la 2D... Avez vous aussi senti ces différences? Connaissez vous des jeux 2d exploitant la fausse 3D? des très bon jeux 2D utilisant un moteur 2D pure?

Je connais Hyper 'light drifter' dans ce cas, un super jeu utilisant en plus des couches de traitement d'image. Mais je n'ai pas plus d'infos sur comment ils ont réalisé une telle prouesse..!

-
Edité par mikaelBriolet 10 septembre 2017 à 16:49:48

En apprentissage de python.
11 septembre 2017 à 10:56:00

Salut,

Avant tout, je vous prie de prendre mes propos avec prudence car je m'avance sur un domaine que je ne connais pas vraiment, mais étant joueur et développeur, c'est un sujet qui m'intéresse.

Il faut voir aussi qu'il y a plus de besoin du côté de la 3D, pas seulement en terme de marché mais aussi techniquement, on applique beaucoup moins d'effet, et ils sont moins gourmands, dans la 2D. De mémoire, j'ai un peu de mal à trouver des jeux qui ont des effets dingues en 2D, Ori and the blind forest ? Child of Light ? Touhou Project ? C'est joli, y'a des effets de particules, mais c'est rien à côté d'un bassin d'eau dans un environnement 3D (qui n'est pas fake).

Je pense que tu peux peut-être regarder du côté de Dead Cells, développé avec la langage Haxe par une équipe française MotionTwin. Ce jeu est encore en développement actif et est sorti en early acces. Les développeurs sont assez ouvert à leur communauté, tu pourrais sûrement leur poser des questions (sans aller trop loin dans les détails car c'est tout de même une boite qui vend son jeu, elle ne fournira certainement pas les détails de l'implémentation). J'ai l'impression que c'est de la 3D qui est utilisé pour faire ce gameplay 2D.

Je ne sais pas ce que tu appelle moteur 2D pur, mais sur les sites des moteurs, il est souvent présenté les jeux réalisés avec ce moteur.

Je connais Hyper Light Drifter également, il semblerait que ç'eu été fait avec GameMaker.

Dream on, Dream on, Dream until your dream comes true
11 septembre 2017 à 13:37:23

coucou,

Hyper Light Drifter fait avec Gamemaker oui, comme une bonne dizaines de hits. Et le résultat est incroyable.

Ce que j'appel 'vrai 2d', c'est la 2d crée par superposition de 'sprites', il n'y a aucun 'espace', aucune profondeur intégré au moteur, on applique juste des couches d'images que l'ont met à jour à chaque frame (type SDL, pygame, godot...).

Dead Cell, il semblerait que les animation sont faites en 3D (et donc les characters?)... On entre donc dans une réelle technique hybride, pas de la simple 2D dans un moteur 3D (ils utilisent le langage Haxe avec le framework 3d Heaps). Il semblerait que ce soit le même cas pour Ori, après Child of light je ne sais pas mais il donne aussi l'impression d'un espace 3d derrière.

Le problème est que même si c'est moins gourmand que de la 3d, on en revient à des jeux 2d qu'il faut souvent optimiser au max pour éviter que ça rame, et ce très rapidement. 

Du coup je suis encore dans le flou, les moteurs comme Godot ou LOVE n'ont pas de hits à leur actif (ou du moins, de jeu complet qui permet de se faire une bonne idée de ce que peut vraiment faire le moteur), les bibliothèques (très formatrices) comme la SDL sont souvent décriés pour un tas de truc et ne sont jamais prises au sérieux pour le développement professionnel...

Gamemaker est beaucoup trop cher, et coco2d surtout utilisé pour android et ses petits jeux...

Et pour le reste, on est dans de la 3d au rendu 2d..!

-
Edité par mikaelBriolet 11 septembre 2017 à 13:41:45

En apprentissage de python.
12 septembre 2017 à 11:15:17

mikaelBriolet a écrit:

Ce que j'appel 'vrai 2d', c'est la 2d crée par superposition de 'sprites', il n'y a aucun 'espace', aucune profondeur intégré au moteur, on applique juste des couches d'images que l'ont met à jour à chaque frame (type SDL, pygame, godot...).

La notion de sprite au niveau de la CG, elle n'a jamais existé à ma connaissance. Je serai curieux de voir un rendu matériel 2D qui ne soit pas produit par création d'un zindex à la volée y compris sur du vieux matos. Les primitives de rendu 2D dans les CG n'ont pas vraiment de raisons de ne pas être câblé sur les unités de calcul de rendu 3D qui font ça très bien. Le calcul de profondeur, ça coûte pour ainsi dire quedal, donc qu'il soit là ou pas, OSEF.

Mais sinon il n'y a pas vraiment de mystère : il faut éviter de communiquer trop souvent avec la CG. Et pour ça, une bonne documentation de moteur devrait préciser sur les fonctionnalités "attention ceci est coûteux".

RTFM [C++][FaqC++][Boost][Qt] "Tout devrait être rendu aussi simple que possible, mais pas plus." Einstein. ZesteDeSavoir: SDZ Reborn.
14 septembre 2017 à 12:22:49

salut,

super tu as l'air de t'y connaître. :)

Merci pour ces précisions, et du coup, d'après ce que je lis: développer un jeu 2D sur un moteur tel que Unity n'impacte pas du tout les performances (à minima), mais cela peut il augmenter les performances? Et comment?

J'ai surtout vu par rapport à la CG qu'elle était plus performante pour certaines tâches et pas pour d'autres aussi (un comparateur qui comparait la CG de la PSP, puis 2 macbook pro il me semble -ou ipad-). Donc certaines 'communications' seraient bien moins coûteuse..!

En apprentissage de python.
14 septembre 2017 à 14:23:08

mikaelBriolet a écrit:

Mais cela peut il augmenter les performances? Et comment?

Ben, c'est un peu trop large comme point de vue. Développer avec un moteur de jeu, c'est avoir trois garanties : le travail sera bien plus facile (parce que beaucoup moins de choses à faire), moins générateur de bugs (le moteur est énormément testé, et on a moins de code à écrire nous même donc par extension moins de bugs) et des performances très bonne (parce que le moteur a subi un fort travail d'optimisation). On pourrait encore augmenter les performances en codant nous mêmes pour notre tâche particulière. Mais à quel prix ?

mikaelBriolet a écrit:

J'ai surtout vu par rapport à la CG qu'elle était plus performante pour certaines tâches et pas pour d'autres aussi.

Comme tout matériel.

mikaelBriolet a écrit:

Donc certaines 'communications' seraient bien moins coûteuse..!

En interne de la CG, c'est assez rapide. Mais un échange entre processeur et CG, c'est très long. Donc si les premiers ne gênent pas trop, les seconds doivent être fait avec parcimonie.

RTFM [C++][FaqC++][Boost][Qt] "Tout devrait être rendu aussi simple que possible, mais pas plus." Einstein. ZesteDeSavoir: SDZ Reborn.

Perfomance et jeux 2d

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown