Так что я думал о том, как монолитно мои занятия занимают много времени. Например, в методе Character
класса Jump
можно иметь ссылку на объект звукового эффекта и воспроизводить его. Само по себе это хорошо, но если принять во внимание физику, анимацию, столкновения и т. Д., Метод Jump становится огромным, и у Character
класса много зависимостей от множества разных вещей. Тем не менее, это может быть хорошо. Однако что, если мы больше не хотим, чтобы звук воспроизводился, когда персонаж прыгает? Теперь мы должны найти эту конкретную строку кода в путанице Jump
кода и закомментировать ее или что-то еще.
Итак .. я думал ..
Что, если вместо этого был какой-то AudioSystem
класс, и все, что он делал, это подписывался на случайные события, которые его интересуют в других классах. Например, у Character
класса может быть Jumped
событие (я полагаю, тоже статическое), которое вызывается внутри Character
класса в методе. Тогда Character
класс ничего не узнает о небольшом звуковом эффекте, который воспроизводится, когда персонаж прыгает. Это AudioSystem
был бы огромный класс, к которому программист мог бы вернуться, чтобы связать звуковые эффекты с определенными событиями, происходящими в игре, с использованием статических событий. Тогда, если он получил слишком большой , он может быть отделен в подклассы , как EffectsAudioSystem
, BackgroundAudioSystem
, AmbientAudioSystem
и так далее.
Затем в опциях игры можно установить флажок, чтобы включить или отключить эти виды звуков, и все, что нужно сделать, это просто отключить эту единственную систему с простым и единственным логическим флагом. Эта идея систем также может быть распространена на такие вещи, как физика, анимация и т. Д. До такой степени, что большинство игровых ответов, возникающих в результате действий игрока, подключаются через эти сложные и не связанные между собой системы.
Итак, мой вопрос может быть немного расплывчатым, но как это звучит? Я никогда не слышал много разговоров об этой системе. Это все в моей голове прямо сейчас без какого-либо кодирования, сделанного до сих пор, так что, возможно, это одна из тех сделок, «хороших в теории, но не на практике». Будет ли система такого типа работать с более крупной игрой или она в конечном итоге сломается и станет еще большим беспорядком спагетти, чем оригинальная система?