Entitetskomponentsystem

Vad är Entity-Component-System?

Entity-Component–System (ECS) är ett arkitektoniskt mönster. Detta mönster används ofta i spelapplikationsutveckling. ECS följer kompositionen över arvsprincipen, vilket ger bättre flexibilitet och hjälper dig att identifiera enheter där alla objekt i ett spels scen anses vara en entitet.

ECS-programmering är en metod för att skriva kod som ger hög prestanda som standard.

Detta system består av tre termer.

  1. Entity
  2. Komponent
  3. Systemkrav

Låt oss lära oss detta koncept i detalj:

I denna självstudiekurs för enhetskomponentsystem lär du dig:

Vad är en Entitet?

En entitet är ett distinkt objekt som representerar en aktör i ett simulerat rum. Den har inte faktiska data eller beteende. Denna komponent ger en enhet dess data. Det är vanligtvis en strut eller ordbok.

Till exempel om vi simulerar ett spels universum Minecraft, alla synliga, påtagliga "saker" i speluniversum som räknas i entiteter.

Vad är en komponent?

En komponent är ett singular beteende som tillskrivs en entitet. Namnet på ett element bör helst kommunicera vilket beteende enheten kommer att uppvisa. Komponenten i sig har dock inget beteende. De är återanvändbara moduler som är kopplade till enheter. Komponenten ger utseende, beteende och funktionalitet.

All logik implementeras med hjälp av komponenter som hjälper dig att definiera olika typer av objekt genom att blanda och konfigurera komponenter.

Vad är systemet?

Ett system kommer att iterera många komponenter för att prestera på låg nivå

funktioner som att rendera grafik, utföra fysik

beräkningar eller sökväg. Den erbjuder global räckvidd, hantering och tjänster för klasser av komponenter.

System är dock inte valfria, men vi kan använda dem för att separera logik och data. Det hjälper dig också att hantera de logiska komponenterna, fungera som databehållare.

Exempel

  • Gravity (Velocity) – Det hjälper dig att accelerera hastigheten på grund av gravitationen
  • Det lägger till hastighet till positionen
  • Ställer in en bot-kontrollerad entitets indata enligt en AI-agent
  • Rendera (Position, Sprite) – Ritar sprites
  • Spelarkontroll (Input Player) hjälper dig att ställa in den spelarkontrollerade enhetens ingång enligt en kontroller.

Sammansättning

En komposition är ett element som du kan bifoga fler komponenter för att lägga till ytterligare utseende, beteende eller funktionalitet. Du kan också uppdatera komponentvärdena för att konfigurera entiteten.

Fördel med ECS

Här är fördelarna med att använda ECS i programmering:

  • Du kan skapa kortare och mindre komplicerad kod.
  • Mycket flexibelt Emergent beteende.
  • Det ger en arkitektur för 3D- och VR-utveckling.
  • Möjliggör skript genom beteende av icke-tekniker.
  • Det hjälper dig att dela upp dina monolitiska klasser.
  • Lätt avfall och kompatibilitet.
  • Ett enkelt alternativ för enhetstestning och hån.
  • Det låter dig bygga en VR-applikation när det gäller komplexitet.
  • Ersätt komponenter med hånade komponenter vid körning.
  • Det hjälper dig att utöka nya funktioner.
  • ECS är en vänlig metod för parallellbearbetning och multi-threading,
  • Hjälper dig att separera data från funktioner som verkar på den
  • Ge bättre flexibilitet när du definierar föremål genom att blanda med återanvändbara delar.
  • Den erbjuder en ren design med metoderna för frikoppling, inkapsling, modularisering och återanvändning.

Nackdelar med att använda ECS

Här är några nackdelar med att använda ECS

  • Inte lika konkret definierade som andra mönster som MVC.
  • Svårt att applicera korrekt, lätt att missbruka Bra komponenter kräver mer tänkande kring design
  • ECS kräver skrivning av många små system som allitererar på potentiellt enorma antal enheter, vilket skapar risk för att skriva mycket ineffektiv kod
  • De flesta människor har aldrig ens hört talas om detta mönster.

Exempel på enhetskomponentsystem

Låt oss titta på exemplet på en kanin:

Se den streckade rutan runt dessa komponenter. Det är kanin-entiteten - ingenting än en behållare med komponenter. Du kan också definiera entiteter som en aggregering av valfri delmängd av komponenter.

Du kan se bilden ovan. Det är en av kaninenheterna - inget annat än en behållare med komponenter. Du kan definiera entiteter som en aggregering av valfri delmängd av komponenter, som Morot:

Dataflöde i ECS:

Systembeteende är ECS-modellen förändras från ett tillstånd till ett annat.

Låt oss förstå med det här exemplet:

Beteende: "En kanin som sitter på ett träd faller på grund av gravitationen."

Hur implementerar man ovanstående beteende?

Du kan göra det med z-värdet på mer än 0 som minskar med tiden till 0.

Beteende: "Levande varelser åldras."

Låt se hur du kan implementera detta beteende?

Du kan göra så att Living Components har ett åldersvärde, vilket ökar med tiden.

Sammanfattning:

  • Entity-Component–System (ECS) är ett arkitektoniskt mönster.
  • En entitet är ett distinkt objekt som representerar en aktör i ett simulerat rum.
  • En komponent är ett singular beteende som tillskrivs en entitet.
  • Ett system kommer att iterera många komponenter för att utföra lågnivåfunktioner som att rendera grafik, utföra fysikberäkningar eller sökväg.
  • En komposition är ett element som du kan bifoga fler komponenter för att lägga till ytterligare utseende, beteende eller funktionalitet.
  • Genom att använda ECS-mönster kan du skapa kortare och mindre komplicerad kod.
  • Det är inte lika konkret definierat som andra mönster som MVC.
  • Systembeteende är ECS-modellen förändras från ett tillstånd till ett annat.