Sistemul component al entității
Ce este Entity-Component-System?
Entity-Component–System (ECS) este un model arhitectural. Acest model este utilizat pe scară largă în dezvoltarea de aplicații de jocuri. ECS urmează compoziția peste principiul moștenirii, care oferă o mai bună flexibilitate și vă ajută să identificați entitățile în care toate obiectele din scena unui joc sunt considerate o entitate.
Programarea ECS este o metodă de scriere a codului care oferă în mod implicit performanță ridicată.
Acest sistem este format din trei termeni.
- Entitate
- Component
- Sistem
Să învățăm acest concept în detaliu:
În acest tutorial Entity-Component System, veți învăța:
- Ce este Entity-Component-System?
- Ce este o entitate?
- Ce este o componentă?
- Ce este sistemul?
- Compoziție
- Avantajul ECS
- Dezavantajele utilizării ECS
- Exemplu de sistem de componentă de entitate
- Fluxul de date în ECS:
Ce este o entitate?
O entitate este un obiect distinct care reprezintă un actor într-un spațiu simulat. Nu are date sau comportament reale. Această componentă oferă unei entități datele sale. Este de obicei un strut sau un dicționar.
De exemplu, dacă simulăm universul unui joc minecraft, toate „lucrurile” vizibile și tangibile din universul jocului, cum ar fi, sunt numărate în entități.
Ce este o componentă?
O componentă este un comportament singular atribuit unei entități. Numele unui element ar trebui să comunice în mod ideal ce comportament va prezenta entitatea. Cu toate acestea, componenta în sine nu are niciun comportament. Sunt module reutilizabile care sunt atașate la entități. Componenta oferă aspect, comportament și funcționalitate.
Toată logica este implementată folosind componente care vă ajută să definiți diferite tipuri de obiecte prin amestecarea și configurarea componentelor.
Ce este sistemul?
Un sistem va repeta multe componente pentru a funcționa la nivel scăzut
funcții precum redarea graficelor, efectuarea fizicii
calcule sau identificarea căii. Oferă un domeniu de aplicare global, management și servicii pentru clase de componente.
Cu toate acestea, sistemele nu sunt opționale, dar le putem folosi pentru a separa logica și datele. De asemenea, vă ajută să gestionați componentele logice, să acționați ca containere de date.
Exemple
- Gravitate (Velocity) – Vă ajută să accelerați viteza datorită gravitației
- Adaugă viteză poziției
- Setează intrarea unei entități controlate de bot în funcție de un agent AI
- Render (Poziție, Sprite) – Desenează sprite-uri
- Controlul jucătorului (Input Player) vă ajută să setați intrarea entității controlate de jucător în funcție de un controler.
Compoziție
O compoziție este un element pe care îl puteți atașa mai multe componente pentru a adăuga un aspect, un comportament sau o funcționalitate suplimentară. De asemenea, puteți actualiza valorile componente pentru a configura entitatea.
Avantajul ECS
Iată avantajele utilizării ECS în programare:
- Puteți crea un cod mai scurt și mai puțin complicat.
- Foarte flexibil Comportament emergent.
- Oferă o arhitectură pentru dezvoltarea 3D și VR.
- Permite crearea de scripturi în funcție de comportamentul celor care nu sunt tehnicieni.
- Vă ajută să vă împărțiți clasele monolitice.
- Refuză ușoară și posibilitate.
- O opțiune ușoară pentru testarea unitară și batjocorirea.
- Vă permite să construiți o aplicație VR în ceea ce privește complexitatea.
- Înlocuiți componentele cu componente batjocorite în timpul rulării.
- Vă ajută să extindeți funcții noi.
- ECS este o metodă prietenoasă pentru procesare paralelă și multi-threading,
- Vă ajută să separați datele de funcțiile care acționează asupra lor
- Oferă o mai bună flexibilitate la definirea obiectelor prin amestecarea cu părți reutilizabile.
- Oferă un design curat folosind metodele de decuplare, încapsulare, modularizare, reutilizare.
Dezavantajele utilizării ECS
Iată câteva dezavantaje ale utilizării ECS
- Nu la fel de concret definit ca alte modele, cum ar fi MVC.
- Dificil de aplicat corect, ușor de utilizat greșit Componentele bune necesită mai multă gândire la design
- ECS necesită scrierea multor sisteme mici care aliterate pe un număr potențial mare de entități, care dezvoltă riscul de a scrie cod foarte ineficient
- Majoritatea oamenilor nu au auzit nici măcar de acest model.
Exemplu de sistem de componentă de entitate
Să ne uităm la exemplul unui iepuraș:
Vedeți caseta punctată din jurul acestor componente. Aceasta este entitatea iepuraș – nimic decât un container de componente. De asemenea, puteți defini entități ca o agregare a oricărui subset de componente.
Puteți vedea imaginea de mai sus. Este una dintre entitățile iepurași – nimic mai mult decât un container de componente. Puteți defini entitățile ca o agregare a oricărui subset de componente, cum ar fi Morcovul:
Fluxul de date în ECS:
Comportamentul sistemelor este modelul ECS este schimbarea de la o stare la alta.
Să înțelegem folosind acest exemplu:
Comportamente: „Un iepuraș care stă pe un copac cade din cauza gravitației.”
Cum să implementați comportamentul de mai sus?
Puteți să o faceți cu o valoare z mai mare de 0, care scade în timp la 0.
Comportament: „Ființele vii îmbătrânesc”.
Să vedem cum poți implementa acest comportament?
Puteți face astfel încât Living Components să aibă valoare de vârstă, care crește în timp.
Rezumat:
- Entity-Component–System (ECS) este un model arhitectural.
- O entitate este un obiect distinct care reprezintă un actor într-un spațiu simulat.
- O componentă este un comportament singular atribuit unei entități.
- Un sistem va repeta multe componente pentru a îndeplini funcții de nivel scăzut, cum ar fi randarea graficelor, efectuarea de calcule fizice sau identificarea căii.
- O compoziție este un element pe care îl puteți atașa mai multe componente pentru a adăuga un aspect, un comportament sau o funcționalitate suplimentară.
- Folosind modelul ECS puteți crea cod mai scurt și mai puțin complicat.
- Nu este la fel de concret definit ca alte modele, cum ar fi MVC.
- Comportamentul sistemelor este modelul ECS este schimbarea de la o stare la alta.