- Бесконечная генерация уровня Реализована возможность настройки спавнящихся объектов через ScriptableObjcets
- В проекте есть два вида Entity - SpaceAsteroid и SpaceCat, для каждого из них можно настраивать свои параметры спавна.
- Реализацию каждого Entity можно делать свою наследуясь от абстрактного базового класса EntityBase, таким образом вращение для имеющихся типов Entity разное.
- За весь игровой цикл используется только 1 Instantiate(), далее работа идет с уже имеющимся массивом объектов для лучшей оптимизации и никаких Destroy().
- Настройка скорости игры и других параметров через ScriptableObjects.
- Сбор статистики и хранение её в базе данных в зашифрованом виде в byte[] и получение её через StatisticsManager.
- Настройка количества получаемых баллов через ScriptableObjects.
- Вывод их на экран посредством модульной системы.
- Космический корабль SpaceShip реализован из абстрактного класса SpaceTransport с базовой реализацией и далее дополненный модульной системой необходимых возможностей.
- SpaceTransport и все наследуемые от него компоненты имеют возможность своей уникальной настройки для каждого типа SpaceTransport.
- Архитектура проекта представляет собой модульную систему с каждым компонентом независящим от другого, за исключением сбора статистики, которая по соображениям оптимизации внердряется в другие классы.
- Все Managers и базовые классы событийно реализовывают методы интерфейсов IGameStart и IGameOver, дочерние подклассы имеют внутреннию реализацию данных методов от базовых.
- Эффекты комической пыли и реактивных двигаталей корабля которые взаимодействуют с ускорением.
- Полностью отсутствуют любые переборы компонентов и игровых объектов по типу GetComponent, GameObject.Find, FindOfType, вместо этого для максимальной производительности используется кэширование.
- Музыкальное сопровождение и звуковые эффекты в качестве дополнительных модулей для SpaceShip.
- Полный цикл игры Start => GameOver => Start => ...
- Сохранение лучшего результата и вывод его, увеличение его в процессе игры.
- В проекте используется только 2 Update().
- Скорость игры складывается из скорости корабля и коэффициента скорости в настройке GameSettings.
- Данный проект не является примером сверх идеальной архитектуры, его цель в демонстрации навыков =)