Experimentelle und Arbeit in der Progress C ++ 14 Multithread-Kompilierzeit-Entitätskomponenten-System-Header-nur-Bibliothek.
Eine erfolgreiche Entwicklung komplexer Echtzeitanwendungen und Spiele erfordert ein flexibles und effizientes Unternehmensmanagementsystem. Wenn ein Projekt komplizierter wird, ist es wichtig, eine elegante Möglichkeit zu finden, Objekte zu komponieren, um die Wiederholung der Code zu verhindern, die Modularität zu verbessern und leistungsstarke Optimierungsmöglichkeiten zu öffnen.
Das Architekturmuster des Entitätskomponenten-Systems wurde entwickelt, um die oben genannten Vorteile zu erzielen, indem Daten von der Logik getrennt wurden.
Entitäten können aus kleinen, wiederverwendbaren und generischen Komponenten bestehen.
Komponenten können in zusammenhängenden Speicherbereichen gespeichert werden, wodurch die Datenlokalität und Cache-Freundlichkeit verbessert werden.
Die Anwendungslogik kann leicht parallelisiert und abstrahiert werden von den Objekten selbst und ihrer Speicherrichtlinien.
Der Zustand der Anwendung kann mit weniger Aufwand serialisiert und über das Netzwerk geteilt werden.
Eine modularere, generische und leicht testbare Codebasis.
"Ecst" wurde als mein BCS -Abschlussprojekt entwickelt.
Anweisungen erstellen
Code Beispiel
Lizenz
Begleitende These
Folien
Entitäten: definiert von Adam Martin (siehe These) als „grundlegende konzeptionelle Bausteine“ eines Systems, das konkrete Anwendungs-Objekte darstellt. Sie haben keine anwendungsspezifischen Daten oder Logik.
Komponenten: Kleine, wiederverwendbare Typen, die Entitäten bestehen. Noch einmal unter Berufung auf Adam Martin in (siehe These) , bezeichnet ein Komponententyp „eine Entität als Besitz eines bestimmten Aspekts“. Komponenten speichern Daten, enthalten jedoch keine Logik.
Systeme: Anbieter der Implementierungslogik für Entitäten, die einen bestimmten Satz von Komponententypen besitzen.
Äußere Parallelität: Begriff in ECST verwendet, das das Konzept des Ausführens mehrerer Systeme definiert, die parallel nicht voneinander abhängen. Die Implementierungsdetails werden in Kapitel 10 analysiert (siehe These) . Konzeptionell wird ein implizit gerichtetes acyclisches Diagramm dank der Kenntnis der Systemabhängigkeiten zur Kompilierungszeit erstellt. Die Ausführung der impliziten DAG wird von einem Systemplaner -Typ behandelt, der während der Definition der Einstellungen angegeben ist.
Innere Parallelität: Andere, die parallel separate Systeme ausführen, unterstützt die Aufteilung eines einzelnen Systems in mehrere Unteraufgaben, die auf separaten Threads ausgeführt werden können. Viele Systeme, wie diejenigen, die funktional reine Kompetenzen darstellen, enthalten keine Nebenwirkungen, die ihren eigenen Zustand ändern oder Wechselwirkungen zwischen den abonnierten Entitäten definieren: Dies sind Hauptbeispiele für „peinlich parallele“ Berechnungen.
"Wo finde ich Dokumentation für die API?"
"Können wir Komponenten haben, die nicht standardmäßig konstruktiv sind?"
"Ich versuche zu/schreiben zu/von meiner Komponente, aber ich erhalte einen Kompilierungsfehler. Was passiert? "
"Ist es möglich, über die an Entitäten verbundenen Komponenten zu iterieren, ohne sich in der Prozessfunktion eines Systems zu befinden?"
"Wie steuern Sie, ob mein System parallel oder als einzelner Thread ausgeführt wird? "
"Was ist der Unterschied zwischen einem einzel-betrügerischen System und dem Deaktivieren des inneren Paralellismus?"