Así que estaba pensando en cuán monolíticas mis clases se vuelven mucho tiempo. Por ejemplo, en el método de la Characterclase Jump, uno puede tener una referencia a un objeto de efecto de sonido y reproducirlo. Eso en sí mismo está bien, pero cuando se tiene en cuenta la física, la animación, la colisión, etc., el método Jump se vuelve enorme y la Characterclase tiene muchas dependencias para muchas cosas diferentes. Aún así, esto puede estar bien. Sin embargo, ¿qué pasa si ya no queremos que suene un sonido cuando el personaje salta? Ahora, tenemos que encontrar esa línea específica de código en la confusión del Jumpcódigo y comentarlo o lo que sea.
Entonces ... estaba pensando ...
¿Qué pasa si, en cambio, hubo algún tipo de AudioSystemclase y todo lo que hizo fue suscribirse a eventos aleatorios que le interesan en otras clases? Por ejemplo, la Characterclase puede tener un Jumpedevento (también estático, supongo) que se genera dentro de la Characterclase en el método. Entonces, la Characterclase no sabría nada sobre el pequeño efecto de sonido que se reproduce cuando el personaje salta. El AudioSystemno sería más que una clase enorme que el programador podría retirarse a conectar efectos de sonido con ciertos acontecimientos que suceden en el juego a través del uso de eventos estáticos. Entonces, si se hacía demasiado grande que podría ser separado en las subclases como EffectsAudioSystem, BackgroundAudioSystem, AmbientAudioSystem, etcétera.
Luego, en las opciones para el juego, uno podría tener una casilla de verificación para habilitar o deshabilitar este tipo de sonidos y todo lo que tendría que hacer es deshabilitar ese sistema con una bandera booleana simple y única. Esta idea de los sistemas también podría extenderse a cosas como la física, las animaciones, etc., hasta el punto en que la mayoría de las respuestas del juego resultantes de las acciones de los jugadores se conectan a través de estos sistemas elaborados y desacoplados.
Bien, entonces mi pregunta puede ser un poco vaga, pero ¿cómo suena este tipo de cosas? Realmente nunca he oído hablar mucho sobre este tipo de sistema. Todo esto está en mi cabeza en este momento sin ninguna codificación realizada hasta ahora, por lo que tal vez sea uno de esos tipos de acuerdos "buenos en teoría pero no en la práctica". ¿Funcionaría este tipo de sistema con un juego más grande?