Erste Schritte mit 2d Game Dev (C ++): DirectX oder OpenGL? [geschlossen]

12

Also, ich bin ein Student, der meinen Fuß in die Tür der Spieleentwicklung bekommen möchte und etwas 2D machen möchte, vielleicht einen Tetris / Space Invaders / etwas-mit-einer-kleinen-Maus-Interaktion-Klon.

Ich richtete meine Suche in Richtung C ++ und 2d und wurde schließlich zu DirectX / OpenGL geführt

Soweit ich weiß, werden all diese Pakete für mich nur dazu dienen, Dinge auf einem Bildschirm zu zeichnen. Und das ist alles, was mich an dieser Stelle wirklich interessiert. Ton ist nicht erforderlich. Die Eingabe kann wahrscheinlich mit stdlib erfolgen.

Würden Sie einem Anfänger, der versucht, ein Basisspiel in C ++ zu erstellen, DirectX oder OpenGL empfehlen? Warum? Was sind einige Hauptunterschiede zwischen den beiden? Welches ist brauchbarer?

Dfowj
quelle

Antworten:

16

Ich würde SDL ( http://www.libsdl.org/ ) für 2D empfehlen. Dort habe ich zuerst mit Grafik angefangen und es war ziemlich einfach zu bedienen, obwohl ich C ++ zu der Zeit kaum kannte.

Dies (Spiegel) ist eine Reihe von Tutorials, mit denen ich begonnen habe und die ich als sehr nützlich empfand (sie waren bereits vor ~ 4 Jahren etwas veraltet, als ich sie durchgearbeitet habe), aber ich denke, SDL hat sich nicht wesentlich geändert und sie sollten immer noch relevant sein ).

SDL übernimmt auch die Eingabebearbeitung und SDL_Mixer kann grundlegende Audiodaten verarbeiten.

Ich habe noch nie mit DirectDraw oder OpenGL für 2D gearbeitet, daher kann ich dort keine Kommentare abgeben, kann SDL aber definitiv empfehlen.

Riley Adams
quelle
1
Ich fand SDL gut, aber es war sehr schwierig, die Pfade und das Setup richtig abzurufen.
Skeith
1
Schauen Sie sich auch lazyfoo.net/SDL_tutorials für einige anständige Tutorials an (enthält Setup-Tutorials für verschiedene IDEs).
BeanBag
Einverstanden mit @Skeith. Ich kann mir nicht vorstellen, wie schwierig es für Anfänger ist, SDL zum ersten Mal einzurichten. Es ist schwierig genug, mit einigen der häufigsten Einrichtungsprobleme von Amateuren oder sogar Profis umzugehen. Nachdem ich SDL zum ersten Mal installiert hatte, konnte ich für den Rest meines Lebens mit Leichtigkeit ALLES einrichten. Das ist, wie viele Kopfschmerzen es mir gab; Wie viel Erfahrung habe ich über mehr gelernt, als für das Einrichten einer Bibliothek typisch ist? Es war zu lange her, um sich zu erinnern, was genau mir die meisten Probleme bereitete oder welche Probleme ich hatte, aber alle anderen Bibliotheken waren einfach einzurichten.
Carter81
7

Ich habe sowohl SDL als auch SFML für meine Spieleprojekte verwendet. Ich habe SDL für ein fertiges Spiel, ein Tetris-Spiel, und meistens SFML als Fensterschicht für Shader-Experimente verwendet. Aus meiner Erfahrung muss ich sagen, dass SDL das ist, was es sagt. Es handelt sich um eine einfache Ebene für direkte Medien, die die Daten, mit denen Ihre Medien (Ton und Video) arbeiten, auf eine Ebene abstrahiert, mit der Sie auf verschiedenen Plattformen interagieren können. Das ist "alles", was es tut.

Aus diesem Grund müssen Sie es im Allgemeinen mit einigen anderen Bibliotheken mischen, insbesondere SDL_mixer, SDL_gfx und SDL_image, die Funktionen bieten, die jeder zum Erstellen von Spielen benötigt.

Alle diese Bibliotheken sind auch für die Programmiersprache C gedacht und folgen deren Konventionen. Daran ist nichts auszusetzen, aber wenn Sie einen objektorientierten Ansatz für die Interaktion mit io wünschen, müssen Sie diese Ebene im Grunde selbst erstellen.

SFML wird mit sofort einsatzbereitem Lieferumfang geliefert. Es hat Sound, es hat Video, es hat Mixing, es hat Frame-Capping und es ist objektorientiert. Wenn es das ist, was Sie wollen, würde ich empfehlen, dass Sie dafür gehen. SFML hat auch eine Abstraktionsebene für einige der grundlegenden Funktionen in opengl (insbesondere beginShape / EndShape und Pixel-Shader). Ich glaube nicht, dass SDL so etwas hat, nur eine Methode, um sich damit zu verbinden.

PS: Um die Konversation nicht aus C / C ++ zu vertreiben, aber wenn Sie diese Sprache aus einem bestimmten Grund nicht verwenden und eine einfachere Sprache wünschen, gibt es immer ein Pygame. Welches ist im Grunde SDL + für Python.

Robert Vella
quelle
2
SFML ist auch C ++, wohingegen SDL C. Dies macht einen Unterschied, wenn Sie tatsächlich C ++ lernen möchten.
Jsimmons
5

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

Ich stimme diesen Ausführungen zu und denke, es ist eine hervorragende Diskussion darüber, warum DirectX besser als OpenGL ist.

Dieses Tagebuch ist eine Antwort auf David in Wolfire.

Ich hoffe, das dient dazu, es ein bisschen auszugleichen. ;)

