C++ und dann?
-
Guten Tag zusammen,
Ich lerne derzeit die Grundlagen von C++ und möchte als Ziel mal ein kleines Spielchen programmieren, dass zudem noch 100% Platform-unabhängig sein soll. Ich kenne mich inzwischen mit Debian-basierenden Linux Distributionen so gut wie mit Windows aus (soweit vergleichbar) und da ich hoffe, Windows bald verlassen zu können, möchte ich schon mal direkt mit platformübergreifender Programmierung anfangen. Jetzt weiß ich nur nicht, wie es nach C++ weitergehen soll. Unter Windows nimmt man sich da das DirectX9 Devkit + VisualC++ und hat alles was man braucht, nur leider Windows-exklusiv. Unter Linux (bzw. Platform-unabhängig) scheints etwas komplizierter zu sein. Unter den meisten Begriffen kann ich mir was vorstellen aber was z.B. ist SDL genau? Ist es das gleiche wie OpenAL+OpenGL+GLUT?
Aus welchen Libs würde man ein modernes Spiel machen? Inwiefern nimmt eine Game-Engine Arbeit ab?Ich hoffe diese Fragen wirken nicht zu Grünschnäbelig, ich war bis jetzt zwar nur Anwender aber nicht Google-faul
Ich bräuchte jetzt nur jemanden, der mir den Weg zeigt damit ich weiß, in welche Richtig ich mich voranarbeiten/lesen muss.Danke im Voraus!
-
erstmal in der faq schmöckern
-
Hi Svenstaro,
SDL (Simple Direct Media Layer) ist eine Bibliothek von Grafik-Routinen, die von Sam Latinga entwickelt wurde. Es ist eine einfache mit C und C++ nutzbare Grafik-API, die ursprunglich für die Portierung von Windows-Spielen auf Linux eingesetzt wurde. Latinga arbeitet heute bei Blizzard (World of Warcraft). SDL ist ausgetestet und stabil und wird von professionellen Spieleentwicklern eingesetzt. Ideal ist SDL auch, um erste Erfahrungen mit Grafikprogrammierung zu sammeln, denn Du brauchst keinerlei WIN-API-Befehle, um das Grafikfenster aufzurufen. Hervorragend eignet sich SDL für 2D-Spiele, sobald Du in den 3D-Bereich willst, musst Du OpenGL hinzunehmen. Oft wird SDL mit OpenGL kombiniert. Was mit SDL auch nicht machbar ist, sind Texturen. Dafür brauchst Du dann OpenGL. Die Kernbibliothek von SDL stellt die Basisfunktionen (Video) bereit. Es ist sehr einfach die weiteren Libraries SDL_mixer für Audio, SDL_image für das Laden von weiteren Bilddateiformaten (jpeg, png, tiff), SDL_ttf für Schriftenfonts, SDL_net als Netzwerk-API einzubinden. Mit C++ und SDL kannst Du also ein komplettes 2D-Spiel coden. Zu empfehlen ist noch die Ergänzungsbibliothek SDL_gfx, die zum einen fertige Funktionen für Punkte, Linien, Polygone bereitstellt und mit mit der auch Zoomen und Rotieren von Formen und Flächen möglich wird.Grafik-Engines wie Ogre3D abstrahieren von Directx und OpenGL. Beispielsweise kannst Du mit Ogre3D wahlweise Deine virtuellen Welten per Directx oder OpenGL rendern lassen. Die Engine beherrscht beides. Für den Ogre-Einsatz benötigst Du also keine Programmierbefehle der Directx-API oder der OpenGL-API. Das macht die Engine selber, und Du arbeitest auf einer Abstraktionsebene darüber. Das Laden beispielsweise eines Mesh-Objektes (3D-Modell) in Ogre wird über die OgreAPI gesteuert. Die Architektur der virtuellen Welt in Ogre ist über die bereits vorhandene Klassenbibliothek sofort verfügbar, so dass Du beispielsweise keinen Szenegraphen mehr selbst entwerfen und programmieren musst. Du wendest ihn "nur" an. Die Ogre-Engine ist sehr sauber objektorientiert angelegt und setzt voraus, dass der Anwender mit C++ Themen wie Templates, Design Pattern u.a.m. gut vertraut ist. Für den Start wird oft empfohlen, dass man erst ein 2D-Spiel komplett fertig stellt, bevor es in die 3D-Welt geht. Du liegst im Blick auf Linux also mit C++ und SDL goldrichtig und kannst danach jederzeit erweitern auf SDL/OpenGL oder auch eine 3D-Grafik-Engine wie Ogre wählen.
-
Vielen Dank für eure Antworten. Vorallem tim3d Text finde ich sehr aufschlußreich. Könnt ihr mir jetzt noch sagen, wo GLUT zum Einsatz kommt und in welcher Kombi?
Danke!
-
Du könntest auch Java mit LWJGL benutzen. Da hast du OpenGL + OpenAL + DevIL + FMOD + sonstige Tools + Platformunabhängigkeit.
Und es ist nicht langsam.
-
GLUT war eine Sammlung von Hilfsfunktionen, damit sich die Leute, die OpenGL lernen, schnell ein Fenster auf bekommen und sich auf OGl Befehle konzentrieren koennen. So waren die Beispiele aus dem Lehrbuch leichter verstaendlich.
Fuer ernsthafte Programme schraenkt sie aber viel zu sehr ein.