20 июля 2020 20.07.20 2 990

Hello Ugly World — блог разработчика

Здравствуйте!

На протяжении последних восьми месяцев я усилено изучал прекрасно всем нам известный движок — Unreal Engine 4. Изучение проходило в контексте разработки одной конкретной игры — я пытался воспроизвести геймплей Hotline Miami (рабочее название игры FUBAR).

Что реализовано:

  1. Игрок может: 
    • Подобрать оружие.
    • Использовать оружие.
    • Бросить оружие — при по попадании по противнику, тот отрубится. Летит оружие по физике и способно вырубить противника, пока не коснётся чего-либо.
    • Нейтрализовать противника ударом двери.
    • Спец способность (демонстрация ниже в  видео)

  2. Противники (боты):
    • Начальные состояния — стоит неподвижно, патрулирует по указанным точкам, рандомная ходьба, преследует героя.
    • Реакция на трупы союзников — это многих напрягало в HM. если бот видит труп «друга», то он подбежит к нему и переходит в состояние «В тревоге».
    • Режим «В тревоге» — скорость перемещения бота приравнивается скорости перемещения героя. Увеличивается скорость реакции. Режим активируется, когда бот видит противника, видит труп союзника, слышит выстрел или просыпается после отключки.
    • Реакция на громкие звуки (выстрелы, взрывы) — боты бегут на звук.
    • Реакция на союзников — если бот видит встревоженного друга, то он переходит в режим «Тревоги». Если бот видит друга, который бежит в атаку, то он тоже бежит атаковать того же противника.
    • Разделение на команды — боты могут сражаться друг с другом, а не только с героем — реализована простенькая система команд.
    • Умеют искать оружие — если бот решит атаковать, а оружия в руках не будет, то сначала он побежит к ближайшему и подберёт его.

Довольно скоро (в апреле 2020 года) пришло осознание, что доделать игру сейчас я не смогу, так как не умею анимировать и моделировать. Было решено поубавить аппетит и сделать что-то попроще, например, мини-игру из Nier: automata — простейшую стрелялку видом сверху, в стиле lowpoly и не требующую анимации.

В спустя несколько дней удаления всего лишнего получилось что-то вроде этого:

А спустя ещё три месяца имею следующее:

Что появилось:

  1. Открытие уровней и сохранение прогресса
  2. Пользовательский интерфейс
  3. Простенькая система переключения музыки — при рестарте не прерывается, а продолжает играть. Если в следующем уровне должна играть та же музыка, что и в предыдущем, то она также не прервётся.
  4. Аптечки
  5. Собственные модельки и спецэффекты.

Что изменено:

  1. Упрощены боты — в какой-то момент научил их обходить друг друга, но в процессе тестирования игры понял, что они так только сильнее путаются и мешают друг другу (возможно к этому потом вернусь), поэтому сейчас они свободно проходят насквозь. А ещё их теперь нельзя вырубить дверью.
  2. Оружие нельзя бросить, можно только сменить.
  3. Пропало оружие ближнего боя, но появилось лучевое.

Игру назвал Hello Ugly World (HUW), как "hello world". Думал, что эту сумею довести до конца и выпустить, но и тут возникли сложности...
Когда все механики были более-менее доработаны, противники и вооружение настроены, я приступил к проектированию первого уровня.

На данный момент HUW в целом завершена, всё что мне осталось, это шлифовка геймплея и наполнение контентом (звуки, музыка, модельки и уровни). Моделировать простенькие ассеты я научился (их вы и видите в последнем видео). Звуки выстрелов, в силу визуального стиля, также можно и самому сделать (те, что уже есть -  это один звук из одного музыкального трэка, тональность которого меняется самим движком отдельно для каждой пушки). Музыкальным талантом не обладаю, и думаю сразу заметно — те трэки, что Вы могли услышать, были написаны с помощью https://beepbox.co. Вопрос с музыкой планировал решить заказом у какого-нибудь малоизвестного исполнителя DarkWave или что-то похожее.
А вот с уровнями не задалось, и проблема в большей степени техническая… копм не тянет освещение. При этом я полностью отказался от текстур, и просто крашу модели в какой-нибудь цвет.

Процессор — HexaCore AMD Phenom II X6, 2920 MHz Видеокарта — NVIDIA GeForce GTS 450 (1 ГБ)

Записывать демку пришлось в разрешении 1280х720 и без динамических теней.

Если кому надо — ссылочка на архив с игрой

Планы на будущее:

  • Переделать модельки ботов в Blender — первое время все модели создавал в самом движке, что было большой ошибкой.
  • Кампания - в какой-то момент появилась идея сделать полноценную кампанию с постепенным переходом от понятных локаций к максимально абстрактным конструкциям. В демке можно заметить, что некоторые боты различаются по цветам: черно-зелёные, бело-синие и черно-красные - это условные фракции, и каждый герой относился бы к одной из них. А «сюжет» сводился бы к простой цикличности — каждый следующий герой убивает предыдущего.
  • Геймплей -в целом подкорректировать управление и стрельбу (что-то с ней не так… возможно из-за фризов на моём компе). Добавить объекты взаимодействия (лифт, ловушки, турели).

Лучшие комментарии

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

Да, юзаю navmesh и aimoveto. Чтобы они не толпились наследовал aicontroller от detouraicontroller — он умеет обходить других ботов. Ну и просто стоит настроить агенты навмеша в настройках проекта.

Извиняюсь за долгий ответ, надеюсь это кому-то поможет

Читай также