2011-01-05 15 views
5

Niedawno poznałem podstawowe (w najgorszym z możliwych) pojęcie programowania Entity i chciałbym dowiedzieć się więcej. Koncepcja, którą otrzymałem, była po prostu ogromną abstrakcją. Czy to jest poprawne?Samouczki dotyczące programowania jednostek?

+0

TekPub ......... –

+0

Możesz go cofnąć, ale usunąłem C++, ponieważ pytanie o tym nie wspomina (i jest limit 5 tagów), a także dodawało rozwój gry, ponieważ wspomniałeś Tony Hawk w jednym z twoich komentarzy –

+0

To jest do przyjęcia, dziękuję za uwagę. Jeśli chodzi o aspekt Tony Hawk, to bardziej sięgałem po coś, z czego korzystałem. To był artykuł, który przeczytałem przez jednego z wiodących programistów, który mnie tak zaciekawił. – AedonEtLIRA

Odpowiedz

2

Entity to po prostu podstawowa abstrakcja dla obiektów na wykresie sceny/"twój świat". Nic więcej.

Każdy silnik gry definiuje i wykorzystuje encje na różne sposoby. Niektóre silniki mogą dołączać współrzędne lub wspólne właściwości do jednostek, inne nie. Ponieważ różni się w zależności od gry, niewiele więcej można o nim powiedzieć.

Jeśli nie przeczytałeś o nich, może warto przeczytać więcej o programowaniu abstrakcji. Polimorfizm, abstrakcyjne klasy bazowe, Liskov Substitution Principle (LSP), lub książka Code Complete mogą być dobre rzeczy do obejrzenia. Lub może to być dobry pomysł, aby pogłębić i nauczyć się dużo więcej o konkretnym silniku gry i użyć SDK, aby coś dla niego opracować (na przykład UDK wygląda całkiem fajnie).

+0

Dzięki, że prawie to, czego szukałem, będę musiał rzucić okiem na te książki. Więc tak naprawdę to jest po prostu ogromna, wyabstrahowana kupa "fizycznych" obiektów? Przez fizyczne mam na myśli wszystko, co zajmuje przestrzeń w świecie. Czy to po prostu ciekawy sposób na abstrakcję klasową? np .: klasa c rozszerza podmiot. c ma wszystko, czego potrzebujesz, ale reprezentujesz go w jednostce, która przechowuje wskaźnik id do klasy c? – AedonEtLIRA

+1

@AedonEtLIRA: Tak, tylko abstrakcja. Niektóre gry mają także nie-fizyczne elementy. Jak każda abstrakcja, im więcej funkcji znajduje się w podstawowej abstrakcji, tym więcej elementów silnika gry będzie w stanie z niego korzystać. Jednak zbyt wiele funkcji może uniemożliwić korzystanie z niektórych elementów. Na przykład, jeśli dodasz współrzędne światowe, nie możesz mieć nie-fizycznych elementów (które mogą być używane do wyzwalaczy sztucznej inteligencji, stanu globalnego, skryptów zdarzeń itp.). Ale może nie-fizyczne byty nie mają sensu, albo architektura gry ma lepszy sposób na ich obsługę. Wszystkie rzeczy związane z grą. –

+1

@AedonEtLIRA: Mogę zobaczyć, czy mogę znaleźć tutorial dla ciebie, ale jest to w zasadzie tylko duża lista (lub w C++, może std :: vector ), którą możesz zapętlić i wywołać metody wirtualne, lub włącz/włącz członków. Prawdopodobnie byłaby na przykład metoda 'Update', która pozwalałaby na wykonywanie fizyki lub logikę gry. Te jednostki mogą mieć kilka innych dołączonych klas lub znajdować się na więcej niż jednej liście dla różnych części twojego silnika. –

3

Z tego co wiem, nie wydaje się to być bardzo dobrze znaną metodą. Jedyne informacje, jakie mogłem znaleźć, wydają się potwierdzać to, co myślałem - programowanie "Entity" oznacza posiadanie szeregu obiektów, z których wszystkie mogą być używane wymiennie w strukturze danych (takich jak wykres sceny gry). Ponadto jednostka powinna być definiowalna w danych, co oznacza, że ​​jednostka może być zbudowana na przykład z pliku XML lub równie ważna, zapisana w pliku XML i przeładowana z niego.

O ile dobrze pamiętam, Quake używał terminu "entity" z powrotem w ciągu dnia, aby odnieść się do niestatycznych obiektów (tj. Niczego oprócz drzewa BSP, które tworzyło teren). Rzeczy takie jak światła, drzwi itp.