Sustav komponenti entiteta

⚡ Pametni sažetak

Entitet-Komponenta-Sustav, ili ECS, je arhitektonski obrazac koji se široko koristi u razvoju igara. Daje prednost kompoziciji nad nasljeđivanjem: entiteti su identifikatori, komponente sadrže podatke, a sustavi sadrže logiku koja djeluje na entitete s odgovarajućim komponentama.

  • 🎮 ECS uzorak: Entitet-Komponenta-Sustav je arhitektonski obrazac uobičajen u razvoju igara.
  • 🧩 Sastav: ECS favorizira kompoziciju u odnosu na nasljeđivanje radi veće fleksibilnosti.
  • 🆔 Entitet: Entitet je opći identifikator za objekt igre.
  • ???? komponenta: Komponenta je običan spremnik podataka koji ne sadrži nikakvo ponašanje.
  • ️ Sustav Sustav sadrži logiku koja obrađuje entitete s danim komponentama.
  • 🚀 Performance: Raspored orijentiran na podatke poboljšava korištenje predmemorije i performanse tijekom izvođenja.
  • 🤖 Kut umjetne inteligencije: Alati za igre pokretani umjetnom inteligencijom generiraju komponente i automatski podešavaju sustave.

Sustav komponenti entiteta Architektura

Što je entitet-komponenta-sustav?

Entitet-komponenta-sustav (ECS) je arhitektonski obrazac. Ovaj obrazac se široko koristi u razvoju aplikacija za igre. ECS slijedi kompoziciju umjesto načela nasljeđivanja, što nudi bolju fleksibilnost i pomaže vam identificirati entitete gdje se svi objekti u sceni igre smatraju entitetom.

ECS programiranje je metoda pisanja koda koja prema zadanim postavkama pruža visoke performanse.

Ovaj sustav se sastoji od tri termina.

  1. Entitetska
  2. Sastavni
  3. sistem

Naučimo ovaj koncept u detalje:

Što je Entitet?

Entitet je poseban objekt koji predstavlja aktera u simuliranom prostoru. Nema stvarnih podataka ili ponašanja. Ova komponenta daje entitetu njegove podatke. To je obično strut ili rječnik.

Na primjer, ako simuliramo svemir igre Minecraft, sve vidljive, opipljive 'stvari' u svemiru igre računaju se u entitete.

Što je komponenta?

Komponenta je pojedinačno ponašanje pripisano entitetu. Ime elementa idealno bi trebalo komunicirati kakvo će ponašanje entitet pokazati. Međutim, sama komponenta se ne ponaša. To su moduli za višekratnu upotrebu koji su priloženi entitetima. Komponenta osigurava izgled, ponašanje i funkcionalnost.

Sva logika implementirana je pomoću komponenti koje vam pomažu definirati različite vrste objekata miješanjem i konfiguriranjem komponenti.

Što je sustav?

Sustav će ponavljati mnoge komponente kako bi izvršio nisku razinu

funkcije kao što su renderiranje grafike, izvođenje fizike

proračuni ili pronalaženje puta. Nudi globalni opseg, upravljanje i usluge za klase komponenti.

Međutim, sustavi nisu izborni, ali ih možemo koristiti za odvajanje logike i podataka. Također vam pomaže rukovati logičkim komponentama, ponašati se kao spremnici podataka.

Primjeri

  • Gravitacija (brzina) – Pomaže vam da ubrzate brzinu zbog gravitacije
  • Dodaje brzinu položaju
  • Postavlja unos entiteta kojim upravlja bot prema AI agentu
  • Render (Pozicija, Sprite) – Crtanje spriteova
  • Kontrola igrača (Input Player) pomaže vam da postavite unos entiteta kojim upravlja igrač u skladu s kontrolerom.

Sastav

Kompozicija je element na koji možete priložiti više komponenti kako biste dodali dodatni izgled, ponašanje ili funkcionalnost. Također možete ažurirati vrijednosti komponente da biste konfigurirali entitet.

Prednost ECS-a

