Entity Component System
Mikä on Entity-Component-System?
Entity-Component-System (ECS) on arkkitehtoninen malli. Tätä mallia käytetään laajasti pelisovelluskehityksessä. ECS noudattaa koostumusta periytymisperiaatteen yli, mikä tarjoaa parempaa joustavuutta ja auttaa sinua tunnistamaan entiteetit, joissa kaikkia pelin kohtauksen kohteita pidetään kokonaisuutena.
ECS-ohjelmointi on menetelmä koodin kirjoittamiseen, joka tarjoaa oletuksena korkean suorituskyvyn.
Tämä järjestelmä koostuu kolmesta termistä.
- Entity
- komponentti
- järjestelmä
Opitaanpa tämä käsite yksityiskohtaisesti:
Tässä Entity-Component System -opetusohjelmassa opit:
- Mikä on Entity-Component-System?
- Mikä on entiteetti?
- Mikä on komponentti?
- Mikä on järjestelmä?
- Koostumus
- ECS:n etu
- ECS:n käytön haitat
- Esimerkki entiteettikomponenttijärjestelmästä
- Tiedonkulku ECS:ssä:
Mikä on entiteetti?
Entiteetti on erillinen objekti, joka edustaa näyttelijää simuloidussa tilassa. Sillä ei ole todellista dataa tai käyttäytymistä. Tämä komponentti antaa entiteetille sen tiedot. Se on tyypillisesti tukijalka tai sanakirja.
Esimerkiksi, jos simuloimme pelin maailmankaikkeutta Minecraft, kaikki näkyvät, konkreettiset "asiat" peliuniversumissa, kuten, lasketaan kokonaisuuksiksi.
Mikä on komponentti?
Komponentti on entiteetille määritetty yksittäinen käyttäytyminen. Elementin nimen tulisi ihannetapauksessa kertoa, millaista käyttäytymistä kokonaisuus osoittaa. Itse komponentilla ei kuitenkaan ole käyttäytymistä. Ne ovat uudelleenkäytettäviä moduuleja, jotka on liitetty kokonaisuuksiin. Komponentti tarjoaa ulkonäön, käyttäytymisen ja toimivuuden.
Kaikki logiikka toteutetaan komponenteilla, joiden avulla voit määrittää erityyppisiä objekteja sekoittamalla ja konfiguroimalla komponentteja.
Mikä on järjestelmä?
Järjestelmä iteroi monia komponentteja suorittaakseen alhaisen tason
toiminnot, kuten grafiikan renderöinti, fysiikan suorittaminen
laskelmat tai polunhaku. Se tarjoaa maailmanlaajuisen laajuuden, hallinnan ja palvelut komponenttiluokille.
Järjestelmät eivät kuitenkaan ole valinnaisia, vaan voimme käyttää niitä logiikan ja tiedon erottamiseen. Se auttaa myös käsittelemään loogisia komponentteja, toimimaan tietosäiliöinä.
Esimerkit
- Gravity (Velocity) – Se auttaa sinua nopeuttamaan painovoiman aiheuttamaa nopeutta
- Se lisää nopeutta asemaan
- Asettaa bot-ohjatun entiteetin syötteen tekoälyagentin mukaan
- Renderöi (sijainti, sprite) – Piirtää spritejä
- Player Control (Input Player) auttaa sinua asettamaan soittimen ohjaaman entiteetin tulon ohjaimen mukaan.
Koostumus
Koostumus on elementti, johon voit liittää lisää komponentteja ulkonäön, käyttäytymisen tai toimivuuden lisäämiseksi. Voit myös päivittää komponenttien arvot entiteetin määrittämiseksi.
ECS:n etu
Tässä ovat ECS:n käytön edut ohjelmoinnissa:
- Voit luoda lyhyemmän ja vähemmän monimutkaisen koodin.
- Erittäin joustava Emergent-käyttäytyminen.
- Se tarjoaa arkkitehtuurin 3D- ja VR-kehitykseen.
- Mahdollistaa ei-teknikon komentosarjojen käytön.
- Se auttaa sinua jakamaan monoliittiset luokat.
- Helppo hylätä ja koostettavuus.
- Helppo vaihtoehto yksikkötestaukseen ja pilkkaamiseen.
- Sen avulla voit rakentaa VR-sovelluksen monimutkaisuuden kannalta.
- Korvaa komponentit pilkatuilla komponenteilla ajon aikana.
- Se auttaa sinua laajentamaan uusia ominaisuuksia.
- ECS on ystävällinen menetelmä rinnakkaiskäsittelyyn ja monisäikeiseen,
- Auttaa erottamaan tiedot niihin vaikuttavista toiminnoista
- Tarjoa parempaa joustavuutta, kun määrität esineitä sekoittamalla uudelleenkäytettäviin osiin.
- Se tarjoaa puhtaan suunnittelun käyttämällä irrotus-, kapselointi-, modularisointi- ja uudelleenkäytettävyysmenetelmiä.
ECS:n käytön haitat
Tässä on joitain ECS:n käytön haittapuolia
- Ei niin konkreettisesti määritelty kuin muut mallit, kuten MVC.
- Vaikea levittää oikein, helppo käyttää väärin Hyvät komponentit vaativat enemmän suunnittelua
- ECS vaatii monien pienten järjestelmien kirjoittamista, jotka alliteroivat mahdollisesti suuria määriä entiteettejä, jotka muodostavat riskin kirjoittaa erittäin tehotonta koodia
- Useimmat ihmiset eivät ole koskaan edes kuulleet tästä mallista.
Esimerkki entiteettikomponenttijärjestelmästä
Katsotaanpa esimerkkiä pupusta:
Katso näiden komponenttien ympärillä oleva katkoviiva. Se on pupukokonaisuus – ei muuta kuin komponenttien säiliö. Voit myös määrittää entiteetit minkä tahansa komponenttien osajoukon yhdistelmäksi.
Näet yllä olevan kuvan. Se on yksi pupukokonaisuuksista – ei muuta kuin komponenttien säiliö. Voit määrittää entiteetit minkä tahansa komponenttien, kuten porkkanan, yhdistelmänä:
Tiedonkulku ECS:ssä:
Järjestelmän käyttäytyminen on ECS-malli on muutos tilasta toiseen.
Ymmärrämme tämän esimerkin avulla:
Käyttäytyminen: "Puun päällä istuva pupu kaatuu painovoiman vaikutuksesta."
Kuinka toteuttaa yllä oleva toimintatapa?
Voit tehdä sen z-arvolla, joka on suurempi kuin 0, joka pienenee ajan myötä nollaan.
Käyttäytyminen: "Elävät olennot ikääntyvät."
Katsotaanpa, kuinka voit toteuttaa tämän käyttäytymisen?
Voit tehdä siitä niin, että Living Componentsilla on ikäarvo, joka kasvaa ajan myötä.
Yhteenveto:
- Entity-Component-System (ECS) on arkkitehtoninen malli.
- Entiteetti on erillinen objekti, joka edustaa näyttelijää simuloidussa tilassa.
- Komponentti on entiteetille määritetty yksittäinen käyttäytyminen.
- Järjestelmä toistaa monia komponentteja suorittaakseen matalan tason toimintoja, kuten grafiikan renderöimistä, fysiikan laskelmien suorittamista tai polun etsimistä.
- Koostumus on elementti, johon voit liittää lisää komponentteja ulkonäön, käyttäytymisen tai toimivuuden lisäämiseksi.
- Käyttämällä ECS-kuviota voit luoda lyhyemmän ja vähemmän monimutkaisen koodin.
- Sitä ei ole määritelty niin konkreettisesti kuin muut mallit, kuten MVC.
- Järjestelmän käyttäytyminen on ECS-malli on muutos tilasta toiseen.