SDL 2.0
-
Danke für die Antworten, weitere Fragen:
1. Benutzt man in professionellen Spielen die SDL? Oder könnte man, aber es gibt bessere Alternativen? Oder geht SDL überhaupt gar nicht für sowas? Die Fragen beziehen sich auf 2 und 3D.
2. Reicht es C++ und OpenGL zu können um ein professionelles Spiel zu entwickeln oder braucht man dazu noch was?
3. Kann man die SDL als Schnittstelle zwischen C++ und Opengl verwenden / ist es üblich oder geht das gar nicht?
4. Ist die SDL eine Schnittstelle zwischen Betriebssystem und C++?
5. Ist die SDL ein guter Anfang um irgendwann auf OpenGL umzusteigen?
-
Für C++ solltest du dir besser die SFML ansehen (SDL ist eine reine C-Library).
-
Könntest du mir bitte erklären, weshalb dadurch Nachteile entstehen sollten? Performance?
-
AnfängerPlusPlus schrieb:
1. Benutzt man in professionellen Spielen die SDL? Oder könnte man, aber es gibt bessere Alternativen? Oder geht SDL überhaupt gar nicht für sowas? Die Fragen beziehen sich auf 2 und 3D.
Eher Unity oder Unreal Engine. SDL wird eher von Hobby-Entwicklern für sehr kleine Projekte benutzt.
AnfängerPlusPlus schrieb:
2. Reicht es C++ und OpenGL zu können um ein professionelles Spiel zu entwickeln oder braucht man dazu noch was?
Viel mehr!
AnfängerPlusPlus schrieb:
3. Kann man die SDL als Schnittstelle zwischen C++ und Opengl verwenden / ist es üblich oder geht das gar nicht?
Kann man machen, aber die meisten werden eine andere Engine nehmen.
AnfängerPlusPlus schrieb:
4. Ist die SDL eine Schnittstelle zwischen Betriebssystem und C++?
Zum Teil. SDL ist C, nicht C++. SDL bietet Grafik, Netzwerk und Eingabe. Viel mehr ist da nicht.
AnfängerPlusPlus schrieb:
5. Ist die SDL ein guter Anfang um irgendwann auf OpenGL umzusteigen?
Klar, je mehr du lernst, desto besser. OpenGL in SDL ist in Wirklichkeit fast wie nur OpenGL. Lediglich Fenstererstellung und Eingabezeugs wird von SDL übernommen. Das musst du sowieso mit was anderem als OpenGL machen.
-
Danke für die Antworten! Habe paar threats durchgelesen zum Thema sdl vs smfl, dabei kam eigentlich nichts wirklich eindeutiges heraus...scheint eher geschmackssache zu sein wobei ich mich für sdl entscheiden hatte weil es auch auf android und iphone laufen soll. Vllt kann mir jemand ein killerkriterium nennen? th69 rät von sdl ab weil es in c geschrieben ist....was hat das für auswirkungen?
-
SDL ist nicht schlecht.
Das einzige "Problem" das ich sehe ist: wenn du noch nicht sehr erfahren im Umgang mit C++ bist, und ein Projekt mit der SDL angehst, könnte es passieren dass du dir ein paar Dinge abguckst die man in C++ einfach üblicherweise anders löst (und auch wirklich anders lösen sollte).
Du könntest aber gucken ob's nicht fertige C++ Wrapper für die SDL gibt, die ebenso auf allen Plattformen laufen die du unterstützen willst.
Da die SDL ja doch SEHR beliebt und bekannt ist, würde es mich fast wundern wenn's da nix gibt.
-
Was macht dieser Wrapper genau? Ist das eine Lib die man einbinden muss? Ich weiss nicht welche Suchanfrage ich bei google eingeben muss um informationen (am besten auf deutsch) über sowas zu erhalten. Kann mir bitte jemand einen gescheiten Link posten dann muss ich euch nicht weiter mit kacknoobfragen quälen
-
AnfängerPlusPlus schrieb:
1. Benutzt man in professionellen Spielen die SDL? Oder könnte man, aber es gibt bessere Alternativen? Oder geht SDL überhaupt gar nicht für sowas? Die Fragen beziehen sich auf 2 und 3D.
Du kannst die SDL auch für professionelle Spiele nutzen, das machen sehr viele Indie Entwickler so.
Die Aussage von oenone, der sagte, nur für Hobbyentwickler ist insofern also falsch.Richtig ist lediglich, dass die ganz großen Spieleentwicklerstudios ausgereifte 3d Engines verwenden und die 3d Engines selber etwas eigenes haben und daher kein SDL benötigen.
Als Indie Entwickler sieht das aber schon wieder ganz anders aus, da brauchst du die SDL, wenn du nicht ebenso eine professionelle 3d Engine einsetzen möchtest, weil sie dir eben sehr viel Arbeit ersparen kann.
Im Grund ist die SDL sehr Low Level. Darauf kann man aufbauen und hat eine gemeinsame Schnittstelle die überall funktioniert. Also Windows, Linux, Mac OS X. Die Gleiche Aufgabe erfüllt die SFML.
Wenn du auf die SDL oder SFML oder eine professionelle 3d Engine verzichtest, dann musst du alles selber machen.
Also auch die verschiedenenen Betriebssysteme abstrahieren.
Das ist also ein unnötiger Mehraufwand, der mit der SDL und SFMl vermeidbar ist.Wenn du in C++ entwickelst, dann nimmst du die SFML. Weil die eben selbst in C++ geschrieben wurde und daher auch mit C++ Konstrukten umgehen kann.
Wenn du in C entwickelst, dann nimmst du die SDL.
Und wenn du eine fertige für Indie ENtwickler bezahkbare 3d Engine willst, dann nimmst du z.b. die Unity Engine.Für Kerbal Space Programm wurde z.B. die Unity Engine verwendet.
So einfach ist das.
2. Reicht es C++ und OpenGL zu können um ein professionelles Spiel zu entwickeln oder braucht man dazu noch was?
Nein. das reicht nicht.
Um ein 3d Spiel zu entwickeln genügt es nicht, nur die 3d API zu kennen, sondern du musst auch wissen, wie du 3d Objekte verwaltest.
Was ein Szene Graph ist.
Und dann kommen noch die vielen weiteren Details mit der du deine 3d Engine optimieren kannst.Wenn du dir diesen ganzen Aufwand sparen willst, dann nimmst du eine fertige 3d Engine und baust damit dein 3d Spiel.
3. Kann man die SDL als Schnittstelle zwischen C++ und Opengl verwenden / ist es üblich oder geht das gar nicht?
Die SDL ist keine Schnittstelle zwischen C++ und OpenGL.
Es ist eine API die dir eine Threadverwaltung gibt und sich um die Eingabe kümmert.
Hunderte Joysticks, Gamepads und sonstige obskure Eingabegeräte wollen schließlich unterstützt werden.Natürlich bietet die SDL auch eine Ausgabe in 2d, die wirst du aber nicht benötigen, wenn du OpenGL verwendest.
Allerdings kann dir die SDL dabei helfen, das OpenGL Fenster plattformunabhängig zu initialisieren, in dem du dann deine 3d Grafik reinrendern kannst.
Für Sound würde ich dir dann noch OpenAL empfehlen.Im Prinzip kannst du also SDL, OpenAL und OpenGL verwenden und hast damit eine gute Basis um ein Indie Spiel draufzusetzen.
4. Ist die SDL eine Schnittstelle zwischen Betriebssystem und C++?
Die SDL ist zwar eine ABstraktionsebene für diverse Betriebssysteme, aber sie ist keine Schnittstelle zwischen OS und C++.
Das ist auch gar nicht möglich. Denn C++ ist eine Programmiersprache.In einer Programmiersprache beschreibst du nur deinen Code in einer für Menschen gut lesbaren Hochsprachen Form.
Der Compiler macht dann daraus ein Binary das dann auf eine der vielen OS Plattformen läuft.
Ab diesem Punkt weiß das OS nichts mehr davon, ob das Binary nun in C++, C oder sonst was programmiert wurde.5. Ist die SDL ein guter Anfang um irgendwann auf OpenGL umzusteigen?
Ja.
-
AnfängerPlusPlus schrieb:
th69 rät von sdl ab weil es in c geschrieben ist....was hat das für auswirkungen?
Du kannst keine C++ Sprachkonstrukte an die SDL übergeben.
Alles was deinen C++ eigenen Code verlässt und an SDL weitergereicht werden soll, muss also in C Form vorliegen.
Das musst du also abstrahieren bzw. bewerkstelligen.Ein Problem ist das allerdings nicht. Da jede gute Programmiersprache C Bindings bietet und somit C Funktionen nutzen kann.
Wahrscheinlich kostet es dich nur etwas mehr Arbeitsaufwand und eventuell auch etwas Übersicht.
Es macht dann aber auch Sinn, C zu kennen.
Für OpenGL solltest du das sowieso, denn OpenGL ist eine reine C API.
Insofern wirst du eh nicht da drumherum kommen.Du kannst also die SDL nehmen und damit schonmal üben.
-
Wow, riesiges Danke für den krassen Beitrag!