Простой космический шутер с применением UniRx.
Содержащиеся сущности в коде:
- Космический корабль (Spaceship)
- Метеор (Meteor)
- Боевой снаряд (Projectile)
- Визуальный эффект (Visual Effect)
- Место появления (Spawner)
- Игровой уровень (Level)
Там, где это было необходимо, старался соблюдать структуру MVC. Где это было излишним усложнением системы, отклонялся от неё (например, объединял Controller и View).
Комментариев в коде не присутствует, поскольку я придерживаюсь принципа "Хороший код в комментариях не нуждается": поведение каждого метода и каждой сущности обязано быть очевидно из её названия и структуры без каких-либо уточнений.
В проекте присутствуют непосредственно игровой процесс, в котором:
- можно можно проиграть, 3 раза столкнувшись с астероидами
- можно выиграть, достигнув финальной точки
В проекте присутствует сохранение данных. Класс GameConfig может хранить:
- Пройденные уровни
- Выбранный корабль
- Выбранный тип боевого снаряда Всё это сохраняется и загружается с помощью бинарной сериализации
UniRx используется не так много, поскольку для меня это всё ещё новая парадигма, для которой я не нашёл достаточно применения. В основном для связи событий уровня, событий корабля и игрового интерфейса.
Уровни генерируются с помощью кнопки Randomize в инспекторе объектов типа LevelConfig.