L'usage de DirectX peut-il avoir sa pertinence pour les jeux indépendants ?
Le 2013-04-26 21:44:04, par c.aug, Inactif
Dans les jeux faits avec peu de moyens, je vois une nette préférence pour OpenGL, ce qui me semble normal parce qu'on va cibler plutôt les smartphoned que le marché du CD-ROM.
Donc à priori, DirectX c'est plutôt pour l'AAA, OpenGL plutôt pour les jeux de série B.
Enfin du moins c'est ce qui semble le plus évident à priori, enfin si on a en référence un Angry Birds. Maintenant si on part du cadre « amateur », enfin disons qu'on part des moyens d'un Notch, c'est-à-dire de zéro, donc qu'on n'est pas assez riche pour s'offrir trois ou quatre portages, les licences de diffusion qui vont avec, les développeurs spécialistes de chaque OS, ainsi que les douze machines de test, bref envisager sérieusement de faire du jeu smartphone s'il n'y a pas une société avec des moyens derrière c'est impensable.
Donc dans ce cadre là, et après avoir exclu les solutions type Java/middleware, tout ce qu'il te reste c'est de cibler Windows.
Et là donc je ne sais pas si OpenGL est encore un choix judicieux.
Même si OpenGL est plus facile d'utilisation, à chaque ligne de code tapée j'ai peur de tomber sur l'interminable liste des trucs d'OpenGL qui foirent sur Windows. Alors qu'au moins avec les trucs de Microsoft, même si la doc est indigeste, on sait qu'on est en terrain ami, c'est plein d'outils qui marchent bien dans Windows, et donc à priori le code tapé cause beaucoup moins de risques de planter le GPU.
Voilà donc après avoir tenu compte de ces détails techniques, je sais pas si OpenGL c'est un choix intelligent dans un cadre où on risque guère de sortir de Windows.
Qu'en pensez-vous ?
Donc à priori, DirectX c'est plutôt pour l'AAA, OpenGL plutôt pour les jeux de série B.
Enfin du moins c'est ce qui semble le plus évident à priori, enfin si on a en référence un Angry Birds. Maintenant si on part du cadre « amateur », enfin disons qu'on part des moyens d'un Notch, c'est-à-dire de zéro, donc qu'on n'est pas assez riche pour s'offrir trois ou quatre portages, les licences de diffusion qui vont avec, les développeurs spécialistes de chaque OS, ainsi que les douze machines de test, bref envisager sérieusement de faire du jeu smartphone s'il n'y a pas une société avec des moyens derrière c'est impensable.
Donc dans ce cadre là, et après avoir exclu les solutions type Java/middleware, tout ce qu'il te reste c'est de cibler Windows.
Et là donc je ne sais pas si OpenGL est encore un choix judicieux.
Même si OpenGL est plus facile d'utilisation, à chaque ligne de code tapée j'ai peur de tomber sur l'interminable liste des trucs d'OpenGL qui foirent sur Windows. Alors qu'au moins avec les trucs de Microsoft, même si la doc est indigeste, on sait qu'on est en terrain ami, c'est plein d'outils qui marchent bien dans Windows, et donc à priori le code tapé cause beaucoup moins de risques de planter le GPU.
Voilà donc après avoir tenu compte de ces détails techniques, je sais pas si OpenGL c'est un choix intelligent dans un cadre où on risque guère de sortir de Windows.
-
moldaviInactifBonjour.
DirectX ou OpenGL, le choix est plutôt simple.
Si tu souhaites faire un programme multi-plateforme, sans écrire 36 versions de ton programme (Windows, Linux, Apple, Console), alors c'est OpenGL.
Si ton programme est uniquement destiné à Windows, alors c'est DirectX. Mais même dans ce cas là, tu pourrais choisir OpenGL, tout simplement parce que tu es plus à l'aise avec cette API.
Il faut jauger les avantages/inconvénients, selon le projet.
Mon choix personnel, c'est DirectX, HLSL, Visual Studio, Cuda pour le multi GPU (je n'ai que des cartes NVidia).
Pourquoi ce choix ?
Il y a plein de raisons mais j'abrège :
je considère qu'être expert dans toutes ces technologies est hors de portée d'un cerveau humain. Ce qui m'intéresse, ce n'est pas de bidouiller 50 frameworks, c'est d'en maîtriser 1. Chacun sa philosophie.
J'admire les développeurs qui font du multi-plateforme, mais je les plains tellement ils doivent s'arracher les cheveux. Et les standards ny changent rien : chaque OS a ses spécificités, et adapter le standard relève souvent de la bidouille (contre-performant donc). Il n'y a quà voir les navigateurs, malgré les standards, les développeurs web s'arrachent les cheveux. Leurs pages web ne s'affichent pas de la même façon selon le navigateurs. Bidouille sur bidouille pour que ce soit correct.
Ce n'est pas ma conception de l'informatique. Déjà que même en me basant sur un seul OS/Framework, je suis parfois obligé de bidouiller...
Bref j'ai fait mon choix. A toi de faire le tien.le 27/04/2013 à 0:21 -
moldaviInactifRe.
DirectX9 c'est 2002, DirectX10 c'est 2006 et DirectX11 c'est 2009. Trois changement en 7 ans.
La lib DirectX change tout le temps, hum...le 27/04/2013 à 1:31 -
LittleWhiteResponsable 2D/3D/JeuxDéjà, les fenêtres (sous Windows) n'ont pas nécessairement de vsync : http://stackoverflow.com/questions/3...d-windowed-app
De deux, la moitié des réponses Google sur la vsync sont liés au logiciel du pilote vidéo (oui, on peut forcer la désactivation de la vsync dans l'utilitaire de NVIDIA, AMD et d'Intel).
Après, bien sur on peut activer ou la désactiver dans le programme lors de l'initialisation du contexte (la configurer surement aussi).
Pour ce qui d'OpenGL c'est ici : http://www.opengl.org/wiki/Swap_Interval
Ce que je voulais dire, le fait d'attendre le faisceau et tout le tralala, ce n'est pas le développeur qui fait quoi que ce soit (comme au temps des jeux en ASM). Maintenant, il y a juste un flag à changer et on est pratiquement bon (pour peu que la gameloop soit efficace).le 27/04/2013 à 13:06 -
stardeathExpert confirmémon avis ne peut pas être 100% neutre, j'ai forcément soit utilisé des termes péjoratifs contre l'un ou contre l'autre, voir oublié des éléments à charge.
il y a tellement de question à répondre pour le choix d'une api par rapport à l'autre que l'on prend forcément des biais pour conseiller et/ou choisir :
- langage de programmation
- plutôt c ou plutôt objet
- débutant total ou expérimenté
- plateforme de destination
- ide
- possibilité d'accès au net pour avoir des renseignements/poser des questions
- formats des assets
- cg de test, machine de test, machine cible, os cible
- connaissance d'autres technos (exemple flagrant, si on connait déjà com)
- pourquoi ne pas utiliser un moteur 3D déjà cross techno
etc. etc.
l'idéal pour moi étant de tester les 2, j'ai eu la chance d'avoir eut des cours et le temps de tester les 2 technos, j'ai pu donc choisir selon mes gouts personnels mais cela n'engage que moi.le 04/05/2013 à 2:01 -
LittleWhiteResponsable 2D/3D/JeuxBonjour,
Je trouve certains propos assez étonnant.
J'aimerai bien avoir le paragraphe de la documentation qui dit que le vsync OpenGL est bancal. Surtout que maintenant on utilise tous du double buffering, qui est implémenté par défaut partout, alors qu'il y a 20 ans, ce n'était pas le cas.
Un jeu pro, qui ne souffre aucun problème avec OpenGL ? -> Unreal Tournament 2004.
Le plus drole pour le vsync, c'est que sous Windows, ce n'est pas le programmeur qui le gère. Il est activé de base, l'application est calé sur 60 FPS et c'est tout. Après, si le programme n'est pas capable de gérer les deltatime et autre ralentissement (ou alors désactivation du vsync), on y peut rien, c'est la faute du programmeur, mais pour le vsync, ce n'est pas lui.
Actuellement, l'état d'OpenGL a vraiment été amélioré. Oui, il y a quelques temps (cela se compte en années), le support d'OpenGL était cramoisi, mais il y a une belle amélioration de la chose, tout de même. Il suffit d'avoir ses pilotes à jour. Bon, malgré cela, il arrive que AMD ne fasse pas toujours un support parfait, mais bon c'est aussi en voie d'amélioration.
Aussi, pour l'histoire des version de DirectX, il y a eu exactement la même évolution dans OpenGL : suppression du pipeline fixe. Oui, il a fallu, peut être deux ans pour que les programmeurs de moteur s'y habitue, mais maintenant, tous les monde fait du DirectX 11/OpenGL 4 (dans les jeux pros je parle), sans que cela gêne personne. Les moteurs sont codés, la réimplémentation est effectuée (DirectX 9 + DirectX 11) et donc, cela est bien géré.
On développera toujours DirectX9 aussi, pour la XBox 360, il ne faut pas l'oublier(même si c'est un peu spécifique).
Pour les programmes multiplateforme, c'est logiquement un choix de développement qu'il faut faire avant de commencer le projet. Plus précisément, il faut juste créer une interface sur les fonctions de bases, afin de permettre une réimplémentation native facilement sans que cela casse le reste du programme.Un jeu que tu as développé il y a 5 ans en DirectX9, tu vas le mettre à jour en DirectX11 pour faire les choses bien, et gagner 5 FPS.le 27/04/2013 à 9:48 -
shenron666Expert confirméà priori = idée reçue
vas faire de l'opengl sous linux ou sur console autre que microsoft
t'inquiètes, il y a aussi plein d'outils qui ne marchent pas comme il faudrait
directx n'est pas un choix intelligent, c'est un choix de simplicité et de restriction de plateforme
opengl est un choix intelligent, lui au moins est portable, et très utilisé dans le monde professionnel
après si tu te limite à windows... libre à toi, question de goût
bizarre, doom3 ne m'a jamais crashé un GPU
quand à angry birds, je ne vois pas le rapport avec opengl...
elle date de quand ta doc opengl ?
quake3 avec le vsync marche parfaitement
tiens, j'avais pas remarqué
tu as vu ça ou ?
les jeux opengl en dehors d'id software ne sont pas légion
la plupart des moteurs (source, unreal) sont opengl + directx
pourquoi ? opengl n'a rien de commercial
un dessin animé c'est 15 fps pour percevoir l'animation
30 fps c'est plus qu'assez pour la grande majorité de la population
peu de personnes sont capables de voir la différence entre 30 et 40 fps
t'es pas sympa avec les epileptiques, tu dois pas connaitre la maladie pour en parler comme ça
tu es sûr que tu viens de l'époque ms-dos ?
à l'époque des 386, on ignorait totalement la vitesse de la machine, on avait des jeux qui tournaient à 10fps sur certaines (wing commander)
le même jeu sur un 486 tournait à 40fps
quand au vsync off, ça existait sur certains jeux (epic de did)le 03/05/2013 à 9:31 -
stardeathExpert confirmétes derniers posts n'étaient pas particulièrement neutre.
si tu veux être neutre, voilà je pense le propos :
- certes opengl est utilisé sur beaucoup de plateforme mais à chaque fois ce n'est soit pas la même version, ou pire la même variante. opengl 3 ou 4 selon l'opengl de pc "de bureau" et pire opengl es 1 ou 2 pour les terminaux mobiles, et des variantes plus ou moins exotiques pour les consoles de salon.
le support sur les os dépendent presque totalement des constructeurs de cg, khronos servant globalement de décoration et officiellement seul la spec complète est fournis.
la source de samples étant seulement la communauté, les constructeurs de cg sortant seulement une fois de temps en temps une démo.
api 2D/3D uniquement, le reste est à puiser dans des libs supplémentaires.
- directx, restreint aux os windows, 2 versions majeures pour cibler cette branche d'os, 9 et 11, plus les versions exotiques pour consoles. (attention, je ne parle pas de windows phone parce que je ne sais pas ce que ça utilise comme version de directx, à froid je dirai surement un dx11 en compatibilité 9)
api sous l'égide totale de microsoft, ne prenant pas en charge toutes les fonctionnalités des cartes graphiques mais seulement un pool plus ou moins commun.
support, je pense, assez poussé au cul par microsoft. pas de spec complète fournis.
grandes quantités de samples fournis ainsi que tuto, mais doc pas forcément très exhaustive ni très compréhensible.
api pas seulement 2D/3D, gestion des maths 3D ainsi que le chargement des textures, et un format (ou 2) mal documenté de modèles 3D, input utilisateur (dinput ou xinput), musique (xaudio) etc.
api plus ou moins cohérente, certains modules étant carrément abandonnés (dinput)
ce que j'en conclue, c'est que opengl ou directx, c'est surtout une question de préférence d'api (plutôt c en opengl et plutôt objet com en dx) et non plus en terme de fonctionnalités (opengl4 et dx11 c'est bonnet blanc et blanc bonnet)
et en tout cas certainement pas en portabilité, vu que dans les 2 cas, faudra se limiter sur les fonctionnalités pour avoir un code strictement identique.le 04/05/2013 à 1:20 -
moldaviInactifBon là je comprends plus rien.
Un programme qui me demande le téléchargement de Dx9, je n'ai jamais connu.le 27/04/2013 à 2:47 -
erwanlbInactifSans oublier la pendaison des salariés sur la place publique
T'es Terminator toi si tu vois chaque image...
Toc toc....Sarah Connor, créatrice de jeux vidéos à 30fps ? PAN..........le 29/04/2013 à 12:13 -
_MAIDMembre confirmé...puis....
Hmmm, contradictoire ça, non ? (ou alors quelque chose m'a échappé)le 29/04/2013 à 15:42