System komponentów encji

⚡ Inteligentne podsumowanie

Entity-Component-System, czyli ECS, to wzorzec architektoniczny szeroko stosowany w tworzeniu gier. Przedkłada on kompozycję nad dziedziczenie: encje to identyfikatory, komponenty przechowują dane, a systemy zawierają logikę, która działa na encjach z pasującymi do nich komponentami.

  • 🎮 Wzór ECS: Entity-Component-System to wzorzec architektoniczny powszechnie stosowany w tworzeniu gier.
  • 🧩 Skład: ECS preferuje kompozycję nad dziedziczeniem, aby zapewnić większą elastyczność.
  • 🆔 Jednostka: Jednostka jest uniwersalnym identyfikatorem obiektu gry.
  • 📦 Komponent: Komponent to prosty kontener danych, który nie przechowuje żadnych zachowań.
  • ⚙️ System: System zawiera logikę, która przetwarza jednostki o danych komponentach.
  • 🚀 Wydajność: Układ zorientowany na dane poprawia wykorzystanie pamięci podręcznej i wydajność środowiska wykonawczego.
  • 🤖 Kąt AI: Narzędzia do gier oparte na sztucznej inteligencji automatycznie generują komponenty i dostrajają systemy.

System komponentów encji Architektura

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ę:

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.

FAQ

Te trzy części to encje, komponenty i systemy. Encje to identyfikatory, komponenty to kontenery danych, a systemy zawierają logikę, która działa na encjach zawierających określone komponenty.

Kompozycja pozwala uniknąć głębokich, sztywnych hierarchii klas. Łącząc małe komponenty, programiści mogą elastycznie dodawać lub usuwać zachowania, co jest łatwiejsze w utrzymaniu i rozszerzaniu niż dziedziczenie w dużych grach.

ECS jest powszechnie stosowany w silnikach gier i symulacjach o wysokiej wydajności. Frameworki takie jak Unity DOTS, Bevy i EnTT wykorzystują ECS do efektywnego zarządzania tysiącami obiektów poprzez projektowanie zorientowane na dane.

Tak. Narzędzia AI sugerują struktury komponentów, generują logikę systemu i równoważą parametry rozgrywki. To przyspiesza prototypowanie.ping i pomaga programistom zarządzać złożonym zachowaniem jednostek w dużych scenach.

AI Agenci odczytują dane komponentów za pośrednictwem systemów, aby postrzegać świat gry i podejmować decyzje. Zorientowany na dane układ ECS umożliwia efektywne wprowadzanie stanu do modeli uczenia maszynowego.

Podsumuj ten post następująco: