Mathematik in Videospielen wie GTA 6

@Traube

Ich habe das normale Abi gemacht, ist aber SEHR LANGE her.
Mathe oder Info im Studium oder GTA 6^^ ist etwas anderes als Mathe LK.
Das was man in Mathe lernt, etwas Kurvendiskussion und Integralrechnung ist nichts -.-
 
flowerchild69 schrieb:
Habt ihr andere Quellen?

Naja, zu C64-Zeiten hat man sich das eben mit ein paar Büchern und durch Reverse Engineering selbst beigebracht. Der entscheidende Startschuss war dieses Buch (bzw. die blaue ältere Auflage):

https://www.c64-wiki.de/wiki/PEEK_+_POKE

Da stand mit ausführlichen Beschreibungen im Prinzip das drin - für alle Customchips und Betriebssystemvariablen:

https://www.oxyron.de/html/registers_vic2.html

Es ging sowieso eher darum, aus der limitierten Hardware mit undokumentierten Hacks immer spektakulärere Effekte herauszuholen:

 
  • Gefällt mir
Reaktionen: RMS_der_Zweite und flowerchild69
JMP $FCE2 schrieb:
Der Ursprung sind physikalische Gesetze, Mathematik sind dann Verfahren, etwas möglichst ähnlich aussehendes mit möglichst wenig Rechenaufwand zu erreichen.
Oder klassisch ausgedrückt: Die Mathematik ist die Hure der Physik.

JMP $FCE2 schrieb:
Und das mit dem "ähnlich aussehen" ist Wahrnehmungslehre.
https://chaosradio.de/chaosradio_62

flowerchild69 schrieb:
Sorry für off-topic aber die Gelegenheit ist gerade günstig. Ich fände es super, wenn Computer Base in diese Richtung ginge. Wie man Spiele programmiert, für Nicht-ITler. Müsste gar nicht besonders aktuell sein. 80er/90er würde mir schon reichen. Mit der Zeit käme man dann in der Gegenwart an. Das könnte eine regelmäßige Kolumne sein, so ähnlich wie die Sonntagsfrage. Angesicht der Komplexität würde auch ein mal pro Monat reichen, aber dann hoffentlich ausführlicher.
Dann kommen doch nur wieder die ganzen Petzen die das alles für Hausaufgaben halten und das deswegen gelöscht und gesperrt werden soll.
 
  • Gefällt mir
Reaktionen: Micke
HerrDrachen schrieb:
Irgendwie habe ich das Gefühl, dass das was man heute in einem Mathestudium lernt,
sehr weit davon entfernt ist.

Ich programmiere zwar nicht für Spiele, aber die Mathematik hinter Spielen wie GTA 6 ist größtenteils keine exotische Spezialmathematik, sondern angewandte Mathematik. Dein Eindruck kommt vermutlich daher, dass man im Mathestudium viele theoretische Grundlagen und Beweise lernt, während man in Spielen später vor allem deren praktische Anwendung sieht. Tatsächlich sind viele der mathematischen Grundlagen aus der Hochschule nicht nur für die Spieleentwicklung, sondern für das gesamte Informatikstudium essenziell. Gerade die Mathematikvorlesungen gehören an vielen Hochschulen zu den Modulen, an denen sich früh zeigt, wer mit den Anforderungen eines Informatikstudiums zurechtkommt. Themen wie lineare Algebra, Geometrie, Analysis und numerische Verfahren begegnen einem später in Bereichen wie Computergrafik, Simulationen, Künstlicher Intelligenz, Signalverarbeitung, oder halt wissenschaftlichem Rechnen ständig wieder.

