Sustav komponenti entiteta
Š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.
- Entitetska
- Sastavni
- sistem
Naučimo ovaj koncept u detalje:
U ovom vodiču o sustavu entitet-komponenta naučit ćete:
- Što je entitet-komponenta-sustav?
- Što je Entitet?
- Što je komponenta?
- Što je sustav?
- Sastav
- Prednost ECS-a
- Nedostaci korištenja ECS-a
- Primjer sustava komponente entiteta
- Protok podataka u ECS-u:
Š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.
Sažetak:
- Entitet-komponenta-sustav (ECS) je arhitektonski obrazac.
- Entitet je poseban objekt koji predstavlja aktera u simuliranom prostoru.
- Komponenta je pojedinačno ponašanje pripisano entitetu.
- Sustav će ponavljati mnoge komponente za izvođenje funkcija niske razine kao što je renderiranje grafike, izvođenje fizičkih izračuna ili pronalaženje puta.
- Kompozicija je element na koji možete priložiti više komponenti kako biste dodali dodatni izgled, ponašanje ili funkcionalnost.
- Korištenjem ECS uzorka možete kreirati kraći i manje komplicirani kod.
- Nije tako konkretno definiran kao drugi obrasci kao što je MVC.
- Ponašanje sustava je ECS model promjena iz jednog stanja u drugo.