Paradygmat
W chwili, gdy ta odpowiedź została napisana, wszystkie pozostałe opublikowane tutaj odpowiedzi są błędne.
Zamiast pytać, czy projektowanie oparte na domenie jest dobre dla gier. Powinieneś zapytać, czy „Modelowanie domen” jest dobre dla gier.
Czy modelowanie domen jest dobre dla gier?
Odpowiedź brzmi: czasami jest to absolutnie fantastyczne. Jeśli jednak tworzysz grę w czasie rzeczywistym, taką jak platformówka, FPS lub cokolwiek innego (WIELE WIELU rodzajów gier), to nie. Niekoniecznie nadaje się do tych systemów. Mogą jednak istnieć systemy w obrębie tych gier, w których skuteczne jest wdrożenie wzorca modelu domeny.
Jak wspomnieli tu inni, szkielety elementów-bytów są bardzo popularne i nie bez powodu. Jednak w kulturze tworzenia gier wydaje się wyraźny brak architektur warstwowych. Ponownie, jest to słuszny powód, ponieważ większość gier, które ludzie będą rozwijać, po prostu mutuje stan na bytach i niech powstające konsekwencje będą grą.
CAŁE OPROGRAMOWANIE NIE JEST OPROGRAMOWANIEM, KTÓRE JESTEŚ PISEMY. Niektóre różnią się od innych.
Niektóre przykłady domen, w których modelowanie domen działa dobrze, to gry karciane, planszowe i inne typy systemów sterowanych zdarzeniami.
Gry, które działają z częstotliwością klatek na sekundę z ruchem itp., Określone przez delty czasowe, ponieważ podstawowe koncepcje domenowe prawdopodobnie nie są świetne. W takim przypadku nasza „domena” jest często tak prosta, że nie ma potrzeby modelowania domen. Wykrywanie kolizji, odradzanie się nowych bytów, wpływ sił na istniejące byty itp. Zwykle obejmują większość rozgrywki.
Jednak, gdy sprawy stają się skomplikowane, zaczyna się widzieć, jak programiści wdrażają modele domen w swoich jednostkach, aby obsłużyć określone typy zachowań i obliczeń.
Wzorzec modelu domeny w architekturze gry
Silnik gry (na przykład Unity3D) jest często zorientowany na elementy składowe. W platformówce możesz mieć byt dla swojej postaci, a jego stan jest ciągle zmieniany w celu aktualizacji pozycji itp.
Jednak w grze opartej na zdarzeniach bardziej prawdopodobne jest, że rola struktury komponent-byt raczej po prostu istnieje jako interfejs użytkownika. W efekcie powstaje architektura warstwowa.
Interfejs użytkownika renderuje stan gry dla użytkownika. Użytkownik wchodzi w interakcję z interfejsem użytkownika, wyzwalając polecenia w warstwie usługi. Warstwa usługi współdziała z obiektami domeny. Obiekty domeny wywołały zdarzenia domeny. Detektory zdarzeń słyszą zdarzenia i wyzwalają zmiany w interfejsie użytkownika.
Interfejs użytkownika> Warstwa usługi> Model domeny
Krótko mówiąc, skończyć z kontrolerem widoku modelu z implementacją warstwy usług.
Korzystając z tej architektury, masz w pełni testowalny rdzeń gry (rzadkość w kulturze tworzenia gier, i to pokazuje) z interfejsem sterowanym zdarzeniami.
Ok teraz, co to jest DDD?
Projektowanie oparte na domenie to w szczególności kultura / ruch kładący nacisk na wzorce analityczne, które są wykorzystywane do zdobywania wiedzy o domenie, dzięki czemu właściwie budujesz właściwą rzecz, a następnie wzorce implementacyjne, które upoważniają do wdrożenia warstwy modelu reprezentującej koncepcje w modelu domeny przy użyciu idiomu języka. DDD wywodzi się ze społeczności, która pracuje ze skomplikowanymi domenami i zawsze szuka sposobów zarządzania wysoką złożonością swoich aplikacji, koncentrując się na modelowaniu domen.
DDD nie radzi sobie tak dobrze, jeśli Twoim celem jest po prostu zacząć kodować, bawić się systemem, a następnie dowiedzieć się, co chcesz zbudować później itp. Zakłada się, że istnieje mniej więcej domena. Więc jeśli nie masz pojęcia, jaka będzie Twoja gra ... To nie zadziała.