Je pensais donc à la monolithicité de mes cours la plupart du temps. Par exemple, dans la méthode de la Character
classe Jump
, on peut avoir une référence à un objet d'effet sonore et le jouer. En soi, c'est bien, mais quand la physique, l'animation, les collisions, etc. sont prises en compte, la méthode Jump devient énorme et la Character
classe a beaucoup de dépendances avec beaucoup de choses différentes. Pourtant, cela peut être bien. Cependant, que se passe-t-il si nous ne voulons plus qu'un son soit joué lorsque le personnage saute? Maintenant, nous devons trouver cette ligne de code spécifique dans le désordre du Jump
code et le commenter ou quoi que ce soit.
Alors .. je pensais ..
Et si, à la place, il y avait une sorte de AudioSystem
classe et tout ce qu'elle faisait était de s'abonner à des événements aléatoires qui l'intéressaient dans d'autres classes. Par exemple, la Character
classe peut avoir un Jumped
événement (statique aussi, je suppose) qui est déclenché dans la Character
classe dans la méthode. Ensuite, la Character
classe ne saurait rien du petit effet sonore qui est joué lorsque le personnage saute. Ce AudioSystem
serait juste une énorme classe dans laquelle le programmeur pourrait se retirer pour connecter des effets sonores à certains événements qui se produisent dans le jeu grâce à l'utilisation d'événements statiques. Ensuite, si elle devenait trop grand , il pourrait être séparé en sous - classes comme EffectsAudioSystem
, BackgroundAudioSystem
, AmbientAudioSystem
et ainsi de suite.
Ensuite, dans les options du jeu, on pourrait avoir une case à cocher pour activer ou désactiver ces sortes de sons et tout ce qui devrait être fait est simplement de désactiver ce système avec un drapeau booléen simple et unique. Cette idée de systèmes pourrait également être étendue à des choses comme la physique, les animations, etc. au point où la plupart des réponses de jeu résultant des actions des joueurs sont connectées à travers ces systèmes élaborés et découplés.
D'accord, donc ma question peut être un peu vague, mais comment ce genre de chose sonne-t-il? Je n'ai jamais vraiment entendu parler de ce genre de système. Tout cela est dans ma tête en ce moment sans aucun codage fait jusqu'à présent, donc c'est peut-être une de ces transactions "bonnes en théorie mais pas en pratique". Ce type de système fonctionnerait-il avec un jeu plus grand ou finirait-il par tomber en panne et devenir encore plus un gâchis de spaghetti que le système d'origine?