Indie Jam. Beat Em Up. Unreal Engine - Первые впечатления

Всем привет. Уже больше месяца прошло после старта #индиджем и, по-хорошему, этот пост нужно было написать недели 2 назад, но не успел, бывает.

Итак, в начале джема я писал, что буду делать Beat Em Up (предлагаю так игру и называть, так как названия я, кажется, не придумаю до самого конца) на Unreal Engine, с которым буду знакомиться по ходу разработки. Теперь, спустя столько времени я расскажу о своих впечатлениях о работе на это движке, а так же в конце покажу, что на данный момент готово. Поехали.

Собственно Unreal Engine

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

Редактор

Редактор, как и в любом другом движке, очень похож на редактор какого-нибудь пакета для 3D моделирования. Так как я, в основном, работаю в Blender (который считаю эталоном в удобстве использования и навигации по трехмерной сцене) все движки сравниваю именно с ним. И тут меня сразу убила инверсия мыши, которую я так и не смог убрать (если подскажете мне как это сделать буду ну просто очень благодарен), но ничего, вроде привык. Также, как и в Unity, пришлось привыкать к навигации на сцене и использование клавиш WASD с зажатыми двумя пальцами на трекпаде тоже мне показалось той еще проблемой (да я уже лет 7 не пользуюсь мышкой и вообще не страдал от этого). Но в целом ко всему довольно быстро привыкаешь и начинаешь испытывать трудности уже в других программах, с которыми работал раньше, например, тем же Blender'ом или Unity 😆.

Программирование на C++ требует очень много времени для компиляции проекта.

Как я и говорил, я очень люблю этот язык, и это было одной из основных причин выбора движка. Но, оказалось, что в проект, вместе с кодом самой игры, укладывается код движка, что очень сильно увеличивает время сборки проекта и очень долго идексируется в Xcode, на моей машине индексация заняла 8 часов, а без нее иногда тяжеловато писать код без обращения к документации каждые 5 минут (да, иногда я изучаю API через Code Sense).

Программирование на Blueprint'ах - это, ... как ни странно, программирование

Отдельно хочу упомянуть Blueprints. Это довольно удобная штука для многих вещей, и на них действительно много можно сделать быстрее чем в коде на C++, что вводит многих начинающих в заблуждение. Знаю много людей, которые выбирали UE именно из-за Blueprints и, в результате, у них все равно ничего не получалось. А причиной, как можно было догадаться, было то, что это тот же код, только оформленный в графическом виде. Следовательно, Blueprints также требует знаний и мышления, необходимого для написания любой компьютерной программы на любом языке.

По моим личным ощущениям Blueprints - это не плохо и не хорошо, это - инструмент, который подходит для конкретных целей (говорить что они лучше или хуже кода - тоже самое, что сравнивать экскаватор с лопатой - ты можешь им вырыть огромную яму, но огород не вскопаешь). И по этому использовать этот инструмент нужно аккуратно. Например для программирования логики игры он не очень хорошо подходит - выполняется в 4-8 раз медленнее, простейшие конструкции занимают ну о-о-о-о-о-очень много места на экране, а рефакторинг выполнять очень тяжело, так как автоматических средств замены и выделения фрагмента кода в метод и других приятных плюшек, предоставляемых любой современной IDE я не нашел (но это не значит, что их там нет, не забываем - я работаю с движком всего месяц и почти ничего не знаю 🤔 ). Зато настраивать Animation Blueprint - одно удовольствие - сразу видишь как будет выглядеть конечная анимация, можно просмотреть большинство промежуточных этапов не перезапуская проект.

В целом работать с UE - это просто дело привычки и знаний, он оказался более тяжеловесным и менее user friedly чем, например Unity, зато весь функционал доступен сразу из коробки (не надо платить за Pro подписки и т.д.) и инструментарий, с которым успел поработать мне понравился немного больше.

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

Самое первое, что по моему мнению стоит сделать - это выбросить все, что успел нарисовать (всего одна картинка, но это не значит, что ее не жалко, и сюжет со сценарием) и сосредоточиться на механике. В первую очередь - это по тому, что я работаю в одиночку и у меня просто не будет времени на арт, по этому в проекте будет минимум текстур, моделей и спецэффектов. Кроме того - нет смысла делать арт, если играть будет не весело, поэтому обойдусь минимумом геймплея и сосредоточусь на его качестве (ведь игры на подобие Super Hot тоже не графикой цепляют). Уровней тоже будет самый минимум - минут на 15 игры (Вы же не верите, что такие игры делаются за 2 месяца?), во-первых - этого достаточно для того, чтобы уловить основную идею, а во-вторых - останется больше времени на полировку того, что я считаю самым важным (по-моему в Beat Em Up - это боевка).

