Débuter avec 2d Game Dev (C ++): DirectX ou OpenGL? [fermé]


12

Donc, je suis un étudiant qui cherche à mettre mon pied dans la porte du développement de jeux et je cherche à faire quelque chose en 2D, peut-être un tetris / envahisseurs spatiaux / quelque chose avec une petite souris-interaction clone.

J'ai orienté mes recherches vers C ++ et 2d et j'ai finalement été dirigé vers DirectX / OpenGL

Maintenant, si je comprends bien, tous ces packages feront pour moi dessiner des choses sur un écran. Et c'est tout ce qui m'importe vraiment à ce stade. Le son n'est pas nécessaire. L'entrée peut être gérée avec stdlib probablement.

Donc, pour un débutant essayant de créer un jeu de base en C ++, recommanderiez-vous DirectX ou OpenGL? Pourquoi? Quelles sont les principales différences de fonctionnalités entre les deux? Quel est le plus utilisable?

Réponses:


16

Je recommanderais SDL ( http://www.libsdl.org/ ) pour la 2D, c'est là que j'ai commencé avec des trucs graphiques et c'était assez facile à utiliser, même si je connaissais à peine le C ++ à l'époque.

Ce (miroir) est l'ensemble des tutoriels avec lesquels j'ai commencé et que j'ai trouvé très utiles (ils étaient un peu datés il y a même ~ 4 ans quand je les ai parcourus, mais je ne pense pas que SDL ait beaucoup changé et ils devraient toujours être pertinents ).

SDL gère également les entrées et SDL_Mixer peut effectuer l'audio de base.

Je n'ai jamais travaillé avec DirectDraw ou OpenGL pour des trucs 2D, donc je ne peux pas y commenter, mais je peux certainement recommander SDL.


1
J'ai trouvé SDL bon, mais il était très difficile d'obtenir les chemins d'accès et la configuration inclut correctement.
Skeith

1
Consultez également lazyfoo.net/SDL_tutorials pour certains tutoriels décents (comprend des tutoriels d'installation pour divers IDE).
BeanBag

D'accord avec @Skeith. Je ne peux pas imaginer les maux de tête liés à la configuration SDL pour la première fois pour les débutants. Il est assez difficile de gérer certains des problèmes de configuration courants avec des amateurs ou même des professionnels. Après avoir effectué la configuration SDL pour la première fois, j'ai pu obtenir n'importe quoi pour le reste de ma vie, en toute simplicité. Voilà combien de maux de tête ça m'a donné; combien d'expérience j'ai acquise sur plus que ce qui est typique pour la mise en place d'une bibliothèque. Il y avait trop longtemps pour se rappeler ce qui m'avait posé exactement le plus de problèmes, ou quels problèmes j'avais, mais toutes les autres bibliothèques étaient faciles à configurer.
Carter81

7

J'ai utilisé à la fois SDL et SFML pour mes projets de jeux. J'ai utilisé SDL pour un jeu fini, un jeu tetris, et j'ai surtout utilisé SFML comme couche de fenêtrage pour des expériences de shader. D'après mon expérience, je dois dire que SDL est ce qu'il dit. Il s'agit d'une simple couche de médias directs, qui résume les données avec lesquelles vos médias (son et vidéo) fonctionnent à un niveau avec lequel vous pouvez interagir sur différentes plates-formes. C'est "tout" cela.

Pour cette raison, vous devez généralement le mélanger avec quelques autres bibliothèques, notamment SDL_mixer, SDL_gfx et SDL_image, qui fournissent les fonctionnalités dont tout le monde a besoin pour créer des jeux.

Toutes ces bibliothèques sont également destinées au langage de programmation C et respectent ses conventions. Non pas qu'il y ait quelque chose de mal à cela, mais si vous voulez une approche orientée objet de la façon dont vous interagissez avec io, vous devez essentiellement construire cette couche vous-même.

SFML est livré avec tout dès la sortie de la boîte. Il a du son, il a de la vidéo, il a du mixage, il a un plafonnement des images et il est orienté objet. Si c'est ce que vous voulez, je vous recommande d'y aller. SFML dispose également d'une couche d'abstraction pour certaines des fonctionnalités de base d'Opengl (spécifiquement beginShape / EndShape et pixel shaders). Je ne pense pas que SDL ait quelque chose comme ça, juste une méthode pour fusionner avec elle.

PS Ne pas éloigner la conversation de C / C ++, mais si vous n'utilisez pas ce langage pour une raison particulière, et que vous voulez un plus simple, il y a toujours pygame. Ce qui est essentiellement SDL + pour Python.


2
SFML est également C ++, tandis que SDL est C. Cela fait une différence si vous voulez réellement apprendre C ++.
jsimmons

5

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844

Je suis d'accord avec ces remarques et je pense que c'est une discussion stellaire sur la raison pour laquelle DirectX est meilleur qu'OpenGL.

Ce journal est en réponse à David chez Wolfire.

J'espère que cela sert à équilibrer un peu. ;)

Mais en général, si vous utilisez un framework multi-plateforme et multi-API:

Utilisez DirectX sur Windows et OpenGL sur * nix.


Bonne lecture =) Quel champ de mines ce sujet est ...
Nailer

6
404, page non trouvée
axel22


J'obtiens un 404 sur le lien archive.gamedev.net / ....
Exilyth

4

http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

Je suis d'accord avec ces remarques et je pense que c'est une discussion stellaire sur la raison pour laquelle OpenGL est meilleur que DirectX.

Cependant, cette question est absolument une question d'opinion, et DirectX a absolument ses avantages sur OpenGL, en particulier 10 et 11 et surtout dans le contexte du développement de jeux.

De plus, si vous choisissez d'aller avec OpenGL, SDL est une bibliothèque merveilleuse et très populaire, et il y a beaucoup de ressources pour apprendre OpenGL (NeHe, etc.) - mais c'est peut-être la place pour une autre question.


1
En contrepoint de la discussion OGL vs DX, les gars de Unity ont explicitement décidé de passer à DirectX sur Windows car les pilotes OpenGL par défaut pour la plupart des cartes vidéo sont si mauvais. Je n'ai pas la référence devant moi, mais au moment de leurs conférences, ils ont dit quelque chose comme les pilotes OGL étant leur problème de crash # 1 sur Windows. Heureusement, leur couche d'abstraction signifie que vous ne vous souciez pas vraiment du point de vue des utilisateurs.
Tetrad

Nous fabriquons des logiciels de visualisation orientés métier pour unix et windows, et je peux confirmer que la majorité des problèmes que nous voyons sur Windows sont liés au pilote OpenGL.
drxzcl

1

Si vous débutez, il est probablement préférable d'utiliser un moteur ou un cadre 2D existant tel que SFML .


1

J'aime Direct X et je l'utilise depuis plusieurs années sur de nombreux projets mais si votre apprentissage fait attention aux problèmes de version.

J'ai trouvé que la majorité du code x direct ne se compile pas sous une version différente et cela peut être un enfer si vous essayez de suivre un tutoriel.

Je recommande Direct X car il existe des fonctionnalités pour tout ce qui le rend plus facile lorsque vous commencez et des façons plus avancées de manipuler les choses à mesure que vous avancez.


1

Moteur de jeu de Haaf

Je ne sais pas comment il est à jour (je veux dire que ce n'est pas le cas, mais je ne pense pas qu'il y ait une raison pour qu'il ne devrait pas être utilisable), mais je l'ai utilisé il y a quelque temps (C ++) et je vraiment apprécié. HGE n'a pas été mis à jour depuis le 05.08, mais encore une fois, je me souviens qu'il était assez simple à apprendre et rapide. Il est également livré avec toutes sortes d'outils et d'aide comme un système de particules.

Quoi qu'il en soit, si ce que vous voulez est de créer un véritable jeu, au lieu d'apprendre ce qui se passe "sous le capot" dans les processus de dessin et autres, je recommanderais d'utiliser quelque chose de niveau supérieur à openGL ou DirectX, ou vous allez passer votre temps à dessiner des choses à l'écran plutôt que de créer un jeu réel. Et HGE vaut vraiment le détour.

http://hge.relishgames.com/


0

Je suis dans la même position que vous, après avoir commencé à travailler sur le développement de jeux moi-même (sur la plateforme iPhone) il y a quelques mois. Venant d'un arrière-plan C, je vous suggère en fait d'utiliser un framework (particulièrement Cocos2d).

Les avantages d'un framework sont plus que ceux qui peuvent être discutés dans cet article - mais il gère principalement la plupart des traitements de bas niveau avec OpenGL et vous fournit des méthodes pour gérer ce dont vous aurez probablement besoin pour le développement de jeux. Ils ont une grande communauté, sont open source, et donc si vous avez besoin d'accéder au code de base du framework / de modifier n'importe quel morceau en fonction de vos besoins / aller au bas niveau OpenGL si nécessaire - vous avez toujours ce choix.

Vous pouvez suivre la voie de l'OpenGL direct, mais pour moi, cela semble juste exagéré.

Vous voudrez probablement également examiner les différentes bibliothèques de physique qui existent - Google Chipmunk et Box2D pour plus d'informations.

à votre santé!


1
+1 pour ne pas mériter d'être à -2. Trop de trolls sur ce site donnant des négatifs sans raison. Honnêtement, je ne comprends même pas pourquoi ils permettent même d'afficher quoi que ce soit en dessous de 0. C'est aussi idiot que YouTube permettant le vote en aval.
Carter81
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.