Damit werden Bewegungen, Kollisionen, Animationen, Beleuchtung, Wasser, Wetter und letztlich die gesamte 3D Grafik berechnet. Tatsächlich benutze ich im HPC Bereich deutlich häufiger Vektoren, Matrizen, Trigonometrie, Geometrie und numerische Verfahren, als komplexe Beweise aus der reinen Mathematik. Der Unterschied zum Mathestudium liegt daher weniger in der Mathematik selbst als in der eigentlichen Anwendung. Statt Formeln auf Papier zu beweisen, nutzt man sie im Code, um, auf Deine Fragestellung bezogen, Autos fahren, Wasser fließen und Licht realistisch wirken zu lassen. Bezogen auf Spiele steckt also deutlich mehr Hochschulmathematik drin, als man auf den ersten Blick vermuten würde.
 
  • Gefällt mir
Reaktionen: dewa und BeBur
Mathematik in Videospielen im Einsatz. Aufgabe: Du willst die Invertierte Quadratwurzel einer Zahl berechnen (braucht man zum normalisieren von Vektoren), aber die meisten Algorithmen sind zu langsam? Was wäre, wenn es eine schnelle Lösung nur mit Bitoperationen, Multiplikationen und Additionen gäbe?

Etwas wissen, wie sich binäre Zahlen verhalten und voilà, der "Fast inverse square root" Algorithmus

C:
float Q_rsqrt( float number )
{
    long i;
    float x2, y;
    const float threehalfs = 1.5F;

    x2 = number * 0.5F;
    y  = number;
    i  = * ( long * ) &y;                       // evil floating point bit level hacking
    i  = 0x5f3759df - ( i >> 1 );               // what the fuck?
    y  = * ( float * ) &i;
    y  = y * ( threehalfs - ( x2 * y * y ) );   // 1st iteration
//    y  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed

    return y;
}

 
  • Gefällt mir
Reaktionen: RMS_der_Zweite und JMP $FCE2
Den Begriff für das Studium, der vielleicht weiterhilft ist "Höhere Mathematik". Im Studium ist HM 1 gaanz grob Mathe-LK-Wissen, dann geht es weiter. Für "normale" Ingenieursstudiengänge meist so bis HM3. Informatik glaube bis HM6
 
Das ganze Ray und Pathtracing Thema gehts ja um Strahlen...alles lineare Algebra.
 
  • Gefällt mir
Reaktionen: BeBur
HerrDrachen schrieb:
Irgendwie habe ich das Gefühl, dass das was man heute in einem Mathestudium lernt,
sehr weit davon entfernt ist.
Wie kommst du auf so eine spezifische Aussage? Soweit es den reinen Mathematik Anteil betrifft (ein eher kleinerer Teil des Ganzen) ist das nah an dem, was man im Studium macht.
HerrDrachen schrieb:
Wie sieht die Mathematik hinter z.B. der Wasserphysik aus bzw. Wettereffekte?
Wie ist es möglich dass die Grafik so realistisch aussieht?
HerrDrachen schrieb:
Nochmal: Was genau ist das für eine Mathematik die es GTA 6 oder
der Grafikengine gibt?
Du hast ein falsches und zu simples Konzept davon, was da passiert.
Die Fortschritte der letzten 25 Jahre basieren auf der Weiterentwicklung von Hardware und von der Entwicklung von Algorithmen, welche die Hardware effizient nutzen und gleichzeitig Echtzeit-Performance liefern. Im Prinzip ein Wechselspiel, Hardwarehersteller entwickeln was auf Grundlage aktueller Algorithmen sinnvoll ist, um deren Limitierungen zu verkleinern. Algorithmen-Erfinder entwickeln auf der Grundlage, was mit aktueller Hardware möglich ist.

Die Algorithmen sind natürlich immer irgendwo "Mathematik", genauso wie eine Grafikkarte immer irgendwo "Physik" ist. Das in den Fokus zu stellen ist aber der falsche Abstraktionsgrad.

Deswegen wird dir niemand eine Antwort geben können auf deine Frage, weil die letztendlich keinen Sinn ergibt. Im Kern geht es fast immer um lineare Algebra oder Trigonometrie. Das war aber auch vor 25 Jahren schon so, als man solche Berechnungen noch auf der CPU gerechnet hat.

Die Hauptfrage (vereinfacht) ist immer: Wie viele Daten muss man mindestens von A nach B schieben, lesen oder in C rein schreiben vs. wie viele Daten kann die Hardware in welcher Zeit abarbeiten.

