Einfache Frage: Welche Mathematik sollten alle Spieleprogrammierer beherrschen, um erfolgreich zu sein?
Ich spreche nicht speziell über das Rendern von Mathematik oder Ähnlichem in den Nischenbereichen der Spieleprogrammierung, insbesondere nur über Dinge, die selbst Spieleprogrammierer kennen sollten, und wenn sie dies nicht tun, werden sie es wahrscheinlich nützlich finden.
Hinweis: Da es keine richtige Antwort gibt , handelt es sich bei dieser Frage (und ihren Antworten) um ein Community-Wiki.
Wenn Sie sich für mathematische Latexgleichungen interessieren, können Sie auch http://mathurl.com/ verwenden .
Antworten:
Es gibt viele andere Formen der Mathematik, die nützlich sind, aber mindestens müssen Sie diese kennen:
Diese sind ziemlich einfach, aber wenn Sie diese nicht kennen, werden Sie nicht einmal die Chance haben, Programmierer zu sein, geschweige denn Spieleentwickler.
Objekte in einer Spielwelt werden mit Vektoren dargestellt. Ein Vektor repräsentiert Dinge wie die Position, Blickrichtung und Geschwindigkeit eines Objekts. Vektormathematische Berechnungen wie das Skalarprodukt , das Kreuzprodukt und die Vektornormalisierung sind unerlässlich.
Wie bewege ich mein Spielobjekt? Der Neuling könnte sagen:
"Ich weiß! Ich mache einfach:"
object.position.x++
.Nein nein Nein. Sie müssen eine Vektorberechnung verwenden. Das Objekt benötigt einen Positions-, Richtungs- und Beschleunigungsvektor, mit dem Sie das Objekt bewegen können. Wenn Sie den Anfänger machen, stecken Sie in einem unhaltbaren Chaos fest und wie können Sie ihn in eine Richtung bewegen, die nicht mit der XYZ-Achse der Welt ausgerichtet ist?
Hauptgrund für die Verwendung von Quaternionen in Spielen ist, dass sie Drehungen nahezu so platzsparend wie Euler-Winkel darstellen, ohne dass die Gimbal-Sperre auftritt . Gimbal Lock beginnt, wenn ein Euler-Winkel eine Drehung von 90 Grad um eine beliebige Achse erreicht: Sie verlieren sofort einen Freiheitsgrad. In Quaternions wird dieses Problem durch Hinzufügen einer vierten Dimension behoben. Wenn Sie sich an Euler-Winkel halten, müssen Sie eine Achse so beschränken, dass sie sich nie mehr als ~ 89 Grad dreht.
Wenn Sie in einem Spiel die Mathematik für physikalische Antworten programmieren, wäre es keine schlechte Idee gewesen, an einem Physikkurs teilzunehmen.
Gründe, warum Sie physikalische Gleichungen kennen müssen:
Wenn Sie eine Physik-Engine (oder eine Spiel-Engine, in die die Physik-Engine integriert ist) verwenden, können Sie sich mit sehr wenig Wissen über Physik abfinden. Trotzdem ist es gut zu wissen, wann Sie sich die Hände schmutzig machen müssen, da die Physik-Engine nicht richtig funktioniert.
quelle
Ich träume von einem Tag, an dem Spieleentwicklung genauso datengetrieben ist wie Kunstproduktion. Ich sehe es nirgendwo am Horizont, daher scheint es für den Moment eine Notwendigkeit zu sein, ein bisschen Mathe zu wissen.
Mathematik ist wie Technik, je mehr desto besser, solange Sie es anwenden können.
Hier ist die Reihenfolge der Wichtigkeit, die ich sehe.
Ich könnte weitermachen. Je mehr Sie wissen, desto besser. Wenn Sie jedoch ein bisschen Mathe lernen, bedeutet dies nicht, dass Sie ein großartiges Spiel machen, aber es kann helfen.
quelle
Ein sehr grundlegendes ist das pythagoreische Theorem. Wird auch als Abstandsformel bezeichnet.
wo
a
undb
sind die Kanten eines rechtwinkligen Dreiecks undc
ist die Hypotenuse. Dies bedeutet, dass Sie Folgendes tun, um die Länge eines Vektors zu ermitteln:Ein weiterer interessanter Hinweis ist, dass Sie, wenn Sie nur Entfernungen vergleichen , nicht die Quadratwurzel ziehen müssen (was relativ kostspielig sein kann). Aus diesem Grund haben die meisten Frameworks für ihre Vektoren eine Funktion "Abstand zum Quadrat" oder "Länge zum Quadrat".
quelle
sqrt(V dot V)
ist seine Länge. Der Abstand zwischen zwei Punkten ist also:sqrt((A-B) dot (A-B))
Auch wenn Sie nicht The Graphics Guy sind, werden Sie in 80% der Fälle Vektoren und Vektor-Mathematik verwenden. Sie sind die Zwiebeln unserer lustigen Bolognese.
quelle
Ein fest im Griff
+
,-
,*
, und/
. Ohne sie bist du völlig durchgeknallt.quelle
Ja, Spieleprogrammierung ist in der Regel ziemlich mathematisch. Welche Mathematik Sie benötigen, hängt davon ab, woran Sie arbeiten. Grundlegende Arithmetik ist natürlich ein Muss, so wie es bei jeder Programmierung der Fall ist. Darüber hinaus:
Geometrie ist für jede Grafikarbeit von entscheidender Bedeutung. Wenn Sie Dinge auf dem Bildschirm anzeigen möchten, müssen Sie die Koordinatensysteme verstehen. Und wenn Sie sie in eine andere als die Hauptrichtung bewegen möchten, sind Sie völlig verloren, ohne ein solides Gespür für Sinus, Cosinus und Vektoren zu haben (grundlegende Triggerung). Und wenn Sie in 3D arbeiten müssen, werden die Anforderungen an Geometrie und Trigger viel komplizierter.
Wenn Sie irgendeine Art von fernrealistischer Physik modellieren möchten, benötigen Sie eine Kalkulation dafür. (Es ist, was Newton veranlasste, schließlich Kalkül zu erfinden.)
Für jede Art von Wahrscheinlichkeitsberechnung sind Kenntnisse in Statistik und Wahrscheinlichkeitstheorie erforderlich, um vernünftige Ergebnisse zu erzielen, ohne unnötig viel herumprobieren zu müssen.
Es gibt wahrscheinlich noch viel mehr, aber genau das fällt mir ein.
quelle
s=u.t + a.t.t/2
. Sie benötigen Trigger, um die Anfangsgeschwindigkeit zu erhalten (u).Zumindest wirst du brauchen.
Sie möchten auch mindestens Grundkenntnisse über Vektoroperationen haben und wissen, was eine Matrix ist und wofür sie verwendet werden kann, obwohl die Details nicht unbedingt erforderlich sind.
Wenn Sie in die Grafikprogrammierung einsteigen möchten, benötigen Sie verdammt viel mehr Mathematikkenntnisse, aber das allgemeine Gameplay-Programmieren muss nicht so mathematikintensiv sein.
quelle
Binär- und Hexadezimal- Nummerierungssysteme und wie man sie in / von Dezimalzahlen konvertiert.
Obwohl Sie im Allgemeinen nicht mit rohen Binärzahlen arbeiten müssen, werden sie häufig für Flag-Variablen verwendet, die eine boolesche Logik und Bitverschiebung erfordern .
Hex ist nicht ganz so wichtig (es sei denn, Sie möchten 0xDEADBEEF verarbeiten ), aber Sie möchten zumindest erkennen, wann sie verwendet werden und warum.
quelle
Boolean
undbinary
durcheinander. Ich bin mir nicht sicher, ob sie für die Programmierung von Spielen unbedingt erforderlich sind.Keine Erwähnung der grundlegenden Mathematik der Computerprogrammierung? Graphentheorie, Zahlentheorie, Mengenlehre und konkrete Mathematik werden normalerweise zu einer schmerzhaften und schlecht unterrichteten Klasse zusammengefasst, die an der Universität als "diskrete Mathematik" bezeichnet wird.
"Dumme Bit-Tricks" sparen jede Art von Programmzeit (und sie sind normalerweise auch gleichbedeutend mit einigen String-Tricks und Set-Tricks), Diagrammtypen und Traversalen werden überall verwendet (auch wenn Sie nur STL-Container auswählen). Die algorithmische Komplexität ist der Schlüssel zur Optimierung, wenn die Sprachen auf ein höheres Niveau gelangen.
quelle
Ich denke, die Auszahlungsmatrix ist ein ziemlich wichtiges Werkzeug. Spiele machen oft mehr Spaß, wenn sie sich einem interessanten Nullsummen-Fairplay-Gleichgewicht nähern, und Auszahlungsmatrizen helfen Ihnen, dies in komplizierten Fällen zu quantifizieren. Ich denke, dieser Wikipedia-Artikel ist so gut wie jeder andere und vermittelt das grundlegende notwendige Konzept: http://en.wikipedia.org/wiki/Normal-form_game
quelle
Verstehen Sie das Skalarprodukt: Wenn zwei Vektoren ungefähr dieselbe Richtung haben (Theta <90 Grad), ist das Skalarprodukt positiv oder negativ. Es kann verwendet werden, um zu testen, wann immer der Spieler in Sichtweite ist (vorausgesetzt, das Sichtfeld beträgt 90 Grad).
Verallgemeinern Sie Ihr 2D-Spiel auf höhere Dimensionen. (Verwenden Sie Vektorberechnungen)
Wenn Sie eine 3D-Engine selbst implementieren können, können Sie loslegen.
quelle
Es hängt davon ab, was Sie tun .
Alle Spielprogrammierer sollten mindestens die Algebra der High School kennen. Das bedeutet:
Ihre Grafikprogrammierer müssen wissen:
Ihre Physik-Programmierer müssen wissen:
quelle
Neben Sinus und Cosinus (50-75% der Programmierer, denen ich begegnet bin, wussten nicht, wie man es benutzt), lernen Sie die magische Arc-Tan-Funktion und wie man mit ihr den Winkel eines Vektors bestimmen kann.
quelle
atan2
da dies die Quadrantenbehandlung selbst übernimmt.Ich bin überrascht, dass niemand Quaternions erwähnt hat . Ich habe nicht viel Erfahrung mit verschiedenen Motoren, aber zumindest JME verwendet sie überall und ich hatte den Eindruck, dass sie ein ziemlich wichtiges Konzept sind.
quelle
Bei Spielen geht es darum, "reales" Leben in die virtuelle Realität zu bringen. Es ist besser, mehr über die reale Welt / das Universum zu wissen als weniger :) .. Mathematik ist nur ein Werkzeug. Und wenn Sie einen Plan machen, müssen Sie auch Zeit für das Lernen in Pläne investieren.
BEARBEITET: Ich habe ein Missverständnis gesehen :) .. Ich denke, dass die Menge der mathematischen Anforderungen, die Sie anordnen müssen, von konkreten Dingen abhängt, die Sie beschreiben möchten. Niemand weiß alles. Und wie es besser geht, ist. Nicht alles am Anfang lernen, sondern wenig lernen, anwenden, lernen, anwenden usw. Dann können Sie es während der Entwicklung tun, wenn Sie einen guten Plan haben.
quelle
Einfache Antwort: VIEL!
Ausführliche Antwort:
Arithmetische, elementare und lineare Algebra, in den meisten Fällen Trig, wenn Sie ein 3D-Spiel, ENDGÜLTIGE Berechnung und Physik erstellen (Physik erfordert Berechnung)!
quelle