Chociaż może być właściwe pytanie, które struktury danych są najczęściej używane w tworzeniu gier, o wiele bardziej trafne jest pytanie, które struktury danych są używane w przypadku konkretnych problemów. Mogę z łatwością stwierdzić, że tabele skrótów są bardzo powszechne w grach, ale nie powiedziałoby to nic przydatnego, jeśli chodzi o to, kiedy i gdzie używać (i nie używać!) Tabeli skrótów we własnym kodzie. :)
Jeśli chodzi o matematykę, musisz bardzo dobrze rozumieć algebrę liniową (wektory, macierze, rozwiązywanie układów liniowych itp.), Bardzo dobrze rozumieć trygonometrię i co najmniej podstawową znajomość rachunku różniczkowego (proste pochodne i całkowanie) . Każdy wstępny kurs algebry liniowej na poziomie uczelni powinien postawić cię na właściwej ścieżce, jeśli nie nauczy Cię wszystkiego, co musisz wiedzieć, aby rozpocząć pracę z powszechnymi zasadami grafiki 3D. Łączę też książkę, poniżej której możesz się okazać bardzo pomocny.
Jeśli chodzi o fizykę, czeka cię przejażdżka. Fizykę można podzielić na dwie różne kategorie: wykrywanie kolizji i reakcja na kolizję. Musisz bezwzględnie znać matematykę związaną z wykrywaniem kolizji, ponieważ matematyka jest mniej więcej identyczna z tym, co musisz zrobić w grafice (szczególnie do budowania drzew i map potrzebnych do okluzji), i będziesz używać tych rzeczy do dużo twojej logiki.
Reakcja na zderzenie może być różna, od „prostych” do absurdalnych poziomów zawiłości, a nawet proste rzeczy mogą początkowo nie być intuicyjne. Gorąco polecam pozostawienie tych rzeczy w istniejącej bibliotece, takiej jak Bullet, Havok, PhysX itp. (Lub Box2D, jeśli pracujesz nad grą 2D), dopóki nie poczujesz się komfortowo z istniejącą matematyką i algorytmem wiedzę i zdecyduj, że chcesz się dowiedzieć, jak działają silniki fizyki. Poleciłbym wtedy zbudować bardzo prosty silnik fizyki 2D jako pierwszą próbę. Silniki fizyki 3D są niesamowicie złożonymi zwierzętami i są (prawdopodobnie) najbardziej skomplikowaną i trudną częścią programowania gier, dlatego silniki fizyki są najczęściej licencjonowanymi technologiami innych firm wykorzystywanymi w grach. Po prostu nie widzisz zbyt wielu gier, które nie są • Używanie Havok lub PhysX w profesjonalnym świecie, pomimo tego, ile gier ma od podstaw własne silniki graficzne i podstawowy kod silnika. Nawet firmy, które nie robią nic poza tworzeniem silników do gier, zwykle licencjonują silnik fizyki, np. Unreal używa po prostu PhysX zamiast własnego silnika fizyki.
Polecam następujące książki na początek. Pierwsza to książka wprowadzająca na temat podstawowej matematyki, którą musisz znać jako programista gier 3D:
http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869
Drugi to książka wykrywająca algorytmy wykrywania kolizji (nie reakcja na kolizję!), Które pomogą zarówno w kodowaniu grafiki, jak i kodowaniu fizyki:
http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323