Прототип мини-игры в духе “собери три”:
- На поле сверху с заданным интервалом спавнятся фигуры разных форм и цветов, которые падают в контейнер.
- Игрок кликом добавляет фигуры в Action Bar (полоска слотов сверху).
- Когда в баре появляется триплет (форма + цвет + категория сладости), они удаляются, может триггерить спец-эффекты.
- Победа — когда на поле не осталось активных фигур. Поражение — когда Action Bar переполнен.
Игровая логика:
TripletSpawnListProvider— генерация списка спавна группами по 3.FigureSpawner— корутина спавна с интервалом и горизонтальным рандомом, возврат в пул по окончании.FigureBehaviour— отображение/физика/коллайдер, уведомления о матчах, интеграция со спец-поведением.ActionBarModel/ActionBarView— модель бар-слотов и UI отрисовка.WinLoseEvaluator/EndGame— экраны победы/поражения с плавной анимацией и рестартом.
Спец-поведения (расширяемые):
Heavy— увеличивает гравитацию, настраиваемая величина.Sticky— «прилипает» к ближайшей фигуре в радиусе.Explosive— при совпадении убирает соседние элементы в Action Bar.Frozen— блокирует клик до N совпадений триплетов.
Архитектура:
- SRP/KISS/DRY: каждая сущность решает одну задачу (спавн, совпадения, представление UI, поведение).
- Пуллинг: ComponentPool + IPooledObject — чистая и безопасная реинициализация.
- События: читаемые делегаты без Action в публичном API.
- Константы: все числовые «магии» вынесены в const/SerializeField.
Расширяемость: добавление нового спец-поведения — без правок существующего кода (OCP).
- Rigidbody2D, Collider2D, CanvasGroup, Coroutine, SerializeField.
- Object Pooling: собственный пул компонентов с хуками жизненного цикла.
- Событийная модель: делегаты и события в совершённом виде глагола.
- Чистая архитектура: отделение данных (FigureData) от поведения и визуализации.
- Тестопригодность: инверсия зависимости для RNG, фабрики, адаптеры вместо прямого включения/выключения компонентов.
- Производительность: минимизация аллокаций при спавне/удалении через пул; короткие корутины и простые структуры данных.
Опционально: проект подготовлен к DI (Zenject).

