Chciałbym poprawić swoje umiejętności / wypróbować coś nowego i zacząć od 3D. Czytałem Rozpoczynanie programowania w 3D z C ++, ale mam pytanie dotyczące silników:
- Co powinien zrobić silnik? Wiem, że jest to warstwa abstrakcji nad 3D API (tj. OpenGL lub DirectX), ale co dokładnie powinna zrobić?
software-engineering
Maciej Piechotka
źródło
źródło
Odpowiedzi:
Masz rację, twierdząc, że silnik gry abstrahuje od interfejsów API niskiego poziomu grafiki, ale w pełni rozwinięty silnik gry robi znacznie więcej.
Silniki gier mają na celu ułatwić wszystko w zakresie rozwoju gier. Każdy z nich ma swoje własne unikalne funkcje, ale ogólnie zapewniają łatwe warstwy abstrakcji dla grafiki, dźwięku, danych wejściowych, zarządzania scenami, wykrywania kolizji, matematyki i ogólnie przydatnych narzędzi. Niektóre udostępniają opakowania i wtyczki do fizycznych interfejsów API, a niektóre nawet obsługują sztuczną inteligencję (głównie ograniczone do FSM, wyszukiwania ścieżek i - zgodnie z obecnym trendem - drzew zachowań). Wiele z nich wspiera i szczyci się funkcjonalnością wielu platform.
Silnik gry ma na celu ułatwić użytkownikowi tworzenie gry, bez konieczności radzenia sobie z drobnymi niedogodnościami związanymi z tworzeniem gry od zera lub instalowania całej gamy bibliotek i pisania własnych opakowań dla nich odpowiednich gra.
Istnieje wiele silników, ale uwaga na różnicę między silnikiem graficznym a silnikiem gier (na przykład Unity byłby silnikiem gier, a Ogre - silnikiem graficznym).
Mam dwie książki na ten temat, ale zapewniają one dobry przegląd tego tematu:
Architektura silnika gier 3D autorstwa Davida H. Eberly'ego
Kodowanie gry zakończone przez Mike'a McShaffry'ego
Nie są zbyt dogłębne, ponieważ potrzebujesz kilku książek na temat każdego komponentu, aby uzyskać wiedzę potrzebną do stworzenia pełnego, profesjonalnego silnika gry, ale myślę, że wyjaśniają te koncepcje bardzo dobrze.
Jeśli zaczynasz tworzenie gry, nie rób silnika. Odsyłam cię do następującej strony: http://geometrian.com/programming/tutorials/write-games-not-engines/
Silniki to trudna rzecz. Jeśli napiszesz mnóstwo gier, po chwili zauważysz, że masz wiele kodów wielokrotnego użytku, których możesz użyć do stworzenia własnego silnika, który ci pomoże. A posiadanie wielu (kompletnych) gier pod pasem jest o wiele bardziej imponujące niż pojedynczy silnik.
Mam nadzieję, że to pomaga.
Promień
źródło
Dodając do odpowiedzi Raya: silniki (gra, grafika, dźwięk itp.) Nie tylko ułatwiają interakcję z bazowymi interfejsami API, ale także implementują funkcje specyficzne dla gry, np. Model cieniowania, dźwięk 3D.
Specjalnie dla silników gier: zarządzają obiektami gry, zasobami (pamięcią, wątkami, wszystkimi innymi silnikami) oraz komunikacją między modułami. Zapewniają strukturę, skalowalność i elastyczność gry, co jest niezbędne w każdym nietrywialnym projekcie.
źródło
Napisałem szczegółowy samouczek na temat tego, czym jest silnik gry - szczególnie w kontekście platform iPhone i Android. Dołączyłem szczegółowe opisy z przykładami różnych części silnika gry: interfejs użytkownika, grafika, dźwięk, fizyka, efekty cząstek. Samouczek jest dostępny tutaj: Co to jest silnik gry? . Mam nadzieję, że to jest pomocne.
źródło
Każdy silnik gry ma nieco inne pojęcie o tym, co powinien zrobić silnik gry.
Ale ponieważ jest już zbyt wiele silników gier, naprawdę polecam, aby GRA nie była SILNIKIEM.
źródło