{"id":3885,"url":"\/distributions\/3885\/click?bit=1&hash=0dab7d0f7ad7dbe279741e57cb131cd67b3aa59228fa8f46d70a06c610a00e26","title":"\u0418\u0437 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0420\u0416\u0414 \u0432 \u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440\u044b","buttonText":"","imageUuid":"","isPaidAndBannersEnabled":false}
Инди
Sergey Pekar

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

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

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

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

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

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

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

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

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

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

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

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

0
21 комментарий
Написать комментарий...
Сомнительный парфюмер

Лучше свою гифку выведи в ленту, а не скрин чужой игры) 😉

А так выглядит прикольно

Ответить
Развернуть ветку
Sergey Pekar
Автор

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

Ответить
Развернуть ветку
Fake

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

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

менее user friedly чем, например Unity

А вот тут в точку. Жопа горит каждый раз, когда пробую освоить. Юнити же осваивается за 2 видоса с ютуба, дальше можно тупо в документацию по конкретным фичам смотреть.

Ответить
Развернуть ветку
Sergey Pekar
Автор

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

Ответить
Развернуть ветку
Yurij Shishkin

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

Ответить
Развернуть ветку
Sergey Pekar
Автор

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

Ответить
Развернуть ветку
Yurij Shishkin

Не нужно ничего двигать. Удары с разворота с выбиванием с "болванчика" площадки, просто "ОГОНЬ!".
Сделайте мини-мортал комбат на каждой платформе (он уже и так есть). В динамике боя вообще никто не обратит внимание, двигается манекен или нет. Главное, чтобы сдачи давал, а то сейчас похоже на безнаказанное избиение ИИ с мозгом таракана, таракана, которому удалили добрую половину этого мозга ))

Ответить
Развернуть ветку
Sergey Pekar
Автор

Так в под «двигать» я подразумеваю наделение NPC чем-то вроде интеллекта, чтобы они могли хотя бы попытаться сдачи дать, а не стоять истуканами 😁

Ответить
Развернуть ветку
Alexis Antonov

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

Ответить
Развернуть ветку
Sergey Pekar
Автор

Благодарю. Название действительно отличное 👍

Ответить
Развернуть ветку
Александр Дымов
так как автоматических средств замены и выделения фрагмента кода в метод и других приятных плюшек, предоставляемых любой современной IDE я не нашел

Выделяешь участок кода, а дальше collapse to function / macros / node. Два движения короче.

Ответить
Развернуть ветку
Sergey Pekar
Автор

Благодарю. Эту функцию я сразу нашёл, а по поводу вынесения метода (функции) или переменной в базовый класс есть какая-нибудь функциональность?

Ответить
Развернуть ветку
Александр Дымов

Всмысле функцию скопировать? Тут скорее всего только внутрянку перенести. Или компонент создать. Или создать библиотеку функций. При копировании необьявленные в классе переменные сохранят имена, но будут помечены серым. Там нужно будет выделить серую переменную нажать правой клавишей и там будет надпись "создать переменную вашего типа".
Если я неправильно понял, переформулируй вопрос.

Ответить
Развернуть ветку
Леха

Геймплей выглядит бодро на гифке! Хорошо что в 3д, пиксель арт уже действительно приелся в инди-проектах...
Спасибо за опыт перехода на UE4, в планах освоить этот движок. По отзывам для 3D игр лучшее решение, поскольку не требуется куча платных плагинов как в том же Unity.

Ответить
Развернуть ветку
Sergey Pekar
Автор

Всегда пожалуйста 😊. Жаль по Unity вам ничего не могу сказать, так кроме работы простейшими фигурами в 3D не имею опыта.

Ответить
Развернуть ветку
Аккаунт удален

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

Ответить
Развернуть ветку
Mahoko

Прикольно. С меня уважение.

Ответить
Развернуть ветку
Sergey Pekar
Автор

Благодарю 🙏

Ответить
Развернуть ветку
Sergey Pekar
Автор

Del

Ответить
Развернуть ветку
Flash

Задумка интересная. Желаю удачи)

Ответить
Развернуть ветку
Sergey Pekar
Автор

Благодарю ☺️

Ответить
Развернуть ветку
Читать все 21 комментарий
null