Wie funktioniert ein Computerspiel?
Dahinter steckt die Frage, was in einem Spiel zusammenarbeitet - denn Spiele bestehen grundsätzlich aus mehreren Modulen. So willst du mit deiner Frage über die Struktur dieser Module bescheid wissen. Du möchtest aber auch die Funktionsweise dieser Module über einen Zeitraum erklärt haben.
1. Strukturell
1.1 Aus Sicht des Rechners
Man kann das aus verschiedenen Perspektiven betrachten. Vom Computer aus selber ist es nichts weiter als ein Programm, dass die CPU anweist, diverse Berechnungen zu machen, verschiedene Assets zu laden und zu verarbeiten und mit der GPU zu kommunizieren. Wenn du nicht weißt, was CPU und GPU sind, solltest du an dieser Stelle besser erstmal googlen.
1.2 Aus Sicht des Programmierers
Aus Sicht des Programmierers steckt dahinter natürlich viel mehr. Er muss die Struktur des Programms verstehen. Grob erklärt sich diese in den meisten Spielen wie folgt:
Es gibt mehrere Schnittstellen innerhalb der Anwendung, die verschiedene "Levels" (nicht zu verwechseln mit den Welten in einem Spiel) abgrenzen. Das oberste Level (High-Level) entsteht bei der Spieleentwicklung. Dabei geht es im Grunde hauptsächlich darum, die nötigen artistischen (Game-Design, Story, Charaktere, Texturen, ...) und technischen Schritte (evtl. Editoren, Effekte, Verhalten, ...) zu gehen, um viele Hilfsmittel, verschiedene Werkzeuge etc. zusammen zu führen und die eigentlich Anwendung (das Spiel) zu schreiben. Das kannst du dir letztendlich wie eine Art komplexe Maschine vorstellen, die aus mehreren Modulen und Ressourcen dann etwas auf deinen Bildschirm bringt, oder aus den Lautsprechern pfeffert. Einige dieser Module können in mehreren Spielen verwendet werden. Darum werden sie häufig zusammengefasst ausgelagert - in "Engines".
Ein weiteres Level ist die sog. API. Das sind beispielsweise DirectX oder OpenGL. Diese stellen Hilfsmittel für die Programmierer zur Verfügung, um Objekte auf dem Bildschirm zu zeichnen, Mausbewegungen abzufangen oder coole Sounds aus den Boxen zu dreschen.
Was erkennen wir an diesem Level? Nun, die API scheint also irgendwie eine Schnittstelle in Bezug zur Hardware darzustellen. Allerdings nicht direkt. Die API steuert entsprechend den Treiber der Hardware an, welcher dann direkt der Hardware Answeisungen geben kann, beispielsweise vereinfacht "Zeichne Pixel mit Koordinaten 2,2 in grün".
2. Zeitlich
Zeitlich gesehen machen diese einzelnen Module nur ihre Funktion und geben ihr Ergebnis dem nächsten Modul weiter. Es entsteht also eine Art Pipeline (Reihenfolge / Ablauf / ...). Pro Bild (Frame) werden mehrere (nahezu alle) dieser Module durchlaufen und machen dann ihren Job. Grob gesehen könnte das wie folgt aussehen:
- Input: Abfragen der Status von Tastatur und Maus, um Benutzereingaben zu ermöglichen
- Dynamics (häufig mit "Update" bezeichnet): Alles, was sich in einem Spiel bewegt, zerfällt, zerstört oder gebogen wird, .. alles, was kreucht und fleucht, was plötzlich da ist und wieder verschwindet. Beispielsweise werden hier die Bewegungen der Gegner berechnet
- Rendering (engl. für Bildsynthese): Jetzt wollen wir den ganzen Quatsch auf den Bildschirm pressen. Dazu werden Effekte eingesetzt und sog. Draw-Calls ausgeführt (also man gibt die Anweisung, dass eine spezifische Geometrie dargestellt (gerendert) werden soll)
- Presenting / Output / Flush: Streng genommen wurden im vorherigen Schritt die Befehle nur aufgezeichnet und werden nun an die Grafikkarte geschickt und dort ausgeführt. Dabei kommt also ein Bild zustande (Backbuffer), dass dann lediglich zum Ausgang (Front-Buffer) geschickt werden muss. Diesen Prozess nennt man auch Buffer-Swap.
Danach geht alles eben wieder von vorne los.
3. Fazit
Ein Computerspiel ist eine komplexe Anwendung. Grund dafür ist, dass mehrere an sich schon komplexe Module zusammenarbeiten und letztendlich vom Rechner einfach immer wieder stur als Programm abgearbeitet werden. Am Ende kommt pro Abarbeitung ein Bild auf dein Monitor und der Spieler sieht, dass er bspw. mit W nach vorne laufen kann.