Computergrafik

Entity Component Systems (ECS)

Szenengraph Software | | Beleuchtung

Entity Component Systems bieten einen Gegenentwurf zum klassischen Szenengraphansatz, für den Fall, dass keine komplizierten hierarchischen Objekte modelliert werden müssen, sondern eine signifikante Anzahl von gleichartigen Objekten dargestellt werden soll, die sich im Wesentlichen nur in der Ausprägung gewisser unterschiedlicher Komponenten unterscheiden.

Typischer Einsatzbereich sind Computerspiele, bei denen sich eine Fülle von Objekten in der Szene bewegen und die sich zwar in ihren logischen und graphischen Komponenten unterscheiden können, die aber alle im Prinzip demselben physikalischen Bewegungs- und Kollisionsmuster folgen.

ECS Vorteile:

  • Objekte mit identischem Komponenten-Mix können sehr effizient abgearbeitet werden (Batching)
  • Die Abarbeitung dieser Kompenten erfolgt cache-cohärent, was zu einer Geschwindigkeitssteigerung bis zu einem Faktor von 2–5 führen kann. Das ist bei Computer-Games ein signifikanter Faktor.
  • Objekte können sämtliche Kombinationen alle Komponenten besitzen (durch Aggregation derselben), was mit klassischer Vererbung (Vererbung und Spezialisierung) schwer zu erreichen ist (Multiple Inheritance ↔ Diamant-Problem).

ECS Nachteile:

  • Die Darstellung von Objekten, welche sich kaum Komponenten mit anderen Objekten teilen, wird entsprechend nicht unbedingt beschleunigt.
  • Das Komponenten-System erlaubt keine besonders fein-granulare Abbildung von Objekteigenschaften.

Beispiele von Game-Engines, bei denen ECS eingesetzt werden:

  • Phaser (2D)
  • Unity
  • Unreal (seit 2022)


Szenengraph Software | | Beleuchtung

Options: