Game developing?
Wie wird ein spiel programmiert?Ich weiß das es durch codieren und codes und so entsteht aber wie wird aus einem code aus etwas geschriebenen ein sichtbaren bild und wie entscheidet der developer wie das enstandene bild aussehen soll zb cartoon grafik oder realistisch ich versteh einfach nicht wie aus einem code ein sichtbaren video sozusagen entsteht
2 Antworten
Der Code wird von einem Programm in das übersetzt, was ein Prozessor und die Grafikkarte nativ ausführen können (oder etwas nah dran). Das hakt sich dann in die Treibersoftware, welche von den Herstellern bereitgestellt wird und die tatsächliche Kommunikation mit der GPU übernimmt, sowie oft vorgefertigte Software-Bibliotheken, welche grundlegende Dinge wie Physik, das Management von Objekten, etc. machen. Letzteres wird oft auch als Gesamtpaket durch Game-Engines wie Unity, Unreal, Godot, etc. angeboten.
Hier eine Illustration unter Linux; für Windows, etc. ist es sehr ähnlich nur heißen die Komponenten anders oder sind leicht anders angeordnet: https://commons.wikimedia.org/wiki/File:Linux_kernel_and_OpenGL_video_games.svg
—
Je nachdem, wie diese Bibliotheken arbeiten und welche genau verwendet werden, ist es dann unterschiedlich, mit diesen das genaue Aussehen zu bestimmen. Manche machen es vollautomatisch, bei anderen musst du die komplette Pipeline, also jeden einzelnen Effekt selbst aufbauen. So oder so entsteht am Ende das, was vom Computer ausgeführt wird.
Es gibt einerseits die Möglichkeit, auf der CPU (oder per GPGPU / nur teilen der GPU Pipeline) jeden Pixel manuell zu berechnen, was oft in Filmen oder der Wissenschaft gemacht wird, aber deutlich langsamer ist. Das ist dann pure Mathematik:
- https://raytracing.github.io/
- https://www.shadertoy.com/
- https://www.youtube.com/playlist?list=PLujxSBD-JXgnGmsn7gEyN28P1DnRZG7qi
Spiele nutzen oft die spezielle Hardware von GPUs, welche dazu da ist, übliche solcher Prozesse sehr schnell auszuführen. Dafür gibt es Schnittstellen und Spezifikationen, welche den Entwicklern diese Funktionen über die Firmware bereit stellen:
- https://de.wikipedia.org/wiki/OpenGL#Das_Programmiermodell
- https://docs.vulkan.org/spec/latest/chapters/introduction.html#introduction
Zunächst wird dabei die Geometrie und sonstige Daten, welche von der CPU verwaltet wird, auf die GPU geladen und von der Welt in die Kamera projiziert (viel lineare Algebra), dann läuft für jeden Pixel das sogenannte "Fragment-Shaderprogramm". Hier wird mit speziellen Algorithmen Licht, Schatten, Textur, etc. berechnet und schließlich ein Farbwert bestimmt.
- https://de.wikipedia.org/wiki/OpenGL_Shading_Language
- https://de.wikipedia.org/wiki/Phong-Beleuchtungsmodell
So etwas fotorealistisch zu machen, hat sehr viel damit zu tun, Prozesse, die in der echten Welt aufkommen, mit Modellen einzufangen und nachzuempfinden; in diesem Bereich gibt es viele Forschungsarbeiten.
Am Ende, nachdem das Bild, ob realistisch oder einfach gerendert wurde, laufen dann noch Effekte, wie z. B. für die Cartoon-Grafik. Diese nutzen zusätzliche Informationen wie die Tiefe und Normale, die beim Rendern mit berechnet werden, um spezielle Bereiche zu identifizieren und dann mit den Farben zu spielen oder Umrandungen zu zeichnen. Hier ist der Kreativität keine Grenzen gesetzt.

Code und grafik werden seperat gefertigt , es gibt sogenannte compiler die die im code angegebenen aktionen dann ausfuehrbar machen