Hier ist ein simpler Shader (= Software, die auf der GPU ausgeführt wird) um einen Wassereffekt zu realisieren: https://www.shadertoy.com/view/wdtyDH
Ist natürlich nicht GTA6 Style, aber soweit es die Mathematik an sich angeht wird es nicht viel komplizierter.

Das ist jetzt sehr allgemein gesprochen, denn darüber hinaus ist das auch deshalb keine gute Frage, weil moderne Computergrafik eine große Ansammlung von Algorithmen und Techniken verwendet, die sich auch regelmäßig gegenseitig ablösen. Bezüglich des Rendering an sich gab es z.B. zuerst Forward Lighting, dann gab es Weiterentwicklungen wie Forward Lighting+ und komplette neues wie Deferred lighting und jetzt kommt ja gerade Pathtracing.

Heute wird das alles üblicherweise zusammen mit PBR "Physical Based Lighting" eingesetzt:
Hier ist auch ein Video, das die Mathematik dahinter ein wenig zeigt:
Das Integral an sich geht vllt. über ABI-Mathe hinaus, aber das ist auch nur die theoretische Grundlage und wird sowieso nicht verwendet. Stattdessen ist das einfach ein wenig Trigonometrie.

Wie gesagt, die Mathematik an sich ist nicht der wesentliche Punkt. Sondern eine Vereinfachung der Realität zu finden, die möglichst realistisch aussieht und gleichzeitig auf verfügbarer Hardware in Echtzeit laufen kann.

Kann man auch schön an Pathtracing sehen, das es seit 25 Jahren schon gibt (und die Theorie dahinter noch viel länger) - nur halt nicht in Echtzeit. Dafür musste man 25 Jahre in die kontinuierliche Weiterentwicklung von Hard- und Software stecken.

Das kannst du dir auch aus der Perspektive überlegen, dass die Recheneinheiten einer GPU sehr simpel sind im Vergleich einer CPU. GPUs sind dafür ausgelegt, parallel sehr viele simple Berechnungen gleichzeitig durchzuführen. Das war vor 25 Jahren als die ersten GPUs rauskamen schon so und ist heute immer noch so.
 
  • Gefällt mir
Reaktionen: ###Zaunpfahl###
Lan_Party94 schrieb:
OT: Wie kann ein SP Spiel "MMO-Like" sein? MMO heißt doch nichts anderes als "Riesen Multiplayer Spiel". Meinst du nicht eher Open World RPG?
Schau dir mal Erenshor auf Steam an.
Das ist ein simuliertes MMO.

BeBur schrieb:
Kann man auch schön an Pathtracing sehen, das es seit 25 Jahren schon gibt (und die Theorie dahinter noch viel länger) - nur halt nicht in Echtzeit. Dafür musste man 25 Jahre in die kontinuierliche Weiterentwicklung von Hard- und Software stecken.
An deine 25 Jahre kannste nochmal 10 dranhaengen :D Gab schon auf dem Amiga Programme, die dir Bilder mit realistischem Raytracing erstellen konnten.
https://archive.org/details/amiga-magazin-sonderheft-14-ray-tracing-video
Nur hat die Erstellung eines solchen Bildes damals etliche Minuten gedauert.

Ich wuenschte ich waere damals zu meiner Abizeit schon "reifer" gewesen. So ist mir aus meinem Mathe Leistungskurs den ich nur mit Ach und Krach geschafft habe nur noch in Erinnerung geblieben wie kacke Matrizenrechnung war :D
 
  • Gefällt mir
Reaktionen: iSight2TheBlind
Ranayna schrieb:
Ich wünschte ich wäre damals zu meiner Abizeit schon "reifer" gewesen. So ist mir aus meinem Mathe Leistungskurs den ich nur mit Ach und Krach geschafft habe nur noch in Erinnerung geblieben wie kacke Matrizenrechnung war :D
Ich war ziemlich angepisst das man uns nicht gleich Matrizen gezeigt hat und uns stattdessen die Gleichungssysteme "von Hand" hat ausrechnen lassen.

