Systém entitních komponent

Co je Entity-Component-System?

Entity-Component-System (ECS) je architektonický vzor. Tento vzor je široce používán při vývoji herních aplikací. ECS dodržuje složení přes princip dědičnosti, který nabízí lepší flexibilitu a pomáhá vám identifikovat entity, kde jsou všechny objekty ve scéně hry považovány za entitu.

Programování ECS je metoda psaní kódu, která ve výchozím nastavení poskytuje vysoký výkon.

Tento systém se skládá ze tří termínů.

  1. bytost
  2. Složka
  3. Systém

Pojďme se podrobně naučit tento koncept:

V tomto kurzu Entity-Component System se naučíte:

Co je to entita?

Entita je samostatný objekt představující aktéra v simulovaném prostoru. Nemá skutečná data ani chování. Tato komponenta poskytuje entitě její data. Obvykle je to vzpěra nebo slovník.

Pokud například simulujeme vesmír hry Minecraft, všechny viditelné, hmatatelné 'věci' v herním vesmíru jako jsou počítány do entit.

Co je to komponenta?

Komponenta je jedinečné chování připisované entitě. Název prvku by měl v ideálním případě sdělovat, jaké chování bude entita vykazovat. Komponenta samotná však nemá žádné chování. Jsou to opakovaně použitelné moduly, které jsou připojeny k entitám. Komponenta poskytuje vzhled, chování a funkčnost.

Veškerá logika je implementována pomocí komponent, které vám pomohou definovat různé typy objektů smícháním a konfigurací komponent.

Co je to systém?

Systém bude iterovat mnoho komponent, aby fungoval na nízké úrovni

funkce, jako je vykreslování grafiky, provádění fyziky

výpočty nebo hledání cesty. Nabízí globální rozsah, správu a služby pro třídy komponent.

Systémy však nejsou volitelné, ale můžeme je použít k oddělení logiky a dat. Pomáhá vám také manipulovat s logickými komponentami, fungovat jako datové kontejnery.

Příklady

  • Gravitace (Velocity) – Pomáhá vám zrychlit rychlost v důsledku gravitace
  • Přidává rychlost k poloze
  • Nastaví vstup entity ovládané robotem podle agenta AI
  • Render (Pozice, Sprite) – Kreslí sprity
  • Player Control (Input Player) vám pomůže nastavit vstup entity ovládané hráčem podle ovladače.

Složení

Kompozice je prvek, ke kterému můžete připojit více komponent a přidat tak další vzhled, chování nebo funkčnost. Pro konfiguraci entity můžete také aktualizovat hodnoty komponent.

Výhoda ECS

Zde jsou výhody použití ECS v programování:

  • Můžete vytvořit kratší a méně komplikovaný kód.
  • Velmi flexibilní Emergentní chování.
  • Poskytuje architekturu pro vývoj 3D a VR.
  • Umožňuje skriptování podle chování netechnických pracovníků.
  • Pomůže vám rozdělit vaše monolitické třídy.
  • Snadné odmítnutí a slučitelnost.
  • Snadná volba pro testování jednotek a zesměšňování.
  • Umožňuje vám sestavit VR aplikaci z hlediska složitosti.
  • Nahraďte komponenty simulovanými komponentami za běhu.
  • Pomůže vám rozšířit nové funkce.
  • ECS je přátelská metoda pro paralelní zpracování a vícevláknové zpracování,
  • Pomáhá oddělit data od funkcí, které na ně působí
  • Poskytněte lepší flexibilitu při definování objektů smícháním s opakovaně použitelnými částmi.
  • Nabízí čistý design pomocí metod oddělení, zapouzdření, modularizace a opětovného použití.

Nevýhody použití ECS

Zde jsou některé nevýhody použití ECS

  • Ne tak konkrétně definované jako jiné vzory, jako je MVC.
  • Obtížná správná aplikace, snadné nesprávné použití Dobré komponenty vyžadují více přemýšlení o designu
  • ECS vyžaduje psaní mnoha malých systémů, které aliterují na potenciálně velkém počtu entit, u kterých vzniká riziko psaní velmi neefektivního kódu.
  • Většina lidí o tomto vzoru nikdy neslyšela.

Příklad systému komponent entity

Podívejme se na příklad zajíčka:

Podívejte se na přerušovaný rámeček kolem těchto součástí. To je entita zajíčka – nic než kontejner komponent. Entity můžete také definovat jako agregaci libovolné podmnožiny komponent.

Můžete vidět výše uvedený obrázek. Je to jedna ze zajíčkových entit – nic víc než kontejner komponent. Entity můžete definovat jako agregaci jakékoli podmnožiny komponent, jako je Mrkev:

Datový tok v ECS:

Chování systému je model ECS, který se mění z jednoho stavu do druhého.

Pojďme to pochopit pomocí tohoto příkladu:

Chování: "Zajíček sedící na stromě padá vlivem gravitace."

Jak implementovat výše uvedené chování?

Můžete to udělat pomocí hodnoty z vyšší než 0, která se časem sníží na 0.

Chování: "Živé bytosti stárnou."

Podívejte se, jak můžete toto chování implementovat?

Můžete to udělat tak, aby Living Components měly věkovou hodnotu, která se časem zvyšuje.

Shrnutí:

  • Entity-Component-System (ECS) je architektonický vzor.
  • Entita je samostatný objekt představující aktéra v simulovaném prostoru.
  • Komponenta je jedinečné chování připisované entitě.
  • Systém bude iterovat mnoho komponent, aby prováděl nízkoúrovňové funkce, jako je vykreslování grafiky, provádění fyzikálních výpočtů nebo hledání cest.
  • Kompozice je prvek, ke kterému můžete připojit více komponent a přidat tak další vzhled, chování nebo funkčnost.
  • Pomocí vzoru ECS můžete vytvořit kratší a méně komplikovaný kód.
  • Není tak konkrétně definován jako jiné vzory, jako je MVC.
  • Chování systému je model ECS, který se mění z jednoho stavu do druhého.