Entitätskomponentensystem
Was ist ein Entity-Component-System?
Entity-Component–System (ECS) ist ein Architekturmuster. Dieses Muster wird häufig bei der Entwicklung von Spieleanwendungen verwendet. ECS folgt dem Prinzip der Komposition statt der Vererbung, was eine bessere Flexibilität bietet und Ihnen hilft, Entitäten zu identifizieren, wobei alle Objekte in einer Spielszene als Entität betrachtet werden.
ECS-Programmierung ist eine Methode zum Schreiben von Code, die standardmäßig eine hohe Leistung bietet.
Dieses System besteht aus drei Begriffen.
- Wesen
- Komponente
- System
Lassen Sie uns dieses Konzept im Detail lernen:
In diesem Tutorial zum Entity-Component-System erfahren Sie:
- Was ist ein Entity-Component-System?
- Was ist eine Entität?
- Was ist eine Komponente?
- Was ist das System?
- Zusammensetzung
- Vorteil von ECS
- Nachteile der Verwendung von ECS
- Beispiel für ein Entitätskomponentensystem
- Datenfluss im ECS:
Was ist eine Entität?
Eine Entität ist ein eindeutiges Objekt, das einen Akteur in einem simulierten Raum darstellt. Es gibt keine tatsächlichen Daten oder Verhaltensweisen. Diese Komponente gibt einer Entität ihre Daten. Typischerweise handelt es sich dabei um Struts oder Dictionarys.
Zum Beispiel, wenn wir das Universum eines Spiels simulieren MinecraftAlle sichtbaren, greifbaren „Dinge“ im Spieluniversum werden in Entitäten gezählt.
Was ist eine Komponente?
Eine Komponente ist ein einzelnes Verhalten, das einer Entität zugeschrieben wird. Der Name eines Elements sollte idealerweise kommunizieren, welches Verhalten die Entität zeigen wird. Die Komponente selbst weist jedoch kein Verhalten auf. Es handelt sich um wiederverwendbare Module, die an Entitäten angehängt werden. Die Komponente stellt Aussehen, Verhalten und Funktionalität bereit.
Die gesamte Logik wird mithilfe von Komponenten implementiert, was Ihnen hilft, verschiedene Objekttypen durch Mischen und Konfigurieren von Komponenten zu definieren.
Was ist das System?
Ein System iteriert viele Komponenten, um eine Leistung auf niedriger Ebene zu erzielen
Funktionen wie das Rendern von Grafiken und das Durchführen von Physik
Berechnungen oder Wegfindung. Es bietet globalen Umfang, Management und Dienste für Komponentenklassen.
Allerdings sind Systeme nicht optional, sondern wir können sie nutzen, um Logik und Daten zu trennen. Es hilft Ihnen auch bei der Handhabung der logischen Komponenten, die als Datencontainer fungieren.
Beispiele
- Schwerkraft (Geschwindigkeit) – Sie hilft Ihnen, die Geschwindigkeit aufgrund der Schwerkraft zu beschleunigen
- Es erhöht die Geschwindigkeit der Position
- Legt die Eingabe einer Bot-gesteuerten Entität entsprechend einem KI-Agenten fest
- Rendern (Position, Sprite) – Zeichnet Sprites
- Mit der Spielersteuerung (Eingabespieler) können Sie die Eingabe der vom Spieler gesteuerten Entität entsprechend einem Controller festlegen.
Zusammensetzung
Eine Komposition ist ein Element, dem Sie weitere Komponenten hinzufügen können, um zusätzliches Aussehen, Verhalten oder Funktionalität hinzuzufügen. Sie können auch die Komponentenwerte aktualisieren, um die Entität zu konfigurieren.
Vorteil von ECS
Hier sind die Vorteile der Verwendung von ECS in der Programmierung:
- Sie können kürzeren und weniger komplizierten Code erstellen.
- Sehr flexibles Emergent-Verhalten.
- Es bietet eine Architektur für 3D- und VR-Entwicklung.
- Ermöglicht die Skripterstellung nach Verhalten von Nicht-Technikern.
- Es hilft Ihnen, Ihre monolithischen Klassen zu unterteilen.
- Einfache Entsorgung und Kompatibilität.
- Eine einfache Option zum Testen und Verspotten von Einheiten.
- Es ermöglicht Ihnen, eine VR-Anwendung hinsichtlich der Komplexität zu erstellen.
- Ersetzen Sie Komponenten zur Laufzeit durch simulierte Komponenten.
- Es hilft Ihnen, neue Funktionen zu erweitern.
- ECS ist eine benutzerfreundliche Methode für Parallelverarbeitung und Multithreading.
- Hilft Ihnen, Daten von Funktionen zu trennen, die darauf reagieren
- Bieten Sie eine größere Flexibilität bei der Definition von Objekten durch die Kombination mit wiederverwendbaren Teilen.
- Es bietet ein klares Design unter Verwendung der Entkopplungs-, Kapselungs-, Modularisierungs- und Wiederverwendbarkeitsmethoden.
Nachteile der Verwendung von ECS
Hier sind einige Nachteile der Verwendung von ECS
- Nicht so konkret definiert wie andere Muster wie MVC.
- Es ist schwierig, sie richtig anzuwenden, aber leicht zu missbrauchen. Gute Komponenten erfordern mehr Überlegungen zum Design
- ECS erfordert das Schreiben vieler kleiner Systeme, die möglicherweise eine riesige Anzahl von Entitäten alliterieren, wodurch das Risiko entsteht, sehr ineffizienten Code zu schreiben.
- Die meisten Menschen haben noch nie von diesem Muster gehört.
Beispiel für ein Entitätskomponentensystem
Schauen wir uns das Beispiel eines Hasen an:
Sehen Sie sich den gestrichelten Kasten um diese Komponenten an. Das ist die Bunny-Entität – nichts weiter als ein Container von Komponenten. Sie können Entitäten auch als Aggregation einer beliebigen Teilmenge von Komponenten definieren.
Sie können das oben angegebene Bild sehen. Es ist eines der Hasen-Entitäten – nichts weiter als ein Behälter mit Komponenten. Sie können Entitäten als Aggregation einer beliebigen Teilmenge von Komponenten definieren, wie zum Beispiel Carrot:
Datenfluss im ECS:
Das Systemverhalten ist ein ECS-Modell, bei dem es sich um einen Wechsel von einem Zustand in einen anderen handelt.
Lassen Sie uns anhand dieses Beispiels verstehen:
Verhalten: „Ein Hase, der auf einem Baum sitzt, fällt aufgrund der Schwerkraft.“
Wie implementiert man das obige Verhalten?
Sie können dies durch einen Z-Wert von mehr als 0 erreichen, der mit der Zeit auf 0 abnimmt.
Verhalten: „Lebewesen altern.“
Mal sehen, wie Sie dieses Verhalten umsetzen können?
Sie können dafür sorgen, dass lebende Komponenten einen Alterswert haben, der mit der Zeit zunimmt.
Zusammenfassung:
- Entity-Component-System (ECS) ist ein Architekturmuster.
- Eine Entität ist ein eindeutiges Objekt, das einen Akteur in einem simulierten Raum darstellt.
- Eine Komponente ist ein einzelnes Verhalten, das einer Entität zugeschrieben wird.
- Ein System iteriert viele Komponenten, um Funktionen auf niedriger Ebene auszuführen, z. B. das Rendern von Grafiken, das Durchführen physikalischer Berechnungen oder die Pfadfindung.
- Eine Komposition ist ein Element, dem Sie weitere Komponenten hinzufügen können, um zusätzliches Aussehen, Verhalten oder Funktionalität hinzuzufügen.
- Durch die Verwendung des ECS-Musters können Sie kürzeren und weniger komplizierten Code erstellen.
- Es ist nicht so konkret definiert wie andere Muster wie MVC.
- Das Systemverhalten ist ein ECS-Modell, bei dem es sich um einen Wechsel von einem Zustand in einen anderen handelt.