Also habe ich darüber nachgedacht, wie monolithisch meine Klassen die meiste Zeit werden. Beispielsweise kann man in der Methode der CharacterKlasse Jumpeinen Verweis auf ein Soundeffektobjekt haben und dieses abspielen. Das ist an sich in Ordnung, aber wenn Physik, Animation, Kollision usw. berücksichtigt werden, wird die Sprungmethode riesig und die CharacterKlasse hat viele Abhängigkeiten von vielen verschiedenen Dingen. Trotzdem kann dies in Ordnung sein. Was ist jedoch, wenn beim Springen des Charakters kein Ton mehr abgespielt werden soll? Jetzt müssen wir diese bestimmte Codezeile im Durcheinander des JumpCodes finden und sie auskommentieren oder was auch immer.
Also .. ich dachte ..
Was wäre, wenn es stattdessen eine Art AudioSystemKlasse gäbe und sie nur zufällige Ereignisse abonnieren würde, an denen sie in anderen Klassen interessiert ist ? Zum Beispiel kann die CharacterKlasse ein JumpedEreignis haben (vermutlich auch statisch), das innerhalb der CharacterKlasse in der Methode ausgelöst wird. Dann Characterwürde die Klasse nichts über den kleinen Soundeffekt wissen, der gespielt wird, wenn der Charakter springt. Das AudioSystemwäre nur eine riesige Klasse, in die sich der Programmierer zurückziehen könnte, um Soundeffekte mit bestimmten Ereignissen, die im Spiel auftreten, mithilfe statischer Ereignisse zu verbinden. Dann wird , wenn es zu groß bekommt könnte es um die Unterklassen wie getrennt werden EffectsAudioSystem, BackgroundAudioSystem, AmbientAudioSystemund so weiter.
Dann könnte man in den Optionen für das Spiel ein Kontrollkästchen haben, um diese Art von Sounds zu aktivieren oder zu deaktivieren, und alles, was getan werden müsste, ist nur, dieses eine System mit einem einfachen und einzelnen Booleschen Flag zu deaktivieren. Diese Idee von Systemen könnte auch auf Dinge wie Physik, Animationen usw. ausgedehnt werden, bis zu dem Punkt, an dem die meisten Spielreaktionen, die sich aus Spieleraktionen ergeben, über diese ausgeklügelten und entkoppelten Systeme miteinander verbunden sind.
Okay, meine Frage mag etwas vage sein, aber wie klingt so etwas? Ich habe noch nie wirklich viel über diese Art von System gesprochen. Das ist alles in meinem Kopf, ohne dass bisher eine Codierung durchgeführt wurde. Vielleicht ist es eines dieser "theoretisch guten, aber nicht praktischen" Geschäfte. Würde diese Art von System mit einem größeren Spiel funktionieren oder würde es irgendwann zusammenbrechen und noch mehr zu einem Spaghetti-Chaos werden als das ursprüngliche System?