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?
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.
quelle
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.
quelle
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.
quelle
Wenn Sie gerade erst anfangen, ist es wahrscheinlich besser, eine vorhandene 2D-Engine oder ein Framework wie SFML zu verwenden .
quelle
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.
quelle
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/
quelle
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!
quelle