Entiteitscomponentsysteem
Wat is entiteit-component-systeem?
Entity-Component–System (ECS) is een architectonisch patroon. Dit patroon wordt veel gebruikt in de ontwikkeling van gametoepassingen. ECS volgt de compositie over het overervingsprincipe, wat meer flexibiliteit biedt en u helpt entiteiten te identificeren waarbij alle objecten in de scène van een game als entiteit worden beschouwd.
ECS-programmering is een methode voor het schrijven van code die standaard hoge prestaties levert.
Dit systeem bestaat uit drie termen.
- Geheel
- Bestanddeel
- Systeem
Laten we dit concept in detail leren:
In deze Enty-Component System-tutorial leert u:
- Wat is entiteit-component-systeem?
- Wat is een entiteit?
- Wat is een onderdeel?
- Wat is het systeem?
- Samenstelling:
- Voordeel van ECS
- Nadelen van het gebruik van ECS
- Entiteitscomponent Systeemvoorbeeld
- Gegevensstroom in ECS:
Wat is een entiteit?
Een entiteit is een afzonderlijk object dat een actor in een gesimuleerde ruimte vertegenwoordigt. Het heeft geen feitelijke gegevens of gedrag. Deze component geeft een entiteit zijn gegevens. Het is meestal een stijl of woordenboek.
Als we bijvoorbeeld het universum van een game simuleren Minecraftworden alle zichtbare, tastbare 'dingen' in het speluniversum geteld in entiteiten.
Wat is een onderdeel?
Een component is een enkelvoudig gedrag dat aan een entiteit wordt toegeschreven. De naam van een element zou idealiter moeten communiceren welk gedrag de entiteit zal vertonen. De component zelf vertoont echter geen gedrag. Het zijn herbruikbare modules die aan entiteiten worden gekoppeld. De component biedt uiterlijk, gedrag en functionaliteit.
Alle logica wordt geïmplementeerd met behulp van componenten die u helpen verschillende soorten objecten te definiëren door componenten te combineren en te configureren.
Wat is het systeem?
Een systeem zal veel componenten herhalen om op laag niveau te presteren
functies zoals het weergeven van afbeeldingen en het uitvoeren van natuurkunde
berekeningen of padvinden. Het biedt een mondiale reikwijdte, beheer en diensten voor klassen van componenten.
Systemen zijn echter niet optioneel, maar we kunnen ze gebruiken om logica en gegevens te scheiden. Het helpt u ook bij het omgaan met de logische componenten en fungeert als datacontainers.
Voorbeelden
- Zwaartekracht (snelheid) – Het helpt je om de snelheid te versnellen als gevolg van de zwaartekracht
- Het voegt snelheid toe aan de positie
- Stelt de invoer van een botgestuurde entiteit in op basis van een AI-agent
- Render (Positie, Sprite) – Tekent sprites
- Spelerbediening (Invoerspeler) helpt u de invoer van de door de speler bestuurde entiteit in te stellen op basis van een controller.
Samenstelling:
Een compositie is een element waaraan u meer componenten kunt koppelen om extra uiterlijk, gedrag of functionaliteit toe te voegen. U kunt ook de componentwaarden bijwerken om de entiteit te configureren.
Voordeel van ECS
Hier zijn de voordelen van het gebruik van ECS bij het programmeren:
- U kunt kortere en minder ingewikkelde code maken.
- Zeer flexibel Opkomend gedrag.
- Het biedt een architectuur voor 3D- en VR-ontwikkeling.
- Maakt scripting mogelijk op basis van gedrag door niet-techneuten.
- Het helpt je om je monolithische klassen te verdelen.
- Gemakkelijk weigeren en mogelijkheid.
- Een gemakkelijke optie voor het testen en bespotten van eenheden.
- Hiermee kunt u een VR-applicatie bouwen qua complexiteit.
- Vervang componenten tijdens runtime door nagebootste componenten.
- Het helpt u nieuwe functies uit te breiden.
- ECS is een gebruiksvriendelijke methode voor parallelle verwerking en multi-threading,
- Helpt u gegevens te scheiden van functies die erop inwerken
- Zorg voor meer flexibiliteit bij het definiëren van objecten door deze te combineren met herbruikbare onderdelen.
- Het biedt een strak ontwerp met behulp van ontkoppelings-, inkapselings-, modularisatie- en herbruikbaarheidsmethoden.
Nadelen van het gebruik van ECS
Hier volgen enkele nadelen van het gebruik van ECS
- Niet zo concreet gedefinieerd als andere patronen zoals MVC.
- Moeilijk correct toe te passen, gemakkelijk te misbruiken Goede componenten vereisen meer nadenken over het ontwerp
- ECS vereist het schrijven van veel kleine systemen die allitereren op potentieel enorme aantallen entiteiten, wat het risico met zich meebrengt om zeer inefficiënte code te schrijven
- De meeste mensen hebben nog nooit van dit patroon gehoord.
Entiteitscomponent Systeemvoorbeeld
Laten we eens kijken naar het voorbeeld van een konijn:
Zie het stippellijntje rond deze componenten. Dat is de bunny entity – niets meer dan een container van componenten. U kunt entities ook definiëren als een aggregatie van een subset van componenten.
U kunt de hierboven gegeven afbeelding zien. Het is een van de konijnenentiteiten – niets meer dan een container met componenten. U kunt entiteiten definiëren als een aggregatie van een willekeurige subset van componenten, zoals Wortel:
Gegevensstroom in ECS:
Systeemgedrag is volgens het ECS-model de verandering van de ene toestand naar de andere.
Laten we het begrijpen met behulp van dit voorbeeld:
Gedrag: “Een konijn dat in een boom zit, valt door de zwaartekracht.”
Hoe implementeer je het bovenstaande gedrag?
Je kunt er een z-waarde van groter dan 0 van maken, die in de loop van de tijd afneemt tot 0.
Gedrag: “Levende wezens worden ouder.”
Laten we eens kijken hoe je dit gedrag kunt implementeren?
Je kunt ervoor zorgen dat Wooncomponenten een ouderdomswaarde hebben, die in de loop van de tijd toeneemt.
Overzicht:
- Entity-Component–System (ECS) is een architectuurpatroon.
- Een entiteit is een afzonderlijk object dat een actor in een gesimuleerde ruimte vertegenwoordigt.
- Een component is een enkelvoudig gedrag dat aan een entiteit wordt toegeschreven.
- Een systeem zal veel componenten herhalen om functies op laag niveau uit te voeren, zoals het renderen van afbeeldingen, het uitvoeren van natuurkundige berekeningen of het zoeken naar paden.
- Een compositie is een element waaraan u meer componenten kunt koppelen om extra uiterlijk, gedrag of functionaliteit toe te voegen.
- Door het ECS-patroon te gebruiken, kunt u kortere en minder gecompliceerde code maken.
- Het is niet zo concreet gedefinieerd als andere patronen zoals MVC.
- Systeemgedrag is volgens het ECS-model de verandering van de ene toestand naar de andere.