Die Lehrer wussten halt ganz genau das niemand von uns auch nur eine Seite im Schulbuch weiter blätterte als wir mussten :-)
 
foofoobar schrieb:
Ich mach mal den Korinthenkacker:
Eigentlich ist das Verhalten von Zahlen unabhängig von der Basis des Zahlensystems, bzw. dessen Darstellung.
Da kacke ich mit :)
Wurzeln werden heutzutage per Hardware berechnet. Der Fast Inverse Square Root Algorithmus ist langsamer, als Wurzeln per Hardware zu berechnen. Den Algorithmus braucht man nicht mehr zu kennen.
 
btw: Macht es Sinn "Rust" zu lernen?

Rust ist sehr schnell sowie C/C++ und es macht mehr Spaß damit zu programmieren als in C/C++.

In den letzten Jahren ist es immer beliebter geworden und mittlerweile wird es fast
genauso oft verwendet wie C/C++.

Denkt ihr Rust wird richtig beliebt in den nächsten Jahren werden?
 
Für Anfänger finde ich GDScript sehr gut geeignet (Godot Engine). Die Syntax ist vergleichsweise einfach und man kann sich zunächst auf die eigentlichen Grundlagen der Programmierung konzentrieren. Allerdings sollte man nicht unterschätzen, dass selbst eine einfache Sprache wie GDScript mehrere Monate Übung erfordern kann, bis man damit wirklich eigenständig komplexere Projekte umsetzen kann. Wer die grundlegenden Programmierkonzepte verstanden hat, kann später auch relativ problemlos auf andere Sprachen wie Rust, C# oder C++ wechseln.
 
Ranayna schrieb:
An deine 25 Jahre kannste nochmal 10 dranhaengen :D Gab schon auf dem Amiga Programme, die dir Bilder mit realistischem Raytracing erstellen konnten.
https://archive.org/details/amiga-magazin-sonderheft-14-ray-tracing-video
Nur hat die Erstellung eines solchen Bildes damals etliche Minuten gedauert.
Ich sprach von Pathtracing und von Echtzeit und mit "realistisch" im heutigen Sinne hat das was du verlinkt hast nichts zu tun.

HerrDrachen schrieb:
Rust ist sehr schnell sowie C/C++ und es macht mehr Spaß damit zu programmieren als in C/C++.
Wenn dir Rust gefällt, dann nimm Rust. Es ergibt keinen Sinn, eine "strategische" Entscheidung zu treffen. Du solltest auch nicht die gesündeste Sportart als Hobby suchen, sondern die Sportart, die dir Spaß macht. Hier ist es dasselbe, aus dem selben Grund.
 
  • Gefällt mir
Reaktionen: bart0rn
Wie viele schon geschrieben haben, stecken Spiele voller angewandter Mathematik. Algebra, Analysis, Vektoren und Stochastik sind sehr große Themen davon. Die Grundlagen davon sind zwar etwas tricky, aber wenn man bereit ist diese zu lernen, dann findet man sich sehr schnell zurecht.

In den ersten Semestern meines Medieninformatik-Studiums haben auch sehr viele gedacht, dass sie das nächste GTA entwickeln werden und dass das Studium eine Ausbildung dafür ist. Dem war aber nicht so und folglich haben sehr viele das Studium dann abgebrochen. Die Universität ist eben doch anders als die Schulmathematik :D
 
HerrDrachen schrieb:
Denkt ihr Rust wird richtig beliebt in den nächsten Jahren werden?
Der einzige Grund nicht Rust zu nehmen ist weil es schon C und C++ gibt.
Und weil es aufwendiger ist ein Ergebnis (Lauffähig) zu bekommen.

Rust zwingt dich dazu wenn man sich nicht wehrt... ein Speichersicheres Programm zu erstellen und das ist schwieriger als in C oder C++ wo man es einfach ignorieren kann oder es oftmals einfach was übersieht.

