Dziedziczenie w grach jest w rzeczywistości jedną z najgorszych rzeczy, które możesz zrobić - w szczególności w odniesieniu do bytów. Przeczytaj to, dlaczego. Kompozycja zamiast dziedziczenia zabiera Cię w gry. Jeśli chodzi o inne obszary silnika, tak naprawdę nie ma to znaczenia. Załóżmy na przykład, że wykonujesz połączenie z zewnętrzną usługą sieciową, a następnie możesz odziedziczyć jedną rodzajową usługę np. HTTPService i SocketService - bardzo podobnie jak w aplikacjach korporacyjnych, do których jesteś przyzwyczajony.
Chyba, że gra jest bardzo prosta, to będzie chciał użyć jednostki (CBE) architekturę modułową. Ogólna idea jest taka, że w przypadku encji przyczyną tak powszechnego tworzenia, a nie dziedziczenia jest to, że nie można wiedzieć do czasu uruchomienia, jakie możliwości będzie miała dana jednostka. Weźmy na przykład statek gracza w kosmicznej strzelance. Do pewnego momentu podczas gry nie wiesz, jaką broń, zbroję, systemy (tj. Komponenty) ten gracz będzie zbierał, kupował, sprzedawał, gubił, zniszczył itp. Tak więc jedynym realistycznym sposobem modelowania tego jest poprzez kompozycję obiektu. Zaletą tego scenariusza jest to, że możesz mieć w pełni konfigurowalnych wrogów zbudowanych w ten sam sposób, a nie wrogów, którzy są zawsze tacy sami za każdym razem, gdy widzisz tego typu wroga. Tak więc w przypadku CBE możesz zobaczyć marsjańskiego frachtowca i pomyśleć: „Ach, ma tylko małe lasery, zdejmę go”, i zwykle byłoby to prawdą, ale kiedy nagle znajdziesz się w zasięgu, zdajesz sobie sprawę, że ma duży tyłek pistolet czasoprzestrzenny. Niespodzianka niespodzianka!
Komponentizacja usuwa niejawne sprzężenie logiki, i to jest DOBRE.