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
Und wir reden hier von einem großen Projekt?Ich kenne kaum ein großes Projekt
Und wir reden hier von einem großen Projekt?Ich kenne kaum ein großes Projekt
Und wir reden hier von einem großen Projekt?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Renegade« (08.08.2017, 19:35)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Ganz und gar nicht. Ich habe deine Aussage zurück in den Kontext dieses Topics hier gebracht. Denn nur in diesem Kontext sind Argumente sinnvoll. Rein theoretische Betrachtungen sind ziemlich irrelevant.Dein Beitrag ist aus dem Kontext gerissen, in dem ich diese Aussage getroffen habe.
Hier zitierst du selbst fern ab des Kontextes. TGGC sagte, dass in dem verlinkten Beispiel eine Limitierung enthalten ist, die einem in einem "echten Projekt" um die Ohren fliegen würde. Und genau das war der Kernpunkt der Aussage. Nicht dass das Pattern an sich in keinem Projekt jemals funktioniert! Wichtiger Unterschied.Der Bezug zur Aussage, dass das Command Pattern in einem echten Projekt um die Ohren fliegt
eigentlich ist es hier eher ein Syntax- bzw. Designthema, da die gewünschte Funktionalität gegeben ist. Allerdings gefällt mir der Aufbau des Codes nicht, habe aber keine wirklich gute Idee wie das besser umzusetzen ist.
Das Command Pattern scheint mir totaler Schwachsinn für diese Aufgabe[, speziell so wie auf der Seite erklärt.] Die if Kaskade, die man aufwendig pflegen muss hat man so trotzdem noch. Plus zig Klassen mit Ableitungen rundrum. Und dann baut man sich auch noch eine Einschränkung ein, die einem in einem echten Projekt wahrscheinlich sofort um die Ohren fliegt.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Ok, wenn wir auf dem Level argumentieren: Ich habe 26 Jahre an hunderten Projekten verschiedenster Größenordnungen gearbeitet und nie das Command Pattern benutzt um Tasten oder Tastenkombinationen dynamisch Funktionen der Spiels zu zuordnen.Ich kenne kaum ein großes Projekt welches den Input (jeglicher Art, ob Remote/Network/Proxy, KI etc. pp.) nicht in Commands kapselt. Es gehört zu einen der wichtigsten Patterns in der Spieleentwicklung und ist super flexibel.
Na hier mal ein paar Beispiele, wo genau das passieren wird:Aber die Argumentation, dass das Command in einem echten Projekt um die Ohren fliegt ist absolut nicht haltbar.
C-/C++-Quelltext |
|
1 2 3 4 5 |
private: Command* buttonX_; Command* buttonY_; Command* buttonA_; Command* buttonB_; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
Command* InputHandler::handleInput() { if (isPressed(BUTTON_X)) return buttonX_; if (isPressed(BUTTON_Y)) return buttonY_; if (isPressed(BUTTON_A)) return buttonA_; if (isPressed(BUTTON_B)) return buttonB_; // Nothing pressed, so do nothing. return NULL; } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
Command* command = inputHandler.handleInput(); if (command) { command->execute(actor); } |
Ja eben! Wie soll das klappen? 360 Commands ist offensichtlich Quatsch. Man kann einem Command aber auch nicht so einfach noch einen Parameter wie die Gradzahl geben. Das muss dann naemlich entweder in die Basisklasse und bei allen Commands gemacht werden und man erschafft ein Supercommand, das kann alles und nutzt meist nur 1% davon. Oder der Inputhandler versteht das nicht alle Commands von aussen gleich sind und schwupp hat man die nächste if Kaskade wo bei den ganzen Sonderfällen nochn extra Parameter reinmuss...Man könnte die Bewegungsrichtungen auch zusammenfassen zu einem MoveCommand und daraus einen Richtungsvektor berechnen (Wie sonst soll das klappen? 360 Commands erstellen für jeden Grad des Kreises?).
Zitat
Aber was passiert, wenn ich die gesamte Tastatur auch frei belegbar hab? Und noch jeden Controller, der angeschlossen wird.
Zitat
Ich habe 26 Jahre an hunderten Projekten verschiedenster Größenordnungen gearbeitet
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Angesichts seines Arbeitgebers vermutlich alleWie viele diese Projekte waren dabei Games? Und in welchen Sprachen wurden diese umgesetzt?
Werbeanzeige