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: