Also habe ich darüber nachgedacht, wie monolithisch meine Klassen die meiste Zeit werden. Beispielsweise kann man in der Methode der Character
Klasse Jump
einen 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 Character
Klasse 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 Jump
Codes finden und sie auskommentieren oder was auch immer.
Also .. ich dachte ..
Was wäre, wenn es stattdessen eine Art AudioSystem
Klasse gäbe und sie nur zufällige Ereignisse abonnieren würde, an denen sie in anderen Klassen interessiert ist ? Zum Beispiel kann die Character
Klasse ein Jumped
Ereignis haben (vermutlich auch statisch), das innerhalb der Character
Klasse in der Methode ausgelöst wird. Dann Character
würde die Klasse nichts über den kleinen Soundeffekt wissen, der gespielt wird, wenn der Charakter springt. Das AudioSystem
wä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
, AmbientAudioSystem
und 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?