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