Skip to content

Gregory-hub/Autobattler

Repository files navigation

Autobattler

Проект выполнен в рамках отборочного этапа на курс по созданию видеоигр. Задача состояла в создании прототипа игры по предоставленному дизайн-документу.

Пошаговый автобаттлер, в котором игрок создаёт и прокачивает персонажа, а бои проходят автоматически.

Главное меню

Выбор класса

Боевая сцена

Игровой процесс

  1. В начале игрок выбирает класс персонажа (воин, варвар или разбойник).
  2. Персонаж сражается со случайным монстром (персонаж и монстр атакуют по очереди).
  3. Если персонаж побеждает, он повышает уровень, и ему предлагается заменить текущее оружие на то, что выпало из монстра.
  4. Для победы нужно победить 5 монстров подряд.

Экран победы

Выбор класса

Выбор оружия

Характеристики

У персонажа есть 3 атрибута:

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

Характеристики врагов заданы заранее. У нового персонажа они равны случайному числу от 1 до 3.

Игрок может как улучшать персонажа в рамках одного класса, так и добавлять новый класс. При этом персонаж в дополнение к своим способностям получит способности выбранного класса на выбранном уровне. За игру игрок улучшает персонажа 2 раза, после чего только выбирает оружие.

Схема классов


Как запустить

  1. Скачать файл Autobattler.rar.
  2. Распаковать Autobattler.rar.
  3. Запустить Autobattler.exe.

Обзор проекта

Игра разработана на Unreal Engine 5.6.1.

В игре несколько уровней, контент в которых заполняется динамически в зависимости от состояния игры:

  • Уровень выбора класса
  • Уровень выбора оружия
  • Уровень битвы
  • Уровень победы в битве
  • Уровень победы в игре
  • Уровень поражения

GameInstance
Основные игровые данные хранятся в GameInstance:

  • Персонаж игрока
  • Текущий противник

Также GameInstance содержит классы, отвечающие за логику игры:

  • Менеджер уровней
  • Менеджер битвы
  • Менеджер UI

Все объекты в игре могут получить доступ к этим менеджерам через GameInstance. При загрузке игры GameInstance запускает начальный уровень.

PlayerController
PlayerController обрабатывает весь пользовательский ввод, а также загружает UI при запуске уровня. Он содержит методы, которые вызываются при нажатии на кнопки.

LevelManager
Отвечает за загрузку уровней.

BattleManager
Отвечает за нанесение и получение урона, а также за выбор нового случайного противника.

UIManager
Отвечает за загрузку виджетов.

Entity
Сущность. Базовый класс для персонажа и врагов. Содержит атрибуты, способности и оружие.

BattleCharacter
Персонаж игрока. Наследник Entity. Содержит набор выбранных классов, текущий и максимальный уровень.

EnemyCharacter
Противник. Наследник Entity. Его характеристики настраиваются через блупринты.

BattleCharacterClass
Класс персонажа. Содержит набор способностей для каждого уровня класса и начальное оружие. Классы можно настраивать через блупринты (включая набор способностей).

AbilityBase
Абстрактный класс для способностей. Способности реализованы в классах, наследующих AbilityBase. Так как способности могут взаимодействовать как с уроном, так и с характеристиками сущности, логика разделена на несколько методов, которые вызываются на разных этапах обработки атаки (в BattleManager).

EntityWeapon
Оружие. Содержит урон и тип урона. Конкретное оружие создается через блупринты, наследующие этот класс. Все монстры используют DefaultEnemyWeapon, который не имеет типа урона и не может быть родителем для других блупринтов.

Что можно улучшить

  • Сделать менеджеры наследниками GameInstanceSubsystem.
  • Сделать систему способностей более модульной и настраиваемой через блупринты. Каждая способность может состоять из набора модификаторов с указанием этапов, на которых они должны быть применены. Таким образом, для создания способности нужно будет только указать набор этих модификаторов в редакторе UE.
  • Загружать UI для уровня не в PlayerController, а, например, в GameMode.
  • Учитывая, что все уровни идентичны (серая плоскость с настройками освещения), можно не загружать отдельные уровни и менять только виджет.
  • Добавить изображения, анимации или 3D-модели сущностей.
  • Добавить звуковое сопровождение.

About

An autobattler game made with Unreal Engine

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors