Wie am besten in die 3D Spieleprogrammierung starten?



  • Hallo,
    seit langer Zeit bin ich schon von Spielen und dessen Entwickling fasziniert.
    Habe auch eine echt klasse Idee für ein Speil, welche ich auch zu gerne umsetzen würde.
    Nun stellt sich die Frage, wie man als (mehr oder weniger) C++Einsteiger da nun beginnt.
    Das Modellieren von Objekten, Erstellen von Texturen und BGMs klappt ja schon ganz gut. Habe mich für C++ entschieden, da diese Programmiersprache weiter verbreitet ist und mehr Möglichkeiten bieten soll.
    Da ich nun keinen falschen oder kontraproduktiven Weg gehen möchte, frage ich zu meiner eigenen Verifizieren lieber nochmals nach.
    Möchte das ganze auch langsam angehen, da ich noch mein Abitur mache.
    (sollte es hier schon dies bezüglich einen Thread geben, Entschuldige ich mich für das Übersehen dessen sehr)
    Schonmal Danke im Voraus



  • Ich möchte nicht deine Hoffnungen zerstören, aber das was du vor hast ist mit einem langen, steinigen Weg verbunden. Du bezeichnest dich selbst als Anfänger in C++. Wie viel Erfahrung hast du damit? Ich habe erst nach ca. 2 Jahren ernsthafte Projekte anfangen können (und ich habe vorher diverse andere Sachen programmiert). Games gehören zu den potentiel kompliziertesten Sachen, die man überhaupt programmieren kann (neben Betriebssystemen und Compilern).

    Du hast die Modellierung von Objekten erwähnt. Aus eigener Erfahrung kann ich dir sagen: Bis du selbst soweit bist, die Konzepte dahinter selbst programmieren zu können, damit du z.B. ein Standford Bunny mit Phong Shading rendern kannst, kann es Jahre dauern. Abkürzen kannst du, indem du auf eine vorgefertigte Engine zurückgreifst, z.B. Irrlicht - soll ziemlich gut und einfach sein. Ich persönlich wollte immer das Rad neu erfinden und alles selbst programmieren. Aber mir geht es mehr darum, die Konzepte zu verstehen, weniger um ein fertiges Projekt.

    Was viele unterschätzen ist die Mathematik, die in solchen Projekten steckt. Ich habe nun schon einige Semester studiert (ich meine diese mathematischen Fächer), und langsam aber sicher habe ich einen Grossteil davon abgesteckt, einschliesslich Physik. Du kannst dich vielleicht mit Tutorials durchschummeln, aber das Problem ist, dass du ohne diese Kenntisse dein eigenes Programm nicht verstehst.

    Also: Schnapp dir Irrlicht und schau dir die Beispiele an. Dies wird der einfachste Weg sein für den Einstieg. Lass dich nicht von der Mathematik abschrecken, sondern bleib dran. Vielleicht musst du dein Ziel irgendwann überarbeiten, aber das Thema ist extrem spannend 😉

    MfG



  • /rant/ schrieb:

    Games gehören zu den potentiel kompliziertesten Sachen, die man überhaupt programmieren kann (neben Betriebssystemen und Compilern).

    Schön meine Lieblingsthemen rausgegriffen 😃

    Ich kann Ogre3D empfehlen. Es gibt dafür gute Tutorials auf http://www.ogre3d.org/tikiwiki/Tutorials, wo du Schritt für Schritt Grafik und Logik baust. Außerdem gibt es fertige Libs, die solch langweiligen Kram wie 3D-Formate Lesen/Schreiben machen, und wenn man will auch Partikelphysikkrams machen können.



  • Was für ein Spiel willst du denn überhaupt machen?


  • Mod

    cooky451 schrieb:

    Was für ein Spiel willst du denn überhaupt machen?

    Habe auch eine echt klasse Idee für ein Speil, welche ich auch zu gerne umsetzen würde.

    @0xDEADC0DE
    klingt an sich valide, am ende kommt es eh drauf an, dass du dich nicht unterkriegen laesst und weitermachst. mit der zeit wirst du 100andere 'ideen' haben und leute werden dir andere modelling programme, sprachen usw. aufschwatzen wollen, weil es ihnen gefaellt. bleib einfach am ball, wenn was schief geht, poste hier, wir helfen gerne 🙂

    entscheide dich fuer opengl,d3d oder eine engine und geh die tutorials dazu durch. erwarte als anfaenger nicht dass du sofort alles perfekt machst, also ist es ganz valide den hacky weg zu versuchen um erfolgserlebnisse zu haben. mit der zeit kommst du besser dahinter wie alles funzt, am anfang ist vielleicht alles ein wenig undurchsichtig und du kannst nicht alles wissen bevor du anfaengst.

    go go go 🙂



  • Von C++ solltest du auch Ahnung haben, am besten nicht zu knapp. Der Fehler, den viele machen, ist Selbstüberschätzung: Auch wenn du virtuelle Funktionen verstanden hast, bist du erst am Anfang. SEHR wichtig ist die Fähigkeit, Code wiederzuverwenden und Abstraktionen zu erstellen. Z.B. solltest du keine Arrays, sondern STL-Container benutzen. Und kein new / delete , sondern automatische Objekte und wo nötig unique_ptr . Und keine C-Stringverarbeitung wie strcpy() , sondern std::string .

    Zusammengefasst: Lerne idiomatisches C++, wie es in Büchern wie Effective C++ vermittelt wird. Ansonsten machst du immer alles mühsamer als notwendig und baust sehr schnell Fehler und Perfomance-Probleme ein, die du dann lange ausbügeln musst. Es lohnt sich mehr, zuerst ein paar Wochen die Konzepte intensiv zu verinnerlichen, als mit Halbwissen ein grosses Projekt frustriert zusammenfrickeln zu wollen.

    Anschliessend würde ich Irrlicht anschauen, finde ich persönlich einsteigerfreundlicher als Ogre. SFML bietet auch nette Features an (2D-Grafik, Audio, Netzwerk, ...)



  • Am besten lernt man, wenn man Spass hat!



  • Man ich weiss noch meine Anfänge(ok, ist noch so lang her.) Ich hab damals damit angefangen:

    http://www.lighthouse3d.com/tutorials/glut-tutorial/

    Sry, ist in englisch, aber damit wirst du klarkommen müssen.
    Kurzes Briefing: Glut ist ein toolkit,das auf OPengl basiert(Versuch mal ein gratis Directx Tutorial zu finden!), das dir viel Arbeit abnimmt, wie das Abfragen der Tastatur oder das erstellen eines Fensters. bastel doch mal damit ein wenig rum.

    dann versuch mal daraus ein Spiel zu machen, bei dem man bsp. den Schneeman steuert.

    Aber klar die anderen haben recht, wenn du mit grunfkentnissen ein Hello World programm meinst, dann würde ich mich erst noch ein wenig mit c++ beschäftigen.



  • Danke schonmal 🙂
    Ich habe schon in einem Buch aus Neugier ein wenig rumgeblättert und gelesen, dass das Programmieren von Spielen zu den komplexesten und schwierigsten Programmiervorhaben gehört und dass ein Game über mehrere millionen Zeilen an Code enthalten kann. Schon logisch, dass das Ganze Jahre in Anspruch nehmen wird.

    Um meinen vorherigen Beitrag noch ein wenig zu präzisieren, modellieren tu ich mit Cinema4D. Komm damit relativ gut zurecht und würde auch gerne wetierhin damit modellieren.
    Habe bislang nur simple Programme in C++ geschrieben. Besitze ein Buch für den Einstieg in diese Sprache. Habe ein Programm geschrieben, mit dem ich gut Vokabeln und Japanische Schriftzeichen lernen kann 😃 habe aber auch ein wenig Hilfe für die Class Random benötigt.
    Deswegen ja die Frage, wie man nun das Ziel der erfolgreichen Spieleprogrammierung auf einem möglichst produktiven (aber auch flexiblen) Weg erreicht. Schon klar dass man eben die Programmiersprache beherrschen muss. Daher ja auch die Frage, wie man am besten mit dem finalen Ziel der Spieleprogrammierung anfängt. Welche Bücher, welche Programme und Hilfsmittel oder Seiten im Netz währen empfehlenswert? (besitze schon das Buch Visual C++ 2010)



  • Ich persönlich würde für den Einstieg zu SFML raten. Schnapp dir einfach SFML 2.0 und versuch mal, ein kleines Spiel zu machen, Pong oder sowas...



  • Indem man programmieren lernt. D.h. erst Konsole: Galgenraten, Mastermind. Dann 2D: Mineswepper, Pong, Tetris, Bomberman. Dann Pong Bomberman mit Multiplayerunterstuetzung. Dann 3D: rolling aroung with a ball. Dann: komm wieder wenn du das geschaft hast. Vielleicht musst du nich alles machen, aber ein Direkteinstieg (also von 0 auf 100 in nichts komma null) gibt es nicht.



  • STRG + F hat das Wort "Unity" nicht gefunden. Vlt ist das ja was du willst... Zwar kein C++, sondern C# (oder JS), aber damit solltest du deine Idee vor ~2020 umsetzen können.



  • Genau so gut, aber open source und mit c++:
    http://www.garagegames.com/products/torque-3d/overview


Anmelden zum Antworten