Co powinien zrobić silnik gry? [Zamknięte]


20

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ć?

Do zaleceń książce, to pytanie powinno pomóc: gamedev.stackexchange.com/questions/455/...
tetradê

Odpowiedzi:


27

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ń


1
+1 za artykuł na blogu. Mówi dokładnie, co powiedziałbym w tej sprawie.
Tetrad

5
Tak, nikt nie powinien tworzyć silnika gry, zanim stworzy grę. Skąd możesz wiedzieć, że twój kod nadaje się do ponownego użycia, jeśli jeszcze nie wiesz, że jest on użyteczny?
Kylotan 30.01.11

@Kylotan Zdaję sobie sprawę, że jest bardzo późno, ale chciałbym podziękować za ten komentarz, ponieważ ciągle cytowałem go innym :)
Ray Dey

@RayDe link do „pisać gry nie silniki” jest martwy, FYI. Nie mogłem się doczekać, aby go przeczytać :(
DrewJordan

5

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.


+1 za punkt struktury, skalowalności i elastyczności i zapomniałem dodać zarządzania pamięcią
Ray Dey

1

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.


0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.