Proste pytanie: z jakiej matematyki powinni się dobrze zapoznać wszyscy programiści, aby odnieść sukces?
Nie mówię konkretnie o renderowaniu matematyki lub czegokolwiek w niszowych obszarach programowania gier, a konkretnie o rzeczach, o których nawet programiści powinni wiedzieć, a jeśli tego nie zrobią, prawdopodobnie uznają to za przydatne.
Uwaga: ponieważ nie ma jednej poprawnej odpowiedzi , to pytanie (i jego odpowiedzi) jest wiki społeczności.
Ponadto, jeśli chcesz uzyskać fantazyjne równania matematyczne z lateksu, skorzystaj z http://mathurl.com/ .
Odpowiedzi:
Istnieje wiele innych form matematyki, które są przydatne, ale przy absolutnym minimum musisz je znać:
Są to dość proste, ale jeśli ich nie znasz, nie będziesz miał szansy zostać programistą, a tym bardziej twórcą gier.
Obiekty w świecie gry są reprezentowane przez wektory. Wektor reprezentuje rzeczy takie jak pozycja obiektu, kierunek patrzenia i prędkość. Niezbędne są obliczenia matematyczne wektorów, takie jak iloczyn skalarny , iloczyn krzyżowy i normalizacja wektorów.
Jak przenieść obiekt gry? Nowicjusz może powiedzieć:
„Wiem! Po prostu zrobię:”
object.position.x++
.Nie nie nie. Musisz użyć obliczenia wektorowego. Obiekt potrzebuje położenia, kierunku i wektora przyspieszenia, którego można użyć do przesunięcia obiektu. Jeśli zrobisz nowicjusz, utkniesz w nie do utrzymania bałaganie i jak sprawić, by poruszał się w kierunku, który nie jest zgodny z osią XYZ świata?
Głównym powodem, dla którego gry używają czwartorzędów, jest to, że reprezentują one obroty prawie tak oszczędnie przestrzennie jak kąty Eulera, bez cierpienia z powodu blokady Gimbala . Blokada gimbala rozpoczyna się, gdy dowolny kąt Eulera osiąga obrót o 90 stopni wokół dowolnej osi: natychmiast tracisz stopień swobody. Czwarty rozwiązują ten problem, dodając czwarty wymiar. Jeśli utkniesz z kątami Eulera, będziesz musiał ograniczyć jedną oś, aby nigdy nie obracać się więcej niż ~ 89 stopni.
Jeśli planujesz matematykę reakcji fizyki w grze, wzięcie lekcji fizyki nie byłoby złym pomysłem.
Powody, dla których musisz znać równania fizyki:
Jeśli używasz silnika fizyki (lub silnika gry, który ma wbudowany silnik fizyki), możesz uciec od wiedzy o fizyce. Mimo to dobrze wiedzieć, kiedy trzeba ubrudzić ręce, ponieważ silnik fizyki nie działa prawidłowo.
źródło
Marzę o dniu, w którym tworzenie gier będzie oparte na danych tak samo jak produkcja sztuki. Nigdzie nie widzę tego na horyzoncie, więc na razie znajomość matematyki wydaje się koniecznością.
Matematyka jest jak technika, im więcej, tym lepiej, o ile można ją zastosować.
Oto kolejność ważności, którą widzę.
Mógłbym iść dalej. Im więcej wiesz, tym lepiej, ale nauka matematyki nie oznacza, że stworzysz świetną grę, ale może pomóc.
źródło
Bardzo podstawowe jest twierdzenie Pitagorasa. Znany również jako formuła odległości.
gdzie
a
ib
są krawędziami prostokąta trójkąta ic
jest przeciwprostokątną. Oznacza to, że aby znaleźć długość wektora, wykonaj następujące czynności:Inną ciekawą rzeczą jest to, że jeśli porównujesz odległości, nie musisz wyliczyć pierwiastka kwadratowego (co może być stosunkowo kosztowne). Dlatego większość szkieletów ma dla swoich wektorów funkcję „odległość do kwadratu” lub „długość do kwadratu”.
źródło
sqrt(V dot V)
jest jego długość. Tak więc odległość między dwoma punktami wynosi:sqrt((A-B) dot (A-B))
Nawet jeśli nie jesteś grafikiem, w 80% przypadków będziesz używać wektorów i matematyki wektorowej. To cebula naszej zabawnej bolońskiej.
źródło
W pełni zaistnieć
+
,-
,*
, i/
. Bez nich jesteś kompletnie spieprzony.źródło
Tak, programowanie gier bywa dość matematyczne. Potrzebna matematyka zależy od tego, nad czym pracujesz. Podstawowa arytmetyka jest oczywiście niezbędna, tak jak ma to miejsce we wszystkich programach. Ponadto:
Geometria jest niezbędna do każdej pracy graficznej. Jeśli chcesz wyświetlać rzeczy na ekranie, musisz zrozumieć układy współrzędnych. A jeśli chcesz je przenosić w dowolnym kierunku poza głównymi kierunkami, będziesz całkowicie zagubiony bez solidnego opanowania sinusów, cosinusów i wektorów (podstawowy trig). A jeśli potrzebujesz pracować w 3D, wymagania dotyczące geometrii i wyzwalania stają się znacznie bardziej skomplikowane.
Jeśli chcesz modelować dowolną zdalnie realistyczną fizykę, potrzebujesz do tego rachunku. (W końcu Newton wymyślił rachunek różniczkowy.)
Wszelkie obliczenia prawdopodobieństwa wymagają znajomości statystyki i teorii prawdopodobieństwa, aby uzyskać rozsądne wyniki bez szalonych prób i błędów.
Prawdopodobnie jest o wiele więcej, ale to właśnie przychodzi mi na myśl.
źródło
s=u.t + a.t.t/2
. Potrzebujesz wyzwalacza, aby uzyskać prędkość początkową (u).Przynajmniej będziesz potrzebować.
Będziesz także chciał mieć przynajmniej praktyczną wiedzę na temat operacji Vector, i będziesz chciał wiedzieć, czym jest Matryca i do czego może być używana, chociaż szczegóły nie będą absolutnie konieczne.
Jeśli chcesz zająć się programowaniem graficznym, potrzebujesz dużo więcej wiedzy matematycznej, ale ogólne programowanie rozgrywki nie musi być tak intensywne z matematyki.
źródło
Systemy numeracji binarnej i szesnastkowej oraz sposób ich konwersji na liczby dziesiętne.
Chociaż generalnie nie będziesz musiał pracować z surowymi liczbami binarnymi, są one często używane do zmiennych Flag, które wymagają logiki logicznej i przesunięcia bitów.
Hex nie jest aż tak ważne (chyba, że chcesz przetworzyć 0xDEADBEEF ), ale przynajmniej, że chcesz, aby rozpoznać , kiedy jesteś one wykorzystywane, i dlaczego.
źródło
Boolean
ibinary
pomieszane. Nie jestem pewien, czy są absolutnie niezbędne do programowania gier.Nie ma wzmianek o podstawach matematyki programowania komputerowego? Teoria grafów, teoria liczb, teoria mnogości i konkretna matematyka, zwykle wszystkie połączone w bolesną i słabo nauczaną klasę o nazwie „matematyka dyskretna” na uniwersytecie.
„Głupie triki bitowe” oszczędzają każdy czas programu (i zwykle są one również równoważne z niektórymi trikami łańcuchowymi i trikami ustawionymi), typy wykresów i przejścia są używane wszędzie (nawet jeśli tylko wybierasz pojemniki STL), a złożoność algorytmiczna jest kluczem do optymalizacji, gdy języki osiągają wyższy poziom.
źródło
Myślę, że matryca wypłat jest dość niezbędnym narzędziem. Gry są często bardziej zabawne, gdy zbliżają się do interesującego salda fair play o sumie zerowej, a macierze wypłat pomagają określić to w skomplikowanych przypadkach. Wydaje mi się, że ten artykuł z Wikipedii jest tak dobry, jak każdy, i zawiera podstawową niezbędną koncepcję na stronie : http://en.wikipedia.org/wiki/Normal-form_game
źródło
Zrozum iloczyn iloczynu: jeśli dwa wektory mają mniej więcej ten sam kierunek (theta <90 °), iloczyn iloczynu jest dodatni lub ujemny. Można go używać do testowania, gdy gracz jest w polu widzenia (zakładając, że FOV wynosi 90 °).
I uogólnij swoją grę 2D na wyższe wymiary. (użyj obliczeń wektorowych)
Jeśli możesz samodzielnie wdrożyć silnik 3D, możesz zacząć.
źródło
To zależy od tego, co robisz .
Wszyscy programiści powinni znać przynajmniej algebrę szkoły średniej. To znaczy:
Twoi programiści graficzni muszą wiedzieć:
Twoi programiści fizyki muszą wiedzieć:
źródło
Oprócz sinusów i cosinusów (których 50–75% programistów, których spotkałem, nie wiedziałem, jak się posługiwać), poznaj magiczną funkcję arc-tan i jak można jej użyć do uzyskania kąta dowolnego wektora.
źródło
atan2
ponieważ samo zajmuje się obsługą kwadrantu.Dziwi mnie, że nikt nie wspominał o Czwartorzędach . Nie mam dużego doświadczenia z różnymi silnikami, ale przynajmniej JME używa go wszędzie i mam wrażenie, że są one dość ważną koncepcją.
źródło
Tworzenie gier polega na wprowadzeniu „prawdziwego” życia do rzeczywistości wirtualnej. Lepiej wiedzieć więcej o prawdziwym świecie / wszechświecie niż mniej :) .. Matematyka jest tylko narzędziem. A jeśli planujesz, musisz również poświęcić czas na naukę.
ZMIENIONO: Widziałem pewne nieporozumienia :) .. Myślę, że ten zestaw osiągnięć matematycznych, którym musisz rządzić, zależy od konkretnych rzeczy, które chcesz opisać. Nikt nie wie wszystkiego. Lepszym sposobem na to jest. Nie uczyć się wszystkiego na początku, ale uczyć się małego kawałka, używać, uczyć się, używać itp. Następnie możesz to zrobić podczas rozwoju, jeśli masz dobry plan.
źródło
Prosta odpowiedź: DUŻO!
Szczegółowa odpowiedź:
Arytmetyka, algebra elementarna i liniowa, w większości przypadków Trig, jeśli tworzysz grę 3D, ZDECYDOWANIE rachunku i fizyki (fizyka wymaga rachunku)!
źródło