Техническое задание: Survival-игра на Unity (2D, Top-Down)

Краткое описание проекта

Необходимо разработать 2D игру в жанре survival с видом сверху. Игрок появляется в подземелье и должен выживать, отбивая волны врагов, собирая разбросанные по карте предметы для усиления своего персонажа. Пока герой жив, начисляются очки. Цель - создать динамичный и цепляющий геймплей, подходящий для демонстрации в портфолио.

Основные механики и условия победы/поражения

Условия победы (на выбор):

  • Продержаться заданное время (например, 3-5 минут).
  • Выдержать определенное количество волн (например, 5-10).

Условие поражения:

  • Здоровье героя падает до нуля.

Динамика сложности:

  • Волны врагов появляются через фиксированные промежутки времени.
  • С каждой новой волной враги становятся сильнее: увеличивается здоровье, урон и/или количество юнитов.
  • Случайным образом на карте появляются предметы для усиления.

Технические требования и игровой процесс

Управление:

  • Перемещение: клавиши WASD или стрелки.
  • Атака: отдельная кнопка для ближнего или дальнего боя.

Характеристики персонажа:

  • Здоровье (HP)
  • Скорость передвижения
  • Наносимый урон

Система врагов (FSM - конечный автомат состояний):

  • Idle - состояние ожидания перед активацией.
  • Follow - преследование игрока.
  • Attack - нанесение урона игроку (при столкновении или через анимацию).
  • Dead - проигрыш анимации/эффекта и удаление объекта.

Система урона:

  • Игрок наносит урон по врагам при активации атаки (проверка через коллайдер).
  • Игрок получает урон от врагов при столкновении или по таймеру, пока враг находится в зоне атаки.

Предметы усиления:

  • Аптечка (восстановление здоровья).
  • Бафф скорости (временное увеличение скорости передвижения).
  • Бафф урона (временное увеличение наносимого урона).

Интерфейс пользователя (UI)

Требуется реализовать следующий набор интерфейсов. Допустимо использование готовых графических ассетов.

  • Индикатор здоровья (HP Bar) игрока.
  • Счетчик (отображающий время выживания или количество побежденных врагов).
  • Кнопка паузы в игровом процессе.
  • Главное меню для начала игры.
  • Экран окончания игры (поражения).

Техническая реализация

  • Движок: Unity.
  • Графика: 2D, стиль top-down. Для графики можно использовать ресурсы с открытых библиотек.
  • Камера: Простое следование за игроком или реализация с помощью Cinemachine 2D.
  • Тестирование: Необходимо предоставить как минимум один модульный тест, проверяющий логику уменьшения здоровья.