Będąc programistą aplikacji internetowych i bazujących na DB, mam wiedzę na temat struktur danych, takich jak listy, drzewa, wykresy itp. Szczerze mówiąc, bardzo mało z tych algorytmów struktury danych używam do kodowania, z wyjątkiem sortowania rzeczy w prostych tablicach, ponieważ działał prawie całkowicie z frameworkami zorientowanymi na klienta, w których wbudowano wszystkie podstawowe funkcje. Znam C, PHP, Java, HTML, PL / SQL i MySQL. Obecnie uczę się języka Python.
Chcę zacząć od tworzenia gier. Widziałem inne pytania dotyczące sugestii, wskazówek i podejść do tworzenia gier dla początkujących. Rozumiem te kwestie i udzielam jasnych odpowiedzi. Kilka dni po opublikowaniu przeczytałem artykuł Pisanie gier, a nie silników i zdałem sobie sprawę, że powinienem wdrożyć grę, zanim utworzę silnik gry. Nadal mam pytania.
Moim celem jest
- Popraw swoje podstawowe umiejętności programowania na poziomie podstawowym, w tym za pomocą algorytmów struktury danych, matematyki i fizyki.
- Zaimplementuj dobry silnik gry, aby pozwolić sobie na kodowanie na poziomie podstawowym.
- Aby utorować sobie drogę do pola badawczego AI.
Jakie są konkretne matematyki, fizyki, sztucznej inteligencji i ogólne pojęcia, które programista powinien znać, aby opracować silnik gry?
źródło
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
źródło