Project Stick beat 'em up (Entity-Component-System)

Stick beat 'em up (Entity-Component-System)

MultiMediaTechnology, 2015

Definition: ECS = Entity-Component-System

Vorwort: In meinem Projekt verwende ich eine von mir modifizierte Form des Entity-Component-System (weiters ECS genannt) um das Spiel "Stick beat 'em up" umzusetzen. Der Fokus meines Projekts liegt auf der Entwicklung und Verwendung des ECS.

Was ist das Entity-Component-System: Das ECS ist ein Softwarearchitektur Pattern, welches in der Spieleentwicklung eingesetzt wird. Aber auch in der Entwicklung von Businesssoftware werden ECS ähnliche Architekturen verwendet (z.B. Microsoft Dynamics CRM). Es folgt dem Prinzip der "Composition over inheritance" was den Code flexibler und wiederverwendbarer macht.

Funktionsweise: Im Zentrum des ECS stehen die Entitäten. Das sind in meinem Projekt zum Beispiel der Spieler selbst oder auch die Gegner. Diese Entitäten bestehen aus einer eindeutigen Id, einem (Entitäts-)Typen und (Core-)Components. Die (Core-)Components selbst enthalten nur Daten. Hier sollte keine Logik zu finden sein. Die Systems des ECS verarbeiten nun die Daten. Ein System in meinem Projekt ist das AnimationSystem, welches das CoreComponent Animation aller animierbaren Entitäten verarbeitet. Im klassischen ECS müssen die Systems auf eine einzige, globale Liste zugreifen die alle Entitäten enthält (Performance!).

Besonderheiten meines Entity-Component-Systems: Wie im Diagramm im Anhang ersichtlich, verwende ich CoreComponents um Entitäten mit neuen Eigenschaften auszustatten. Diese CoreComponents sind ein wiederverwendbarer Teil des ECS. Des Weiteren besitzen Entitäten noch "normale" Components. Diese statten eine bestimmte Entität mit teils Entitäts-spezifischen Eigenschaften aus. Damit wird die Wiederverwendbarkeit der CoreComponents sichergestellt. Mein ECS verwendet in diesem Projekt zusätzlich noch Managers. Diese verwende ich um die Daten meines Spiels zu verwalten. Ich setzte zum Beispiel den EntityManager ein um auf verschiedene Arten von Entitäten relativ sparsam zugreifen zu können. Dazu verwende ich eigene Listen um beispielsweise auf alle Entitäten mit Collision CoreComponents zuzugreifen.

Das Spiel: "Stick beat 'em up" ist ein 2D beat 'em up Spiel. Das Ziel des Spiels ist es, in einem vorgegebenen Zeitraum so viele Gegner wie möglich auszuschalten. Der Charakter kann einen Angriff ausführen um Gegner zu verletzten und Springen um feindlichen Attacken auszuweichen. Das Spielfeld ist begrenzt, was Druck auf den Spieler auslöst wenn die Gegner auf ihn zulaufen.

Appendices

Creators

Alessandro Raphaele Morio

Grafik und Animation

Idee

Programmierung