System komponentów encji

Co to jest system-komponent-jednostka?

Entity-Component–System (ECS) to wzorzec architektoniczny. Ten wzorzec jest szeroko stosowany w rozwoju aplikacji gier. ECS podąża za zasadą kompozycji nad zasadą dziedziczenia, co zapewnia większą elastyczność i pomaga identyfikować encje, podczas gdy wszystkie obiekty w scenie gry są uważane za encje.

Programowanie ECS to metoda pisania kodu, która domyślnie zapewnia wysoką wydajność.

System ten składa się z trzech terminów.

  1. Jednostka
  2. Składnik
  3. Konfiguracja

Poznajmy szczegółowo tę koncepcję:

W tym samouczku dotyczącym systemu Entity-Component dowiesz się:

Co to jest podmiot?

Byt to odrębny obiekt reprezentujący aktora w symulowanej przestrzeni. Nie zawiera rzeczywistych danych ani zachowań. Komponent ten udostępnia podmiotowi swoje dane. Zwykle jest to rozpórka lub słownik.

Na przykład, jeśli symulujemy uniwersum gry Minecraft, wszystkie widoczne, namacalne „rzeczy” we wszechświecie gry są liczone w bytach.

Co to jest komponent?

Komponent to pojedyncze zachowanie przypisane do jednostki. Nazwa elementu powinna idealnie komunikować, jakie zachowanie będzie prezentował obiekt. Jednak sam komponent nie zachowuje się. Są to moduły wielokrotnego użytku, które są dołączone do jednostek. Komponent zapewnia wygląd, zachowanie i funkcjonalność.

Cała logika jest realizowana przy użyciu komponentów, które pomagają definiować różne typy obiektów poprzez mieszanie i konfigurowanie komponentów.

Co to jest System?

System będzie iterował wiele komponentów, aby wykonać zadanie na niskim poziomie

funkcje takie jak renderowanie grafiki, wykonywanie fizyki

obliczenia lub odnajdywanie ścieżki. Oferuje globalny zasięg, zarządzanie i usługi dla klas komponentów.

Jednak systemy nie są opcjonalne, ale możemy ich użyć do oddzielenia logiki i danych. Pomaga także w obsłudze komponentów logicznych, działając jako kontenery danych.

Przykłady

  • Grawitacja (prędkość) – pomaga zwiększyć prędkość dzięki grawitacji
  • Dodaje prędkość do pozycji
  • Ustawia dane wejściowe jednostki kontrolowanej przez bota zgodnie z agentem AI
  • Renderowanie (pozycja, duszek) – rysuje duszki
  • Kontrola odtwarzacza (Odtwarzacz wejściowy) pomaga ustawić wejście jednostki kontrolowanej przez gracza zgodnie z kontrolerem.

Kompozycja

Kompozycja to element, do którego można dołączyć więcej komponentów, aby dodać dodatkowy wygląd, zachowanie lub funkcjonalność. Możesz także zaktualizować wartości komponentów, aby skonfigurować jednostkę.

Zaleta ECS

Oto zalety wykorzystania ECS w programowaniu:

  • Możesz stworzyć krótszy i mniej skomplikowany kod.
  • Bardzo elastyczne Zachowanie pojawiające się.
  • Zapewnia architekturę do tworzenia aplikacji 3D i VR.
  • Umożliwia tworzenie skryptów według zachowań osób nietechnicznych.
  • Pomaga w podzieleniu klas monolitycznych.
  • Łatwe odrzucanie i możliwość kompostowania.
  • Łatwa opcja do testowania jednostkowego i kpin.
  • Umożliwia zbudowanie aplikacji VR o różnym stopniu złożoności.
  • Zastąp komponenty próbkowanymi komponentami w czasie wykonywania.
  • Pomaga rozszerzyć nowe funkcje.
  • ECS jest przyjazną metodą przetwarzania równoległego i wielowątkowości,
  • Pomaga oddzielić dane od funkcji, które na nich działają
  • Zapewnij większą elastyczność podczas definiowania obiektów poprzez mieszanie z częściami wielokrotnego użytku.
  • Oferuje czysty projekt wykorzystujący metody odsprzęgania, enkapsulacji, modularyzacji i ponownego użycia.

Wady stosowania ECS

Oto pewne wady korzystania z ECS

  • Nie tak konkretnie zdefiniowane jak inne wzorce, takie jak MVC.
  • Trudne do prawidłowego zastosowania, łatwe do niewłaściwego użycia. Dobre komponenty wymagają więcej myślenia o projekcie
  • ECS wymaga pisania wielu małych systemów, które aliterują potencjalnie ogromną liczbę jednostek, co wiąże się z ryzykiem pisania bardzo nieefektywnego kodu
  • Większość ludzi nawet nie słyszała o tym wzorze.

Przykład systemu komponentów jednostki

Spójrzmy na przykład króliczka:

Zobacz przerywaną ramkę wokół tych komponentów. To jest encja króliczka – nic więcej niż kontener komponentów. Możesz również zdefiniować encje jako agregację dowolnego podzbioru komponentów.

Możesz zobaczyć powyższy obraz. To jeden z króliczych bytów – nic innego jak pojemnik z komponentami. Możesz zdefiniować byty jako agregację dowolnego podzbioru komponentów, np. Marchew:

Przepływ danych w ECS:

Zachowanie systemu to model ECS, czyli zmiana z jednego stanu do drugiego.

Wyjaśnijmy to na przykładzie:

Zachowania: „Królik siedzący na drzewie spada pod wpływem grawitacji”.

Jak zaimplementować powyższe zachowanie?

Można to zrobić poprzez wartość z większą niż 0, która z czasem maleje do 0.

Zachowanie: „Istoty żywe starzeją się”.

Zobaczmy, jak możesz zaimplementować to zachowanie?

Możesz to zrobić tak, aby Living Components miały wartość wieku, która z czasem wzrasta.

Podsumowanie:

  • Entity-Component-System (ECS) jest wzorcem architektonicznym.
  • Byt to odrębny obiekt reprezentujący aktora w symulowanej przestrzeni.
  • Komponent to pojedyncze zachowanie przypisane do jednostki.
  • System będzie iterował wiele komponentów w celu wykonywania funkcji niskiego poziomu, takich jak renderowanie grafiki, wykonywanie obliczeń fizycznych lub znajdowanie ścieżki.
  • Kompozycja to element, do którego można dołączyć więcej komponentów, aby dodać dodatkowy wygląd, zachowanie lub funkcjonalność.
  • Korzystając ze wzorca ECS, możesz stworzyć krótszy i mniej skomplikowany kod.
  • Nie jest tak konkretnie zdefiniowany jak inne wzorce, takie jak MVC.
  • Zachowanie systemu to model ECS, czyli zmiana z jednego stanu do drugiego.