Open cagix opened 3 months ago
Die Frage finde ich gut.
Darüber liegt für mich aber noch die Frage, wofür ist das Dungeon Framework noch gedacht? Ursprünglich wollten wir damit Java UND OOP vertiefen. Das spricht für mehr OOP und weniger Funktional. Mittlerweile ist der Fokuspunkt aber verschoben, oder?
Die Frage finde ich gut.
Darüber liegt für mich aber noch die Frage, wofür ist das Dungeon Framework noch gedacht? Ursprünglich wollten wir damit Java UND OOP vertiefen. Das spricht für mehr OOP und weniger Funktional. Mittlerweile ist der Fokuspunkt aber verschoben, oder?
@AMatutat Fokus verschoben weiss ich nicht. Es geht immer noch um eine Programmierausbildung auf einem fortgeschrittenen Level mit/in einer OO-Programmiersprache und um diverse Programmiermethoden (oder DevOps, wenn Du das so nennen wolltest).
Es ist halt nur so, dass nach der "langen Dürre der OO-Zeit" sich nun endlich "Regen am Horizont" abzeichnet und die Welt wieder vernünftiger wird und funktionale Konzepte (wieder) als sinnvoll erkennt, und das natürlich auch in Sprachen wie Java reinsickert.
Im Grunde mache ich immer noch objektorientierte Programmierung, aber mit funktionalem Touch (wo es sinnvoll ist - verbesserte Abstraktion, Lesbarkeit, Wartbarkeit, ...). So richtig viel geht da in Java ja sowieso nicht wirklich, und ziemlich viele Dinge sind extrem ... hässlich umgesetzt. Aber die Denkmuster ändern sich an einigen Stellen doch deutlich :)
Insofern würde ich nicht den Weg zurück zum ersten Dungeon gehen wollen (rein OO). Wir haben eine Mischform (Objektorientierte Programmierung, Funktionale Programmierung, Daten-orientierte Programmierung), und das ist auch gut so. Mein Ziel ist nur, den Zuschnitt weiter zu schärfen und die Modellierung sowie die Nutzbarkeit zu verbessern, also beispielsweise nicht unbedingt notwendigen mentalen Ballast über Bord zu werfen oder bestimmte Konzepte nochmal im Rückspiegel zu betrachten und ggf. zu korrigieren.
aus https://github.com/Dungeon-CampusMinden/Dungeon/issues/1587#issuecomment-2243275715:
Jedes System hat aktuell eine eigene Klasse. Durch die Vielzahl der Systeme hat man eine entsprechende Vielzahl an Einträgen im Package-Tree. Muss das wirklich so? Würde es nicht reichen, beispielsweise in
System
pro System eine Art "Factory"-Methode zu haben, die die jeweilige System-Funktion (aktuell alsexecute
-Methode implementiert) alsFunction<Void,Void>
zurückliefert?Das Pausieren der Systeme müsste außerhalb der Systeme passieren. Das ist an sich ja auch keine Eigenschaft der Systeme, sondern des Game. Systeme selbst sind rein passive Funktionen (aktuell Funktionsobjekte) und werden von Game aufgerufen, wenn es Game in den Kram passt - warum sollte ein System dann wissen, ob es grad pausiert ist?
Potentielle Vorteile:
System
(über passende Methodenaufrufe) (ggf. istSystem
dann sogar nur ein Interface?)Game
geben dürfen - die Modellierung als Funktion unterstützt diesen Gedanken (die System-Klassen müssten eigentlich jeweils Singletons sein)Potentielle Nachteile:
System
haben mit ihren eigenen Funktionen ...)Edit: Gute Startpunkte für eine zusätzliche Recherche könnten Dominion (Java-ECS) und die ECS FAQ (via FLECS) sein.