Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
GameMode ist ein actor und mein gamemode ist ein gamemode. Er sitzt auf dem server und kontrolliert das spiel. Ich kann einen pointer eig von überall abrufen und über ihn weitere pointer holen oder so. Das geht immer.
Jedoch caste ich den pointer immer in meinen gamemode ( er ist polymorph). In der annahme es isr immer diese unterklasse funktionieren die objekte und obwohl das so ist ist es irgendwie schmutzig.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
So kann man das auch sehen. Nur sind die Komponenten unabhängig, eigenständig und benötigen keine "Gottklasse" für Datenmanipulation. (Bzw. gibt es nicht nur eine Gottklasse, sondern eben Count(Entity) viele) Auch können die Komponenten klar abstrahiert und wiederverwendet werden. Gottklasse vs Entity verliert bereits bei der Übersichtlichkeit. Auch wenn es sich um eine scheinbare Verbesserung handelt, habe ich das Gefühl von CleanCode und weniger Angst vor Antipattern.Was ist eine Entity mit sehr vielen Komponenten, wenn nicht eine Gott-Klasse? Nur weil ich sie über ein gemeinsames Interface zusammengefasst in einen Array/Liste werfe statt sie einzeln fest in der Klasse zu deklarieren, ändert sich eigentlich gar nichts. Das ist eine scheinbare Verbesserung, die aber eigentlich nicht wirklich eine ist. Ähnlich dem "Ich verwende keine globalen Objekte, ich verwende Singletons"-Trugschluss.
Überlegen was ich erreichen will. Realisierungsmöglichkeiten gedanklich auflisten. (API's, Frameworks)
Das ist component-basiert jedoch hat GameMode als abstrakter Actor keine. Ich habe genauer darüber nachgedacht und herausgefunden dass ich alles unabhängig lösen kann. Es gibt diverse Sachen die einen anderen Platz haben sollten.
Da hab ich wohl GameMode als Gottklasse missbraucht was im Singleplayer durchaus funktioniert.
Wenn ihr das nicht plant, wie macht ihr das dann? Einfach drauflosprogrammieren d.h. system und details kurz vor der implementierung überlegen?
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Wo siehst Du da jetzt einen Unterschied? Ob ich nun Ball, Spieler, Monster als einzelne Klassen habe und jedes davon hat mehrere Animationen, mehrere Sounds, mehrere KIs/Controller, mehrere Physik-Bodies oder alle haben nur eine unbestimmte Menge von Komponenten, die im Detail auch wieder Animation, Sound, KI/Controller und Physik-Body heißen, macht doch null Unterschied. Das Einzige, wofür so ein Komponenten-System wirklich gut ist, ist Scripting. Wenn jemand von außen beliebig viele Komponenten an irgendein "Ding" anfügen kann um damit zu machen, was er will, ohne dass es dafür eine neue Klasse bräuchte. Den Vorteil kannst Du im Normalfall aber gar nicht ausreizen.Bzw. gibt es nicht nur eine Gottklasse, sondern eben Count(Entity) viele
Und wo genau ist da der Unterschied zum klassischen OOP-Ansatz Deiner Meinung nach? Auch dort können Komponenten wiederverwendet werden und sind klar abstrahiert.Auch können die Komponenten klar abstrahiert und wiederverwendet werden.
Eine Entity ist nebenbei bemerkt kein spezielles Wort für eine Klasse, die einen Komponenten-Ansatz verwendet. Ich behaupte eben, dass so eine Klasse mit Komponenten-Ansatz eine Gottklasse ist und zusätzlich sogar durch fehlende Kontrollierbarkeit ihrer eigenen Komponenten viel ihrer Zuständigkeit an andere Stellen nach *außen* abgibt, was abstrakt betrachtet eigentlich mal ein schlechter Ansatz ist, weil sie sich nicht mehr um ihre eigenen Daten kümmert, sondern jemand anders, was sie teilweise zu einem reinen Gott-Datenhalter degradiert, statt zu einer logisch in sich geschlossenen Klasse.Gottklasse vs Entity verliert bereits bei der Übersichtlichkeit.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (03.01.2015, 18:49)
Werbeanzeige