[Hilfe] Ich weis nicht wie ich anfange Spiele zu programmieren.



  • Hey,
    ich habe ein Problem;
    Ich programmiere C++ und Ich will Spiele programmieren.
    Ich arbeite bloß bei all den Tutorials von C++ in der Console.
    Wie fange ich an Spiele zu programmieren.
    Ich weis das man Engines braucht wie Unity oder Unreal, aber gibt kann man wirklich nur in diesen Engines richtige Spiele machen oder geht das auch anders?

    -Lotus



  • Wie lange machst du denn schon "Konsolen"-C++ ? Für die Spieleentwicklung macht es Sinn, eine gewisse praktische Grunderfahrung in C++ zu haben.



  • @xyLotus sagte in [Hilfe] Ich weis nicht wie ich anfange Spiele zu programmieren.:

    Ich weis das man Engines braucht wie Unity oder Unreal,

    Nein, braucht man nicht.

    aber gibt kann man wirklich nur in diesen Engines richtige Spiele machen oder geht das auch anders?

    Ich dachte du weisst es? Wenn du es weisst, wieso fragst du dann? Bzw. wenn du es nicht weisst, wieso schreibst du dann erst du weisst es? Komisches verständnis von Wissen.

    Um die Frage zu beantworten: klar geht das auch anders. Die Engines sind auch nix weiter als ein Haufen Code den du auch selbst schreiben kannst. Je nachdem was du alles brauchst wirst du dafür halt ein paar Jahrzehnte brauchen.
    Je nachdem was du unter einem "richtigen Spiel" verstehst kannst du den Code aber auch relativ schnell selbst schreiben. Also z.B. ein Jump & Run ala Shovel Knight, dafür brauchst du keine Unreal Engine.



  • @xyLotus
    Ich habe dir mal eine kleine Link Sammlung zu der SDL Lib zusammengestellt. Ist recht interresant.

    https://www.libsdl.org/
    https://www.parallelrealities.co.uk/tutorials/



  • @hustbaer mit brauchen meinte ich eher "Ich weis das man Engines eventuell braucht"
    damit meinte ich nicht das ich wüste ob man sie braucht.
    Sorry hab mich komisch ausgedrückt.
    Also was braucht man für ein Simples Jump and Run mit einem Level ca. (abgesehen von Texturen)
    brauche ich spezifische libaries?
    Oder ist es allgemein besser und leichter in Engines((unity, unreal)) Spiel zu erstellen?



  • @xyLotus

    Die Antwort von @Quiche-Lorraine war hierzu eigentlich schon recht hilfreich.

    SDL bietet bereits Event Support und Kompatibilität mit diversen Systemen sowie die Möglichkeit, OpenGL zu nutzen.

    Du könntest auch alles selbst machen, aber dann musst du dich mit OS spezifischen Funktionen auseinandersetzen. Das dauert (aus meiner Sicht) dann halt sehr viel länger.



  • @Quiche-Lorraine
    Danke!
    Ich lese sie mir mal durch! ^^



  • @It0101
    Ich habe diese Frage warscheinlich ein bischen zu früh gestellt, die Frage ist für die Zukunft.
    Das was ich bis jetzt alles weis:
    <=============Strichpunkte===============>
    <======================================>

    • Arrays
    • If Statements (- else | if else)
    • 2dArrays
    • Classes(die muss ich aber noch wiederholen)
    • Variables
    • Functions(Muss ich auf noch wiederholen)
    • Return Statement
    • Switch Statements
    • While Loops
    • For Loops
    • Constructor(Wiederholbar)
      <======================================>
      <======================================>


  • @xyLotus sagte in [Hilfe] Ich weis nicht wie ich anfange Spiele zu programmieren.:

    Oder ist es allgemein besser und leichter in Engines((unity, unreal)) Spiel zu erstellen?

    Ja, sicher, dafür sind sie da. Aber auch die brauchen ordentlich Einarbeitungszeit.



  • also wenn du auf learnopengl.com gehst, dann lernst du da, wie man kästchen auf dem bildschirm darstellen kann und wenn du dir die verwendete bibliothek glfw mal ein bisschen genauer anguckst, dann weißt du auch, wie du gamepads, tastaturen, monitore usw. ansteuerst. aber auch da wirst du nicht einfach mal so ein computerspiel erstellen.



  • @xyLotus sagte in [Hilfe] Ich weis nicht wie ich anfange Spiele zu programmieren.:

    @It0101
    Ich habe diese Frage warscheinlich ein bischen zu früh gestellt, die Frage ist für die Zukunft.
    Das was ich bis jetzt alles weis:
    <=============Strichpunkte===============>
    <======================================>

    • Arrays
    • If Statements (- else | if else)
    • 2dArrays
    • Classes(die muss ich aber noch wiederholen)
    • Variables
    • Functions(Muss ich auf noch wiederholen)
    • Return Statement
    • Switch Statements
    • While Loops
    • For Loops
    • Constructor(Wiederholbar)
      <======================================>
      <======================================>

    Ich will dir jetzt nicht auf die Füsse treten, aber aus eigener Erfahrung ist das was du als Wissen aufführst gerade mal ein Einstieg in C++. Selbst ich habe nebst langjähriger Erfahrung mit PHP und JavaScript nach meinem Umstieg auf C++ sehr viel zu lernen und zu verstehen. Mein Tipp ist eher: Programmiere einfach ein Tool für deinen täglichen Bedarf, und baue es aus bis es allen Regeln der Kunst entspricht. Und wenn es nur eine Aufgabenverwaltung mit Kalender und Datenbank ist. Das übt erstmal, glaub mir. Dazu schau dir Code Beispiele an und verfolge dieses Forum. Diese Tipps die hier kommen sind Gold wert 😉



  • @xyLotus Für ein simples Jump&Run brauchst du im Prinzip gar nix, ausser halt C++, dein OS und was es an Grafik/Sound APIs so mitbringt. Ist aber viel Arbeit. Eine einfache Engine wie SDL oder SFML zu verwenden nimmt dir schon sehr viel Arbeit ab, daher würde ich das als Einstieg mal empfehlen. (Und auch für "fortgeschrittene" wird es oft keinen Sinn machen alles selbst zu schreiben.)



  • @hustbaer sagte in [Hilfe] Ich weis nicht wie ich anfange Spiele zu programmieren.:

    Jump&Run

    Ich finde das tower-defense-genre viel spannender. Leider gibt es extrem wenig gute tower-defense-games.



  • @MaikHo Danke! Ich weis das ich noch nicht wirklich weit bin.
    Ich werde auf jedenfall die Tips befolgen!
    Ich habe nur eine Frage; Wenn ich z.B das Beginner C++ fertig hab, wo soll ich dann weiterlernen? (Ich habe ein Buch was ich noch fertig lesen muss was bis zu SDL geht etc. und habe ein 4Std. c++ tutorial angesehen ((einsteiger Tutorial)), wie soll ich dann weitermachen/ lernen? 🙂

    Danke nochmals! Ich finde die Tipps super nett!



  • Hi.
    Hobby Programmierer hier 🙂

    Du hattes Game Engines erwähnt, der Liste möchte ich noch Godot hinzufügen. Für alle Engines braucht man Kenntnisse in einer Skriptsprache.

    Wenn du eigenes Framework selber programmieren möchtest (ist gar nicht soooo schwer mit OpenGL z.B.), neben viel Übung in C++/C (die APIs sind alle in C), würde ich so etwas wie learnopengl.com für die ersten Schritte empfehlen. Es gibt sicher auch Vergleichbares für DirectX 11 oder Vulkan bzw. DirectX 12 aber das Wissen ist übertragbar. Edit: und irgendwo muß man ja anfangen 🙂

    Grundlegende lineare Agebra ist auch noch eine Vorrausetzung, sonst streikt der Kopf schon bei den ersten Transformationen und Projektionen 🤯

    Natürlich ist ein Spiel viel mehr als "nur" Grafik. Es gibt ja noch einne Spielablauf, die ganzen Inhalte, Gegenstände, Sounds, etc. pp. Das kann dann auch überwältigend werden.

    Welche API man auch benutzt, auf einem sehr abstrakten Level gesehen, ist so ein Spiel "nur" eine Konkretisierung von initialisieren, Schleife betreten, Frame vorbereiten, Frame malen, Frame abschließen, Schleife beenden, aufräumen.

    gb



  • @GreenBaron sagte in [Hilfe] Ich weis nicht wie ich anfange Spiele zu programmieren.:

    Du hattes Game Engines erwähnt, der Liste möchte ich noch Godot hinzufügen. Für alle Engines braucht man Kenntnisse in einer Skriptsprache.

    Wenn man das Spiel in C++ entwickelt braucht man keine Scriptsprache.

    Wenn du eigenes Framework selber programmieren möchtest (ist gar nicht soooo schwer mit OpenGL z.B.)

    Naja einfach ist es nicht.

    Grundlegende lineare Agebra ist auch noch eine Vorrausetzung, sonst streikt der Kopf schon bei den ersten Transformationen und Projektionen 🤯

    Für ein 2D Jump & Run reicht das was man in der Schule gelernt hat ziemlich gut aus.

    Welche API man auch benutzt, auf einem sehr abstrakten Level gesehen, ist so ein Spiel "nur" eine Konkretisierung von initialisieren, Schleife betreten, Frame vorbereiten, Frame malen, Frame abschließen, Schleife beenden, aufräumen.

    Dann kann man auch sagen: Das Auswerten der CERN Daten ist auch nur eine Konkretisierung von initialisieren, Daten einlesen, berechnen, ausgeben und cleanup. Kann man sagen. Macht bloss keinen Sinn es zu sagen.



  • Natrürlich, wenn man nur Jump & Run programmiert braucht man auch kein C++. Da reicht dann eine sehr simple Game Engine.

    Doch, es macht Sinn. Immer den Überblick behalten. Sonst verläuft man sich. Gerade im CERN passiert das täglich 😉



  • @GreenBaron sagte in [Hilfe] Ich weis nicht wie ich anfange Spiele zu programmieren.:

    Natrürlich, wenn man nur Jump & Run programmiert braucht man auch kein C++. Da reicht dann eine sehr simple Game Engine.

    Ich hab ja auch nicht behauptet dass man dazu C++ braucht. Ich sag nur man kann es machen. Und was mehr Sinn macht, kommt wohl auch drauf an was man lernen will. Wenn man besser C++ lernen will, macht es vielleicht Sinn es doch mit C++ zu machen, selbst wenn es mit einer Klickibunti-Engine einfacher ginge.

    Doch, es macht Sinn.

    Nein, es macht keinen Sinn. Es ist einfach nur Gelaber.



  • Das muß ich mir auch von einem Vielschreiber nicht sagen lassen. Der Laberfritze hier bist du. Dein Beitrag ist weder hilfreich noch zielführend. Und du hast mich nicht verstanden. Für eine game engine braucht man Kenntnisse in der Skriptsprache die diese verlangt. Und game engines sind mehr als Klick bunti, das ist Gelaber.

    Die von mir beschriebene game loop ist (im Unterschied zu einer Datenauswertung) mit das wichtigste Konzept der Spielentwicklung. Wenn der Newbie eine google suche betreibt wird er hoffnungslos veraltete Techniken wie die fixed function pipleline, und veraltete Tools wie glut oder d3d9, das keine ausgefeilte Kontrolle der game loop erlaubt, finden, und diesen vielleicht folgen. Moderne Entwicklung ist damit nicht möglich. Deshalb mein Hinweis auf moderne Verfahren. Das ist mehr als Gelaber, glaub mir. Guck mal auf gamedev.net, wie oft wir da auf diese Vorstellungen treffen.

    Wenn OP eine game engine benutzen möchte (was grundsätzlich keine schlechte Idee ist am Anfang), so kann er dort zum Beispiel den Tutorials folgen. Godot ist open source, C++, verwendet eine pythonesque Skriptsprache und hat Tutorials und Beispielprojekte für jump&run und "platformer" in 2d und 3d. Ich denke (weiß aber nicht), daß da der Fortschritt am schnellsten passiert und auch die Konzepte besser übertragen werden als per C++/API. Später kann der Schritt ja immer noch gemacht werden.

    So als Vorschlag ... links gerne fallsgewünscht 🙂

    Edit: noch was: selbsrt mit C++ braucht man früher oder später eine Skriptsprache, oder eine markup language, wenn es um die Beschreibung von Metadaten oder dem Verhalten von game objects geht (sorry fÜr's denglish). C++ stream io ist da schnell über seine Grenzen 😒



  • Ich stelle mal noch ein paar links zum Thema Spieleentwicklung ein. Ich selbst kenne aber nur OpenGL und ein bischen Vulkan.

    Vielfach verwendet als library für's windowing und input handling wird glfw3. Glfw ist relativ schlank und kann mit OpenGL oder Vulkan arbeiten.

    Als loader für OpenGL wird vielfach glew oder (besser) glad verwendet. Glad lädt für OpenGL nur das was man braucht (die Version im "core profile" mit gewählten "extensions"). Glew bringt alles mit. Wer's braucht ... 🙂

    learnopengl.com bereitet einer Anzahl von Meinungen nach ganz gut auf "modernes" OpenGL vor, die pipeline mit programmierbaren shadern, vertex arrays, index buffer, etc pp. Außerdem geht es schon auf ein paar fortgeschrittene Themen ein, aber das sieht man ja. Auf der anderen Seite, wenn irgendwas nach glBegin(), glEnd(), glVertex() oder glMatrix() aussieht dann ist es aus einem anderen Jahrtausend und sollte ignoriert werden. Wenn man den Weg mit C++ und OpenGl weitergehen möchte sind das "rote" und das "blaue" Buch, OpenGL Programming Guide 9th und OpenGL SuperBible 7th edition eigentlich ein Muß. Uneigentlich auch.

    Zum Thema DirectX knn ich nix beitragen, außer deß es proprietär ist.

    Wenn aber zuerst mal eine Game Engine herhalten soll, würde ich Godot nennen, in der Version mit GDScript. Es gibt eine Reihe von Tutorials und Beispielprojekte, auch platformer in 2D.

    In der 2D Welt wird's auch ohne gehen, aber spätestens bei 3D und Physik, Kollisionen berechnen, Impulse integrieren, etc, braucht man Mathe. Leider. Ich hasse es auch 🙂

    Natürlich gehen alle anderen oben erwähnten Tools und Libraries im Prinzip auch, keine Frage.

    -gb


Log in to reply