Ich bin mir sicher das Rust sich noch sehr sehr viel mehr verbreitern wird, ob das aber auch in der Spielebranche passiert ist schon unsicher, weil vieles einfach auf C und C++ basiert und dort die Motivation sicheren Code zu produzieren vermutlich signifikant weniger prio hat als möglichst schnell Ergebnisse also Bilder zu produzieren...

Anderer Tipp: nur noch mit KI programmieren, muss jetzt kein Agent sein, aber ohne verlierst du nur Zeit. Aus eigener Erfahrung kann ich dir sagen, das spätesten in 5 Jahren niemand mehr Geld verdient der es ohne KI macht. Man ist in allen belangen in jedem Level viel schneller und besser, wenn man weiß was man tut und wie.
 
###Zaunpfahl### schrieb:
Rust zwingt dich dazu wenn man sich nicht wehrt... ein Speichersicheres Programm zu erstellen und das ist schwieriger als in C oder C++ wo man es einfach ignorieren kann oder es oftmals einfach was übersieht.
Eventuell hat sich das Thema aufgrund von KI weitestgehend erledigt. Viele problematische Fehlerklassen generiert eine KI schlicht nicht, so jedenfalls meine Erfahrung mit KI und C++.

###Zaunpfahl### schrieb:
Aus eigener Erfahrung kann ich dir sagen, das spätesten in 5 Jahren niemand mehr Geld verdient der es ohne KI macht.
Bei uns im Team waren selbst diejenigen überraschend schnell überzeugt, die Veränderungen gegenüber eher kritisch (bzw. sehr kritisch) eingestellt sind. Die Ergebnisse und der Nutzen ist einfach so deutlich das es keinerlei Zweifel an der Sinnhaftigkeit gibt. Bei einer Demo habe ich z.B. spontan in 2 Minuten ein Ticket bearbeitet das ansonsten ca. 1 Stunde benötigt hätte. Generell fallen die ganzen qualvollen Aufgaben weg, kein stundenlanges suchen mehr nach Bugs, kein fixen von Syntaxfehlern in Pipeline-Definitionen, etc.etc..

Ich liebe programmieren und finde es scheiße, dass es KI gibt. Auf der anderen Seite wird der Beruf endlich mal ein vernünftiger Bürojob, bei dem man sich nicht kognitiv aufreiben muss, weil man stundenlang hochkonzentriert arbeiten muss.
 
  • Gefällt mir
Reaktionen: iSight2TheBlind
Lan_Party94 schrieb:
OT: Wie kann ein SP Spiel "MMO-Like" sein? MMO heißt doch nichts anderes als "Riesen Multiplayer Spiel".

Da gibt es zum einen das von @Ranayna bereits erwähnte Erenshor:
https://store.steampowered.com/app/2382520/Erenshor/

Das wurde wohl noch konventionell entwickelt.

Und nun, im Vibecoding-Zeitalter, gibt es auch noch Sachen wie OfflineDAoC:
https://www.reddit.com/r/daoc/comments/1x7u4ua/offlinedaoc_036036b036c_are_now_released_try_the/
Da hat jemand ein existierendes MMORPG und dessen Serveremulator (wurde über Jahrzehnte von Fans entwickelt um eigene Server erstellen zu können) genommen und da Bots reingecodet.

(Mit Sword Art Online gibt es auch eine Manga/Anime/JRPG-Reihe die quasi in einem MMORPG spielt, auch wenn es ein Singleplayertitel ist)

Rhemsey schrieb:
Indem es ein MMO als Singleplayer-Game simuliert. Einschließlich vollwertiger Begleiter. Tank/DD/Heiler/Support-System mit MMO-Kampftechnik (kein Actionkampf mit aktivem ausweichen etc, sondern wie EQ2/WoW mit Spell-Bars).

Dass ich noch erleben darf, dass jemand EQ2 vor WoW in einer Auflistung nennt! :D Sehr schön!
 
  • Gefällt mir
Reaktionen: Lan_Party94 und madmax2010
Zurück
Oben