Проект выполнен в рамках отборочного этапа на курс по созданию видеоигр. Задача состояла в создании прототипа игры по предоставленному дизайн-документу.
Пошаговый автобаттлер, в котором игрок создаёт и прокачивает персонажа, а бои проходят автоматически.
- В начале игрок выбирает класс персонажа (воин, варвар или разбойник).
- Персонаж сражается со случайным монстром (персонаж и монстр атакуют по очереди).
- Если персонаж побеждает, он повышает уровень, и ему предлагается заменить текущее оружие на то, что выпало из монстра.
- Для победы нужно победить 5 монстров подряд.
У персонажа есть 3 атрибута:
- Сила: значение прибавляется к урону от оружия.
- Ловкость: повышает шанс попасть или уклониться от атаки.
- Выносливость: значение прибавляется к здоровью при каждом повышении уровня.
Характеристики врагов заданы заранее. У нового персонажа они равны случайному числу от 1 до 3.
Игрок может как улучшать персонажа в рамках одного класса, так и добавлять новый класс. При этом персонаж в дополнение к своим способностям получит способности выбранного класса на выбранном уровне. За игру игрок улучшает персонажа 2 раза, после чего только выбирает оружие.
- Скачать файл
Autobattler.rar. - Распаковать
Autobattler.rar. - Запустить
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-модели сущностей.
- Добавить звуковое сопровождение.






