Wie programmiert man spiele



  • Also ich habe immer noch nicht verstanden wie man spiele programmiert 😡 .Macht man das mit C,C++ oder mit speziellen, um Spiele zu entwickel,Sprachen. 😕
    Und wenn die richtige antwort kommt könnt ihr mir ein Beispiel schicken z.B. wie kann man programmieren das die Figur sich nach vorne bewegt



  • was für ein spiel möchtest du denn programmieren?

    unter windows bietet sich dafür directx bzw. direct3d, direct sound, direct input usw an. dafür brauchst du aber soweit ich weiß vorkenntnisse in computergrafik und der entsprechenden mathematik, also vektoren und ebenen und eben in c++.

    um die figur nach vorne zu bewegen verschiebst und drehst du die vektoren und projizierst diese dann auf die ebene des bildschirms.



  • Wie Wade1234 schon geschrieben hat, hängt das stark vom Ziel ab. Wenn du dich einfach mal (abseits vom stark selbst programmieren) damit auseinander setzen möchtest, gibt es auch Tools die dir helfen. Aus dem Stegreif fällt mir jetzt nur Amazon Lumberyard ein (habe mich jedoch noch nicht intensiv damit beschäftigt, lediglich der Vollständigkeit halber).

    Weiterhin gibt es viele Sprachen, welche Grafische Bibliotheken unterstützen. Ein schneller, einfacher Einstieg aus meiner Sicht in 2D Spiele ist beispielsweise Python mit Pygame (SDL).

    Spezifizier deine Anforderung, dann kann man dir auch besser helfen.



  • Früher (in den Uhrzeiten) war das so, dass man typischerweise direkten Zugang zu einem Bildspeicher hatte.
    Diesen Bildspeicher konnte man dan Belegen mit Daten und es gab' am Ende dann ein schönes bilchen.

    Heutzutage haben das professionelle, wenn überhaupt, dann nur Spieleentwickler, die Konsolenspiele entwickeln. Die dürfen dann aber leider nicht sagen wie man darauf Zugriff bekommt wegen NDAs (Non Disclosure Agreements - ein Vertrag, dass Du die Klappe halten sollst und nicht sagen sollst wie Die Hardware anzusprechen ist).

    Nun hat man (zumindest bei den typischen Systemen wie Windows 10, macOS) leider nur noch indirekten Zugriff zum Bildspeicher. (Wobei Du mit C bzw. C++ unter Linux auf den Bildspeicher zugreifen kannst, da gab es so eine Headerdatei wo Dir das ermöglicht hatte, da kannst Du dann Deine Pixel setzen und heraus kommt dann 'was das so aussieht: https://www.youtube.com/watch?v=Q1S2jRPAC-c); kannst direkt am Desktop ir'was malen).

    Also es gibt Grafikbibliotheken für C/C++, die Dir dann praktisch(!) indirekt Zugriff zu Deiner Grafikkarte bzw. deinem Grafikprozessor geben (eigentlich kommunizierst Du mit einem Treiber statt mit der Grafikkarte direkt, aber egal). Diese Lauten OpenGL und DirectX.

    OpenGL gibt Dir dann über den Treiber (das dem Betriebssystem hilft mit der Grafikkarte zu kommunizieren) Zugang zur Grafikkarte. Du kannst dann Deine Daten an die Grafikkarte schicken, machst ein paar Konfigurationen wohin die Daten hin sollen und definierst noch am Ende wie die Daten dann am Ende auszuschauen haben (mit sogenannten Shadern). Das war der grobe Überblick zur Grafikprogrammierung mit OpenGL.

    Aber!!!! Du kannst natürlich auch gucken, dass Du selbst ohne Grafikbibliotheken wie OpenGL Deine 3D-Grafik auf den Bildschirm bringen kannst, denn solange Du fähig bist auf den Bildschirm Pixel zu setzen (Du kannst das zum Beispiel mit JavaScript und HTML-Canvas realisieren), kannst Du mit paar Algorithmen (Bresenham, Füllalgorithmen) und etwas Mathematik (perspektivische Projektion wie bei den Künstlern), Deine eigene 3D-Grafikbibliothek (Software Rendering) aufbauen.

    Wenn es keine 3D-Grafik sein soll, dann gibt es so simple Bibliotheken wie SFML, SDL, Java (Swing), wobei Du natürlich auch hier dann 3D-Grafik ausgeben kannst. Musst halt gucken, dass Du die Illusionen (Perspektive/Tiefe) richtig hinbekommst (Mathematik):

    https://www.youtube.com/watch?v=mQ0wz1i6jHA
    https://www.youtube.com/watch?v=LEMir2zeJXk
    https://www.youtube.com/watch?v=xMjkvKV0nBc

    Die da oben sind mit purem Java realisiert worden, denn Java kommt mit einfachen GUI-Bibliotheken wie Swing.

    Das ist mit purem JavaScript geschrieben: https://www.youtube.com/watch?v=C0ev80NwMXg



  • Also guck einfach nach einer Bibliothek oder Möglichkeit wie Du einen Pixel oder zumindest eine Gerade, ein Dreieck auf den Bildschirm setzt (Bibliotheken wie OpenGL, Swing, SDL, SFML, GameBoy-Emulator, MIPS Simulatoren wie MARS: https://www.youtube.com/watch?v=-dT7sHjod_w). Der Rest ist dann Mathematik und Logik.



  • LegendofBros schrieb:

    z.B. wie kann man programmieren das die Figur sich nach vorne bewegt

    Wenn ich dazu noch etwas schreiben darf, prinzipiell wie man einen Punkt oder irgendwas bewegt, also zB als ganz simples Beispiel,

    bewegeFigur( Figur& figur, //die Figur
                 int x0, int y0, //eventuell Startposition
                 int x, int y  //Zielposition
                /*irgendwelche weiteren Parameter*/ )
    

    Auch in drei Dimensionen. Dann müssen die Positionen noch auf die "Bildebene" projiziert werden. Wie schon geschrieben, solche simplen Beispiele kann man mit einfacher Schulmathematik machen.

    Als Übungsplattform kann man ganz billig die Konsole eines BS nehmen, oder man erstellt sich eine kleine Bitmap und pinselt darin rum.