Wenn Sie jedoch ein plattformübergreifendes, API-übergreifendes Framework verwenden, gilt im Allgemeinen Folgendes:

Verwenden Sie DirectX unter Windows und OpenGL unter * nix.

jacmoe
quelle
Great read =) Was für ein Minenfeld dieses Thema ist ...
Nailer
6
404, Seite nicht gefunden
axel22
Ich bekomme eine 404 auf den archive.gamedev.net / ... Link.
Exilyth
4

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

Ich stimme diesen Ausführungen zu und denke, es ist eine hervorragende Diskussion darüber, warum OpenGL besser als DirectX ist.

Diese Frage ist jedoch absolut Ansichtssache, und DirectX hat gegenüber OpenGL durchaus seine Vorteile, insbesondere 10 und 11 und insbesondere im Zusammenhang mit der Spieleentwicklung.

Sollten Sie sich für OpenGL entscheiden, ist SDL eine wunderbare und sehr beliebte Bibliothek, und es gibt viele Ressourcen zum Erlernen von OpenGL (NeHe usw.) - aber vielleicht ist dies der Ort für eine andere Frage.

Ricket
quelle
1
Als Gegenpol zur Diskussion zwischen OGL und DX entschieden sich die Unity-Leute ausdrücklich für DirectX unter Windows, da die Standard-OpenGL-Treiber für die meisten Grafikkarten so schlecht sind. Ich habe keine Referenz vor mir, aber auf einer ihrer Konferenzen sagten sie etwas in der Art von OGL-Treibern, die ihr Hauptproblem bei Abstürzen unter Windows sind. Glücklicherweise bedeutet ihre Abstraktionsebene, dass Sie sich aus Sicht des Benutzers nicht wirklich darum kümmern.
Tetrad
Wir stellen geschäftsorientierte Visualisierungssoftware für Unix und Windows her, und ich kann bestätigen, dass die meisten Probleme, die wir unter Windows sehen, mit OpenGL-Treibern zusammenhängen.
drxzcl
1

Wenn Sie gerade erst anfangen, ist es wahrscheinlich besser, eine vorhandene 2D-Engine oder ein Framework wie SFML zu verwenden .

DrDeth
quelle
1

Ich mag Direct X und benutze es seit einigen Jahren in vielen Projekten, aber wenn Sie etwas lernen, achten Sie auf Versionsprobleme.

Ich habe festgestellt, dass der Großteil des DirectX-Codes nicht unter einer anderen Version kompiliert werden kann. Dies kann die Hölle sein, wenn Sie versuchen, einem Tutorial zu folgen.

Ich empfehle Direct X, da es Funktionen für alles gibt, die Ihnen den Einstieg erleichtern, und dann erweiterte Möglichkeiten, Dinge zu manipulieren, wenn Sie vorankommen.

Skeith
quelle
1

Haafs Spiel-Engine

Ich weiß nicht, wie aktuell es ist (ich meine, es ist nicht so, aber ich glaube, es gibt keinen Grund, warum es nicht verwendbar sein sollte), aber ich habe es vor einer Weile benutzt (C ++) und ich wirklich genossen es. HGE wurde seit dem 05.08 nicht mehr aktualisiert, aber ich erinnere mich, dass es ziemlich einfach und schnell zu erlernen ist. Es kommt auch mit allen Arten von Werkzeugen und Helfer wie ein Partikelsystem.

Auf jeden Fall würde ich empfehlen, etwas höheres als openGL oder DirectX zu verwenden, wenn Sie ein tatsächliches Spiel erstellen möchten, anstatt die Dinge zu lernen, die "unter der Haube" in den Zeichenprozessen vor sich gehen. Oder du verbringst deine Zeit damit, Dinge auf dem Bildschirm zu zeichnen, anstatt ein tatsächliches Spiel zu erstellen. Und HGE ist definitiv einen Besuch wert.

http://hge.relishgames.com/

Zaky Deutsch
quelle
0

Ich bin in der gleichen Position wie Sie, nachdem ich vor ein paar Monaten angefangen habe, selbst an der Spieleentwicklung (auf der iPhone-Plattform) zu arbeiten. Aus einem C-Hintergrund kommend, würde ich vorschlagen, dass Sie ein Framework (insbesondere Cocos2d) verwenden.

Die Vorteile eines Frameworks werden in diesem Beitrag mehr als nur erörtert - hauptsächlich wird jedoch der Großteil der Low-Level-Verarbeitung mit OpenGL behandelt und es werden Methoden bereitgestellt, mit denen Sie die wahrscheinlichsten Anforderungen für Spieleentwickler erfüllen können. Sie haben eine großartige Community, sind Open Source, und wenn Sie auf den Kerncode des Frameworks zugreifen müssen / etwas davon an Ihre Bedürfnisse anpassen müssen / wenn nötig auf die niedrigere OpenGL-Ebene wechseln möchten, haben Sie immer noch diese Wahl.

Sie können den Weg des direkten OpenGL gehen, aber für mich scheint es einfach übertrieben.

Sie werden höchstwahrscheinlich auch in verschiedenen Physikbibliotheken suchen, die es gibt - Google Chipmunk und Box2D, um weitere Informationen zu erhalten.

Prost!

Salman
quelle
1
+1 für nicht verdient, bei -2 zu sein. Zu viele Trolle auf dieser Website geben ohne Grund Negative. Ehrlich gesagt verstehe ich nicht einmal, warum sie überhaupt erlauben, dass etwas unter 0 angezeigt wird. Es ist so idiotisch wie Youtube und erlaubt Downvoting.
Carter81