Sistema di componenti di entità
Cos'è il sistema entità-componente?
Entity-Component–System (ECS) è un pattern architettonico. Questo pattern è ampiamente utilizzato nello sviluppo di applicazioni di gioco. ECS segue il principio di composizione sull'ereditarietà, che offre una migliore flessibilità e ti aiuta a identificare entità in cui tutti gli oggetti nella scena di un gioco sono considerati un'entità.
La programmazione ECS è un metodo di scrittura del codice che fornisce prestazioni elevate per impostazione predefinita.
Questo sistema è composto da tre termini.
- Entità
- Componente
- Sistema
Impariamo questo concetto nel dettaglio:
In questo tutorial sul sistema entità-componente imparerai:
- Cos'è il sistema entità-componente?
- Cos'è un'entità?
- Che cos'è un componente?
- Cos'è il sistema?
- Composizione
- Vantaggio dell'ECS
- Svantaggi dell'utilizzo di ECS
- Esempio di sistema di componenti di entità
- Flusso di dati in ECS:
Cos'è un'entità?
Un'entità è un oggetto distinto che rappresenta un attore in uno spazio simulato. Non contiene dati o comportamenti reali. Questo componente fornisce a un'entità i suoi dati. Tipicamente è un puntone o un dizionario.
Ad esempio, se stiamo simulando l'universo di un gioco Minecraft, tutte le "cose" visibili e tangibili nell'universo del gioco vengono conteggiate in entità.
Che cos'è un componente?
Un componente è un comportamento singolare attribuito a un'entità. Il nome di un elemento dovrebbe idealmente comunicare quale comportamento mostrerà l'entità. Tuttavia, il componente stesso non ha alcun comportamento. Sono moduli riutilizzabili collegati alle entità. Il componente fornisce aspetto, comportamento e funzionalità.
Tutta la logica è implementata utilizzando componenti che ti aiutano a definire diversi tipi di oggetti mescolando e configurando i componenti.
Cos'è il sistema?
Un sistema ripeterà molti componenti per eseguire operazioni di basso livello
funzioni come il rendering della grafica, l'esecuzione della fisica
calcoli o ricerca di percorsi. Offre ambito globale, gestione e servizi per classi di componenti.
Tuttavia, i sistemi non sono opzionali, ma possiamo usarli per separare logica e dati. Ti aiuta anche a gestire i componenti logici e ad agire come contenitori di dati.
Esempi
- Gravità (Velocità) – Ti aiuta ad accelerare la velocità a causa della gravità
- Aggiunge velocità alla posizione
- Imposta l'input di un'entità controllata dal bot in base a un agente AI
- Render (Posizione, Sprite) – Disegna gli sprite
- Il controllo del giocatore (Input Player) ti aiuta a impostare l'input dell'entità controllata dal giocatore in base a un controller.
Composizione
Una composizione è un elemento a cui è possibile allegare più componenti per aggiungere ulteriore aspetto, comportamento o funzionalità. Puoi anche aggiornare i valori del componente per configurare l'entità.
Vantaggio dell'ECS
Ecco i vantaggi dell'utilizzo di ECS nella programmazione:
- Puoi creare codice più breve e meno complicato.
- Comportamento emergente molto flessibile.
- Fornisce un'architettura per lo sviluppo 3D e VR.
- Abilita lo scripting in base al comportamento dei non tecnici.
- Ti aiuta a dividere le tue classi monolitiche.
- Rifiuto facile e compossibilità.
- Un'opzione semplice per test unitari e derisioni.
- Permette di realizzare un'applicazione VR in termini di complessità.
- Sostituisci i componenti con componenti derisi in fase di esecuzione.
- Ti aiuta ad estendere nuove funzionalità.
- ECS è un metodo amichevole per l'elaborazione parallela e il multi-threading,
- Ti aiuta a separare i dati dalle funzioni che agiscono su di essi
- Fornire una migliore flessibilità durante la definizione degli oggetti combinandoli con parti riutilizzabili.
- Offre un design pulito utilizzando metodi di disaccoppiamento, incapsulamento, modularizzazione e riutilizzabilità.
Svantaggi dell'utilizzo di ECS
Ecco alcuni svantaggi dell'utilizzo di ECS
- Non così concretamente definito come altri modelli come MVC.
- Difficile da applicare correttamente, facile da usare in modo improprio. I buoni componenti richiedono una maggiore attenzione al design
- ECS richiede la scrittura di molti piccoli sistemi che allitterano su un numero potenzialmente enorme di entità, il che sviluppa il rischio di scrivere codice molto inefficiente
- La maggior parte delle persone non ha mai nemmeno sentito parlare di questo modello.
Esempio di sistema di componenti di entità
Consideriamo l'esempio di un coniglio:
Osservate la casella tratteggiata attorno a questi componenti. Questa è l'entità bunny, niente più che un contenitore di componenti. Potete anche definire le entità come un'aggregazione di qualsiasi sottoinsieme di componenti.
Puoi vedere l'immagine sopra indicata. È una delle entità coniglietto, niente più che un contenitore di componenti. Puoi definire le entità come aggregazione di qualsiasi sottoinsieme di componenti, come Carrot:
Flusso di dati in ECS:
Il comportamento dei sistemi secondo il modello ECS è il cambiamento da uno stato all'altro.
Cerchiamo di capire usando questo esempio:
Comportamenti: “Un coniglio seduto su un albero cade a causa della gravità”.
Come implementare il comportamento di cui sopra?
Puoi farlo con un valore z superiore a 0 che diminuisce nel tempo fino a 0.
Comportamento: “Gli esseri viventi invecchiano”.
Vediamo come puoi implementare questo comportamento?
Puoi fare in modo che i Componenti viventi abbiano un valore di età, che aumenta nel tempo.
Sommario:
- Entity-Component–System (ECS) è un modello architettonico.
- Un'entità è un oggetto distinto che rappresenta un attore in uno spazio simulato.
- Un componente è un comportamento singolare attribuito a un'entità.
- Un sistema itererà molti componenti per eseguire funzioni di basso livello come il rendering della grafica, l'esecuzione di calcoli fisici o l'individuazione del percorso.
- Una composizione è un elemento a cui è possibile allegare più componenti per aggiungere ulteriore aspetto, comportamento o funzionalità.
- Utilizzando il pattern ECS puoi creare codice più breve e meno complicato.
- Non è definito concretamente come altri modelli come MVC.
- Il comportamento dei sistemi secondo il modello ECS è il cambiamento da uno stato all'altro.