Superhot - здесь нет супер реалистичной графики (хотя смотрится стильно), но мы ведь ее не за это любим, правда?
Superhot - здесь нет супер реалистичной графики (хотя смотрится стильно), но мы ведь ее не за это любим, правда?

Таким образом игра - это side scroller, цель которого - избежание врагов. Сразу скажу, что движение будет только в двух измерениях, не смотря на то, что проект в 3D, хотя обычно на многих уровнях играх такого жанра предполагается движение вверх-вниз как на картинке внизу, но реализовать я это просто не успею.

Не смотря на то, что игра двухмерная присутствует псевдо 3D хождение по уровню. 
В 3D только для ходьбы нужно 8 анимаций из-за очень большого количества степеней свободы
В 3D только для ходьбы нужно 8 анимаций из-за очень большого количества степеней свободы

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

Персонаж не может выбежать за пределы камеры до тех пор пока не разберется с противниками. Так можно использовать части уровня в качестве своеобразных арен и тем самым создавать более интересные ситуации

Как я уже сказал - все делается в полноценном 3D, не смотря на то, что в референсах у меня проекты в Pixel Art. Такой выбор обусловлен тем, что мне просто надоел этот стиль (мне очень нравилось играть в Shovel Knight и Stardew Valley, но когда такой визуальный стиль стал почти стандартом для маленьких студий и индивидуальных разработчиков он просто надоел). Кроме того все указанные игры вышли в период с 88 по 92 год и тогда других технологий просто не было, воссоздать хочется ощущения, а не графику.

Поэтому основным моим занятием последние недели был отбор анимаций и их адаптация и настройка для проекта (до того как меня будет устраивать еще далеко, но зацикливаться на анимации лучше буду когда будет готова хотяб 70% того, что хотел ).

Управление делаю максимально консольным (привет NES), то есть никаких мышей, зажимная нескольких клавиш для бега (аля популярная Shift+Space для бега). Только кнопки вперед-назад, удар и двойное нажатие вперед/назад для бега.

Более-менее готовы движения для боевки, полировать можно еще очень долго, но пока дополнительную полировку решил отложить на окончание

На данный момент более-менее готова механика боя, в ближайших планах - добавить интеллект (как вы наверное заметили на гифке - пока враги просто стоят истуканами) для врагов, сделать ограничения для камеры (чтобы не дать игроку выйти за пределы какой-либо области пока он всех не победил) и сделать небольшой уровень, чтобы можно было посмотреть как все это вместе будет выглядеть.

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

На этом всем спасибо и удачи 😉

2727
21 комментарий

Комментарий недоступен

8
Ответить

Благодарю. Не подумал, что так можно сделать 😊

Ответить

Боёвка выглядит сочно. Правильно сделал, что засунул гифку в превью, сразу цепляет внимание. Жду демо :)

Кстати, Pro подписка на юнити нужна только для команд (фичи в облаке, статистика, интеграции куда попало). Все фичи, непосредственно связанные с разработкой игры, доступны в бесплатной версии.
Но некоторый функционал действительно недоступен из коробки. Например, мне сейчас пришлось откопать плагин RealtimeCSG, который я покупал года два назад, потому что я замучался возиться с пробилдером. (Пробилдер это официальный редактор уровней, который тоже подключается как плагин). Про дефолтный редактор вообще молчу, он почти ничего не умеет.
менее user friedly чем, например UnityА вот тут в точку. Жопа горит каждый раз, когда пробую освоить. Юнити же осваивается за 2 видоса с ютуба, дальше можно тупо в документацию по конкретным фичам смотреть.

2
Ответить

Благодарю, за совет с гифкой спасибо Воистину Хлориду, сам не знал, что можно самому указать картинку. А демо, обязательно выложу как только добавлю что-нибудь кроме статичных объектов, то есть хотя бы научу врагов ходить 😄
Кстати UE тоже не особо сложно осваивать. Хотя формат видео я не очень люблю, очень уж тяжело поиск организовать.

Ответить

Боёвка крутая! Даже со стоящими манекенами смотрится уже весьма бодро!

1
Ответить

Благодарю. Самому кажется, что могу сделать лучше и прямо руки чешутся , но уже нужно двигать манекены 😀

Ответить

Отличный материал! На поляне бит-ем-апов никогда не было слишком тесно. Предлагаю название для проекта: Сomplex Fracture. Игра внешне напоминает Shadow Complex и про переломы.

1
Ответить