README.md

Roguelike survival prototype

Тестовое задание для первого потока GameBox (казуальная арена экшн)

Платформа: ПК
Используемая версия движка: 2021.3.11f1

Собранный билд игры: https://disk.yandex.ru/d/5c6YZ9mvdhdFew

Реализованный функционал

Персонаж

Может передвигаться на WASD или стрелочки. Атакует автоматически.
У персонажа есть здоровье, которое тратится при столкновении с противниками. Если здоровье закончится - игра завершится.
Игрок может повышать уровень, на каждый уровень нужно разное количество очков опыта.

Противники

В игре реализовано пять типов противников. Их характеристи можно настроить через Scriptable Object:

  • здоровье
  • скорость передвижения
  • наносимый урон
  • выпадаемый опыт

Настройка через Scriptable Object позволит создавать вариации противника используя одинаковый Prefab. Для создания нового противника, который отличается не только характеристиками, используется Prefab Variant (от базового Prefab’а противника).

Для упрощения настройки противников и их баланса я сделала специальное EditorWindow:
EnemiesEditorWindow

Атаки

В игре реализованы 6 видов атаки:

  • быстрая атака по прямой
  • мощная пробивная атака
  • классическая атака
  • атака по области
  • атака в диапазоне 180 градусов перед собой
  • атака вокруг (360 градусов)

У игрока одновременно может быть много видов атак - они активируются автоматически.

Реализация этих 6 видов атак сделана через 3 типа атаки (атака вперёд, атака по области, атака под углом).
Создание новых типов атак через Prefab’ы и дочерние классы от базовой атаки.
Для каждого вида атаки можно настроить:

  • частоту атаки
  • число выпускаемых снарядов
  • урон снаряда
  • размер снаряда
  • скорость снаряда
  • прочность снаряда

Для настройки видов атак и их уровней я сделала специальное EditorWindow:
AttacksEditorWIndow

Прокачка персонажа

В начале игры предлагается один из трёх видов атак на выбор.

После победы над противником остаётся (выпадает) шарик опыта. Если к нему подойти - он притянется и увеличит опыт игрока.
Число выпадаемого опыта зависит от типа противника.

Когда набирается достаточно опыта, появляется окно повышения уровня. В этом окне показаны 3 случайные атаки.
При выборе новой - она добавится к текущим, а при выборе одной из текущих - её уровень повысится.
При повышении уровня предлагаются только те атаки, которые ещё не прокачаны до максимального уровня.

Волны противников

Можно задавать время появления и описание волны противников. Время считается по таймеру текущей игровой сессии.
Во время волны появляются заданные типы противников с заданным интервалом (см. пример в EditorWindow).

Параметры волн можно редактировать в специальном EditorWindow:
WavesEditorWindow

UI

Все интерфейсы адаптируются под смену разрешения в рамках одного типа устройств, интерфейс отображается корректно на всех видах дисплеев.
Реализованы окна «Главное меню», «Интерфейс внутри игры», «Интерфейс паузы», «Интерфейс поражения».

Музыка и основная музыкальная тема игры

Добавлено несколько музыкальных тем (3 штуки), которые звучат во время игрового процесса (выбираются случайно по завершению предыдущей).
Настройка громкости доступна в окне паузы и в меню (реализовано через микшер).

Оригинал репозитория

Я вела разработку в репозитории на GitFlic. Увидеть все задачи и ветки, созданные в процессе, можно тут.

Используемые плагины

  • Zenject
  • UniTask
  • DOTween
Конвейеры
0 успешных
0 с ошибкой