Добавить в корзинуПозвонить
Найти в Дзене

Продолжаем идти по "кусочкам" архитектурной схемки

Продолжаем идти по "кусочкам" архитектурной схемки Наиболее удобным для управления, расширения, изменения данных способом на моем опыте оказался паттерн команда, используемый через сервисы. В игре существует некий ICommandProcessor, который при старте игры/сцены пичкается набором обработчиков команд. То есть фактически процессор бесконечно расширяемый и не зависит от собственных кишков. Этот процессор раздается всем желающим. И все желающие могут создать команду и послать в процессор для обработки. Если процессор найдет внутри себя нужный обработчик - он ее выполнит. Не найдет - там уж как захочется разработчику, исключение или просто игнор - не важно. В примере на скрине, я привел фрагмет кода, как может выглядеть смена абилки в определенном слоте у персонажа. Запуск через сервис, обработка - через процессор в обработчике. Сервис не участвует в обработке, он лишь дособирает нужные данные, чтобы отправить их уже на обработку. Подход с реализацией команды удобен не только расширяемос

Продолжаем идти по "кусочкам" архитектурной схемки

Наиболее удобным для управления, расширения, изменения данных способом на моем опыте оказался паттерн команда, используемый через сервисы. В игре существует некий ICommandProcessor, который при старте игры/сцены пичкается набором обработчиков команд. То есть фактически процессор бесконечно расширяемый и не зависит от собственных кишков. Этот процессор раздается всем желающим. И все желающие могут создать команду и послать в процессор для обработки.

Если процессор найдет внутри себя нужный обработчик - он ее выполнит. Не найдет - там уж как захочется разработчику, исключение или просто игнор - не важно. В примере на скрине, я привел фрагмет кода, как может выглядеть смена абилки в определенном слоте у персонажа. Запуск через сервис, обработка - через процессор в обработчике. Сервис не участвует в обработке, он лишь дособирает нужные данные, чтобы отправить их уже на обработку.

Подход с реализацией команды удобен не только расширяемостью, но и мультиплеерной интеграцией. Ту же команду с данными можно просто отправить по сети и на другом клиенте также послать ее на процессор и всё будет синхронизовано

Этим мы уже занимались в #пилимигру, если что. У нас как раз домики так строятся.

Вопросики в комменты, пожалуйста!

-2