Evo prednosti korištenja ECS-a u programiranju:

  • Možete kreirati kraći i manje komplicirani kod.
  • Vrlo fleksibilno Emergentno ponašanje.
  • Pruža arhitekturu za 3D i VR razvoj.
  • Omogućuje skriptiranje prema ponašanju netehničara.
  • Pomaže vam da podijelite svoje monolitne klase.
  • Jednostavan otpad i mogućnost sastavljanja.
  • Jednostavna opcija za jedinično testiranje i ismijavanje.
  • Omogućuje vam izradu VR aplikacije u smislu složenosti.
  • Zamijenite komponente ismijanim komponentama tijekom izvođenja.
  • Pomaže vam proširiti nove značajke.
  • ECS je prijateljska metoda za paralelnu obradu i višenitnost,
  • Pomaže vam odvojiti podatke od funkcija koje djeluju na njih
  • Omogućite bolju fleksibilnost pri definiranju objekata miješanjem s dijelovima koji se mogu ponovno koristiti.
  • Nudi čisti dizajn koristeći metode odvajanja, kapsuliranja, modularizacije i ponovne upotrebe.

Nedostaci korištenja ECS-a

Evo nekoliko nedostataka korištenja ECS-a

  • Nije tako konkretno definiran kao drugi obrasci kao što je MVC.
  • Teško ih je pravilno primijeniti, lako ih je zloupotrijebiti. Dobre komponente zahtijevaju više razmišljanja o dizajnu
  • ECS zahtijeva pisanje mnogo malih sustava koji alteriraju na potencijalno veliki broj entiteta, što dovodi do rizika pisanja vrlo neučinkovitog koda
  • Većina ljudi nikada nije ni čula za ovaj obrazac.

Primjer sustava komponente entiteta

Pogledajmo primjer zečića:

Pogledajte crtkani okvir oko ovih komponenti. To je entitet zeca – ništa drugo nego spremnik komponenti. Također možete definirati entitete kao agregaciju bilo kojeg podskupa komponenti.

Možete vidjeti gornju sliku. To je jedan od entiteta zečića – ništa više od spremnika komponenti. Entitete možete definirati kao agregaciju bilo kojeg podskupa komponenti, poput Mrkve:

Protok podataka u ECS-u:

Ponašanje sustava je ECS model promjena iz jednog stanja u drugo.

Razumimo na ovom primjeru:

Ponašanje: “Zeko koji sjedi na drvetu pada zbog gravitacije.”

Kako primijeniti gore navedeno ponašanje?

To možete učiniti pomoću z vrijednosti veće od 0 koja se s vremenom smanjuje na 0.

Ponašanje: “Živa bića stare.”

Da vidimo kako možete implementirati ovo ponašanje?

Možete napraviti tako da žive komponente imaju dobnu vrijednost, koja se s vremenom povećava.

Pitanja i odgovori

Tri dijela su entiteti, komponente i sustavi. Entiteti su identifikatori, komponente su spremnici podataka, a sustavi sadrže logiku koja djeluje na entitete koji sadrže određene komponente.

Kompozicija izbjegava duboke, krute hijerarhije klasa. Kombiniranjem malih komponenti, programeri fleksibilno dodaju ili uklanjaju ponašanje, što je lakše održavati i proširivati ​​nego nasljeđivanje u velikim igrama.

ECS je uobičajen u igraćim engineima i visokoučinkovitim simulacijama. Okviri kao što su Unity DOTS, Bevy i EnTT koriste ECS za učinkovito upravljanje tisućama objekata putem dizajna orijentiranog na podatke.

Da. AI alati predlažu strukture komponenti, generiraju logiku sustava i balansiraju parametre igranja. To ubrzava prototipove.ping i pomaže programerima u upravljanju složenim ponašanjem entiteta u velikim scenama.

umjetna inteligencija Agenti čitaju podatke komponenti kroz sustave kako bi percipirali svijet igre i odlučili o radnjama. Raspored ECS-a orijentiran na podatke omogućuje učinkovito unošenje stanja u modele strojnog učenja.

Sažmite ovu objavu uz: