Демонстрационный проект на котором я отрабатываю различные идеи связанные с архитектурой и дизайном кода.
В данном проекте я попытался объединить сервисную архитектуру управляющую жизненным циклом игры с ECS подходом к реализации геймплейной логики. Проект реализован в обвязке из DI фреймворка Zenject.
Интересной особенностью проекта является то, что геймплейная логика инкапсулированная в GameplayModeService не только реализована ECS-way, но так же реализована полностью отвязанной от движка Unity таким образом, что бы была возможность без проблем вынести её на сервер где нет Unity и использовать один и тот же код как на сервере так и на клиенте где могут быть разные архитектурные и инфраструктурные реализации.
Высокоуровневые требования были следующими:
- Расширяемая архитектура Unity-приложения
- Геймплейная часть должна быть реализована полностью отвязанной от движка Unity. Должна быть возможность вынести геймплейную логику в другую среду, например, на сервер. Геймплей должен быть реализован ECS-way с использованием LeoEcs.
- Продемонстрировать подход к следующим моментам: управление жизненным циклом игры, работа с зависимостями, работа с UI.