Entitáskomponens rendszer
Mi az az entitás-összetevő-rendszer?
Az Entity-Component-System (ECS) egy építészeti minta. Ezt a mintát széles körben használják a játékalkalmazások fejlesztésében. Az ECS a kompozíciót az öröklődés elvén követi, ami nagyobb rugalmasságot kínál, és segít azonosítani az entitásokat, ahol a játék jelenetében lévő összes objektum entitásnak minősül.
Az ECS programozás egy olyan kódírási módszer, amely alapértelmezés szerint nagy teljesítményt biztosít.
Ez a rendszer három kifejezésből áll.
- Entity
- Összetevő
- rendszer
Tanuljuk meg ezt a fogalmat részletesen:
Ebben az Entitáskomponens-rendszer oktatóanyagában a következőket tanulja meg:
- Mi az az entitás-összetevő-rendszer?
- Mi az entitás?
- Mi az a komponens?
- Mi a Rendszer?
- Összetétel
- Az ECS előnyei
- Az ECS használatának hátrányai
- Példa az entitáskomponens rendszerre
- Adatáramlás az ECS-ben:
Mi az entitás?
Az entitás egy különálló objektum, amely egy szereplőt reprezentál egy szimulált térben. Nem rendelkezik tényleges adatokkal vagy viselkedéssel. Ez a komponens adja meg az entitás adatait. Ez általában egy támasz vagy szótár.
Például ha egy játék univerzumát szimuláljuk Minecraft, a játékuniverzum minden látható, kézzelfogható "dolga" entitásokban van számolva.
Mi az a komponens?
A komponens egy entitásnak tulajdonított egyedi viselkedés. Egy elem nevének ideális esetben közölnie kell, hogy az entitás milyen viselkedést fog tanúsítani. Magának az összetevőnek azonban nincs viselkedése. Ezek újrafelhasználható modulok, amelyek entitásokhoz vannak csatolva. Az összetevő megjelenést, viselkedést és funkcionalitást biztosít.
Minden logika komponensek segítségével valósul meg, amelyek segítik a különböző típusú objektumok meghatározását az összetevők keverésével és konfigurálásával.
Mi a Rendszer?
Egy rendszer sok komponenst iterál az alacsony szintű működés érdekében
olyan funkciók, mint a grafika renderelése, a fizika végrehajtása
számítások vagy útkeresés. Globális hatókört, kezelést és szolgáltatásokat kínál az összetevők osztályaihoz.
A rendszerek azonban nem opcionálisak, de felhasználhatjuk a logika és az adatok elkülönítésére. Segít a logikai komponensek kezelésében is, adattárolóként működik.
Példák
- Gravitáció (Velocity) – Segít a gravitáció miatti sebesség gyorsításában
- Sebességet ad a pozícióhoz
- Beállítja a bot által vezérelt entitás bemenetét az AI-ügynök szerint
- Renderelés (pozíció, sprite) – Sprite-eket rajzol
- A Player Control (Input Player) segít beállítani a lejátszó által vezérelt entitás bemenetét a vezérlőnek megfelelően.
Összetétel
A kompozíció olyan elem, amelyhez több összetevőt is csatolhat, hogy további megjelenést, viselkedést vagy funkcionalitást adjon hozzá. Az entitás konfigurálásához frissítheti az összetevők értékeit is.
Az ECS előnyei
Íme az ECS programozási használatának előnyei:
- Létrehozhat rövidebb és kevésbé bonyolult kódot.
- Nagyon rugalmas Emergent viselkedés.
- Architektúrát biztosít a 3D és VR fejlesztéshez.
- Engedélyezi a nem technikusok viselkedése alapján történő szkriptelést.
- Segít a monolitikus osztályok felosztásában.
- Könnyű hulladékgyűjtés és összeállítás.
- Egy egyszerű lehetőség az egység tesztelésére és gúnyolására.
- Lehetővé teszi a VR-alkalmazások összetettségét tekintve.
- Cserélje le a komponenseket gúnyolt összetevőkkel futás közben.
- Segít az új funkciók kiterjesztésében.
- Az ECS egy barátságos módszer a párhuzamos feldolgozáshoz és a többszálú feldolgozáshoz,
- Segít elkülöníteni az adatokat a rájuk ható funkcióktól
- Több rugalmasságot biztosít az objektumok meghatározásakor az újrafelhasználható részekkel való keveréssel.
- Letisztult kialakítást kínál a szétválasztási, tokozási, modularizációs és újrafelhasználhatósági módszerek segítségével.
Az ECS használatának hátrányai
Íme néhány hátránya az ECS használatának
- Nincs olyan konkrétan meghatározva, mint más minták, például az MVC.
- Nehéz megfelelően felhordani, könnyen visszaélhető. A jó alkatrészek több tervezést igényelnek
- Az ECS sok olyan kis rendszert igényel, amelyek potenciálisan hatalmas számú entitáson alliterálnak, ami miatt fennáll annak a kockázata, hogy nagyon nem hatékony kódot írnak.
- A legtöbben még csak nem is hallottak erről a mintáról.
Példa az entitáskomponens rendszerre
Nézzünk egy nyuszi példát:
Tekintse meg az alkatrészek körüli szaggatott keretet. Ez a nyuszi entitás – nem más, mint az összetevők tárolója. Az entitásokat az összetevők bármely részhalmazának összesítéseként is meghatározhatja.
A fenti képet láthatja. Ez a nyuszi entitások egyike – nem más, mint az összetevők tárolója. Az entitásokat az összetevők bármely részhalmazának összesítéseként definiálhatja, például a sárgarépa:
Adatáramlás az ECS-ben:
A rendszer viselkedése az ECS modell egyik állapotból a másikba történő változása.
Értsük meg ezt a példát használva:
Viselkedések: "Egy fán ülő nyuszi a gravitáció hatására leesik."
Hogyan valósítsuk meg a fenti viselkedést?
A z értéke 0-nál nagyobb, ami idővel 0-ra csökken.
Viselkedés: „Az élőlények öregszenek.”
Nézzük meg, hogyan valósíthatja meg ezt a viselkedést?
Megteheti, hogy a Living Components korértékkel rendelkezzen, ami idővel növekszik.
Összefoglaló:
- Az Entity-Component-System (ECS) egy építészeti minta.
- Az entitás egy különálló objektum, amely egy szereplőt reprezentál egy szimulált térben.
- A komponens egy entitásnak tulajdonított egyedi viselkedés.
- A rendszer számos komponenst iterál, hogy olyan alacsony szintű funkciókat hajtson végre, mint például a grafika renderelése, a fizikai számítások végrehajtása vagy az útkeresés.
- A kompozíció olyan elem, amelyhez több összetevőt is csatolhat, hogy további megjelenést, viselkedést vagy funkcionalitást adjon hozzá.
- Az ECS minta használatával rövidebb és kevésbé bonyolult kódot hozhat létre.
- Nincs olyan konkrétan meghatározva, mint más minták, például az MVC.
- A rendszer viselkedése az ECS modell egyik állapotból a másikba történő változása.