Während es gültig sein kann zu fragen, welche Datenstrukturen in der Spieleentwicklung am häufigsten verwendet werden, ist es viel gültiger zu fragen, welche Datenstrukturen für bestimmte Probleme verwendet werden. Ich kann leicht sagen, dass Hash-Tabellen in Spielen sehr häufig sind, aber das würde Ihnen nichts Nützliches darüber sagen, wann und wo Sie eine Hash-Tabelle in Ihrem eigenen Code verwenden (und nicht verwenden!). :) :)
In Bezug auf Mathematik benötigen Sie ein sehr gutes Verständnis der linearen Algebra (Vektoren, Matrizen, Lösen linearer Systeme usw.), ein sehr starkes Verständnis der Trigonometrie und zumindest ein grundlegendes Verständnis der Analysis (einfache Ableitungen und Integration). . Jeder lineare Algebra-Einführungskurs auf College-Ebene sollte Sie auf den richtigen Weg bringen, wenn Sie nicht alles lernen, was Sie wissen müssen, um mit gängigen 3D-Grafikprinzipien zu arbeiten. Ich verlinke auch ein Buch, das Sie vielleicht sehr hilfreich finden.
Für die Physik sind Sie bereit für eine Fahrt. Die Physik kann in zwei verschiedene Kategorien unterteilt werden: Kollisionserkennung und Kollisionsreaktion. Sie müssen unbedingt die Mathematik hinter der Kollisionserkennung kennen, da diese Mathematik mehr oder weniger identisch ist mit dem, was Sie für die Erstellung von Grafiken benötigen (insbesondere zum Erstellen der Bäume und Karten, die Sie für die Okklusion benötigen), und Sie werden dieses Material für eine verwenden viel von Ihrer Spielelogik auch.
Die Kollisionsreaktion kann von "einfach" bis zu lächerlich kompliziert variieren, und selbst die einfachen Dinge können zunächst nicht intuitiv sein. Ich würde Ihnen wärmstens empfehlen, dieses Zeug einer vorhandenen Bibliothek wie Bullet, Havok, PhysX usw. (oder Box2D, wenn Sie am 2D-Gameplay arbeiten) zu überlassen, bis Sie mit Ihrer vorhandenen Mathematik und Ihrem vorhandenen Algorithmus vertraut sind Wissen und entscheiden, dass Sie lernen möchten, wie Physik-Engines funktionieren. Ich würde Ihnen dann empfehlen, als ersten Versuch eine sehr einfache 2D-Physik-Engine zu erstellen. 3D-Physik-Engines sind wahnsinnig komplexe Biester und (wohl) der mit Abstand komplizierteste und schwierigste Teil der Spielprogrammierung, weshalb Physik-Engines die am häufigsten lizenzierte Technologie von Drittanbietern sind, die in Spielen verwendet wird. Man sieht einfach nicht sehr viele Spiele, die es nicht gibt Verwenden Sie Havok oder PhysX in der Berufswelt nicht, obwohl in vielen Spielen selbst entwickelte Grafik-Engines und Core-Engine-Code von Grund auf neu sind. Selbst Unternehmen, die nur Game-Engines erstellen, lizenzieren normalerweise eine Physik-Engine, z. B. verwendet Unreal nur PhysX, anstatt eine eigene Physik-Engine einzuschließen.
Ich würde die folgenden Bücher empfehlen, um Ihnen den Einstieg zu erleichtern. Das erste ist ein Einführungsbuch über die Grundlagen der Mathematik, die Sie als 3D-Spielprogrammierer kennen müssen:
http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869
Das zweite ist ein Buch, das anhand von Kollisionserkennungsalgorithmen (keine Kollisionsreaktion!) Erkannt wurde und sowohl bei Ihrer Grafikcodierung als auch bei Ihrer Physikcodierung hilfreich ist:
http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323