OOP vs. Data-Oriented Design: Daten, die zusammenarbeiten
Die Idee: OOP bündelt Daten und Verhalten in Objekten. DOD gruppiert dagegen Daten, die gemeinsam verarbeitet werden.
Auf alten Magnetfestplatten wurden Dateien beim Defragmentieren zusammenhängend angeordnet. Der Schreib-/Lesekopf musste dadurch weniger springen. DOD nutzt ein ähnliches Prinzip im Arbeitsspeicher: Zusammengehörige Werte liegen kompakt beieinander und landen so besser im CPU-Cache.
// OOP: neue Klasse oder Sonderlogik nötig
class FlyingPlayer extends Player {
fly() { this.position.y += this.speed; }
}
// ECS: Komponente hinzufügen – fertig
addComponent(world, eid, Flying);
Ein ECS trennt Daten und Logik: Systeme verarbeiten alle Entities mit passenden Komponenten. Ein Baum kann einfach Position und Velocity bekommen, ohne neue Klasse.
Vorteil: DOD/ECS vermeidet unnötige Speicher-Sprünge und bleibt durch Komponenten flexibel. OOP ist dafür oft angenehmer, wenn einzelne Objekte komplexes, eigenes Verhalten besitzen.