Инди
Tim Melnikov
654

Back To Human: Perfect Soldier - Дневник разработчика #3 | Первые шаги ИИ и механика стрельбы игрока

Всем привет! Это очередная запись из дневника разработчика по игре Back To Human: Perfect Soldier. На этот раз формат только текстовый, так как для видео пока что маловато материалов да и времени его делать совсем нету. У меня сейчас появилось много музыкальной работы, из-за чего за последние две недели с трудом можно натянуть 3-4 дня разработки игры, но и это тоже хорошо!

В закладки
Слушать

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

Пришлось отказаться от стандартного метода поиска пути и перемещения нпц, который предлагает юнити, потому что он связан с запеканием карты, по которой можно ходить, а так как у меня будут разрушаемые домики, то и карта постоянно меняется, поэтому пришлось сделать свой алгоритм перемещений нпц. Когда-то давным-давно я по каким-то скидкам купил ассет, который делает процедурную анимацию ходьбы. Для человека или какого-то животного, кроме, пожалуй, какого-нибудь фэнтезийного паука, это вряд ли подойдёт, а вот для робота самое то. Удобство использования здесь в первую очередь в том, что мне не пришлось использовать анимации и смешивать их. Он ходит сам в ту сторону, в которую ты ему скажешь, поворачиваясь при этом в тобой заданную сторону, и не нужно использовать никакие анимации стрейфов и т.п. Пусть где-то это пока что выглядит немного странно, но меня это на данном этапе устраивает. Есть и ещё один плюс такой системы - при столкновении с игроком он не игнорирует его, а отклоняется, это происходит из-за того, что игрок просто его толкает, а физика уже дальше все делает сама.

В итоге я сэкономил кучу времени на анимировании всего этого. Если честно, то анимации столкновения с игроком, например, думаю вообще бы не было.

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

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

Кстати, при приседании мы находимся выше, чем при подкате, в связи с чем если у нас в локации будет совсем низкая лазейка, то в неё можно будет пролезть только при помощи подката.

Ещё при виде от третьего лица есть возможность поменять вид справа налево. Это удобно, если нужно скрытно посмотреть, что за углом.

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

Ну, дальше я уже только по мелочи делал, например немного настроил анимации перемещения персонажа, чтобы движение было более плавным, настраивал камеру и т.д. Ну а до обучения стрельбе нашего нпц дело пока что так и не дошло:) так что это будет уже в следующем выпуске девлога.

Что ж, всем спасибо за интерес! До новых записей и всем удачи!

{ "author_name": "Tim Melnikov", "author_type": "self", "tags": [], "comments": 23, "likes": 31, "favorites": 23, "is_advertisement": false, "subsite_label": "indie", "id": 183055, "is_wide": false, "is_ugc": true, "date": "Mon, 03 Aug 2020 17:23:07 +0300", "is_special": false }
Объявление на DTF
0
23 комментария
Популярные
По порядку
Написать комментарий...
3

Что-то я изначально подумал, что это не Unity, а UE4

Ответить
3

Есть такое, мене так показалось из за бликов металла и стен) 

Ответить
1

Почему? Просто интересно, так как для меня немного больная тема конкуренции этих двух движков.

Ответить
6

Все из-за постэффектов.
В анреале они по умолчанию включены - блум и моушн блюр.
В юнити по умолчанию - отключены.
Тем, что ты настроил постэффекты, SSR и AO вот и сбивает с толку.

Ответить
0

Только хотел написать что-то в духе "ну почему никто не выключает этот ужасный motion blur по умолчанию в UE4", а тут оказывается кто-то его специально включил в Unity...

Ответить
1

А почему конкуренция движков для тебя больная тема?

Ответить
1

Потому что анрил за последнее время очень много всего анонсировал и сделал, везде только о нем и слышу и очень многие студии, создающие ААА игры выбирают его для своих проектов. В то время как юнька сидит довольно тихо. Плюс я немного сам по пощупал UE, полазил по их маркетплейсу и выяснил, что у них в базе за бесплатно есть уже очень много из чего можно собрать неплохой проект с прекрасной графикой, анимациями, плавным управлением и т.д. у юнити же большую часть либо надо покупать либо пилить самому. Нет, я всем доволен на данный момент и юнька меня устраивает, я её неплохо знаю и т.д. но меня больше беспокоит то, что в ответ на анонс анрила 5 они пока ничего не дали. Я знаю про некую систему Dots, кто то говорит что это спасение в плане оптимизации, но я пока не знаю как с ней работать. И очень надеюсь, что ближе к выходу пятого UE юнитеки смогут дать нам что то аналогичное системе nanite. Потому что проще будет изучить анрил, чем создавать кучу лодов и так мучиться с оптимизацией. Хотя, кончено, ещё надо смотреть как это все работает в живую. Просто уж больно сильно привлекает возможность кидать модельку в игру прямо из ZBrush, безо всяких реторологий и т.п.

Ответить
1

А, да, понимаю твои терзания, я работаю на Unreal и полностью доволен. Действительно в анриал вкладываются огромные деньги и развивается он просто стремительно, чего стоит только выкуп Quixel, за это Epic Games огромное спасибо. Еще приятно слышать человека который не просто тупо отстаивает свой движок, критикуя конкурента, а объективно сравнивает и ищет плюсы и там и там. 
Когда задавал вопрос, думал, что ты из тех кто ведет слепую и яростную войну движков, отстаивая свой и критикуя конкурента. Я считаю оба движка хороши по своему. Я не работал в Unity, но кажется там есть одна фича, которой как мне кажется нет в Unreal, чего мне лично очень не хватает. Там, кажется можно производить любые изменения параметров чего угодно непосредственно в запущенном превью, что называется в реальном времени. Поправь меня если я не прав, но я вроде видел такое. Может и в Unreal что-то подобное есть, я просто не нашел, может это расширение для движка должно быть, фиг знает. Но мне прямо очень это бы пригодилось, когда например настраиваешь положение камеры по миллиметру, и приходится туда-сюда каждый раз мыкаться запускать превью.

Ответить
1

Интересно, я не знал что у UE так. Да, кончено, в unity можно двигать все и менять прямо во время выполнения в окне редактора, только после выхода из рантайма он не сохраняет изменения, хотя, можно закодить и так, что бы сохранял, но я так ещё не делал. Я просто что то настраиваю, запоминаю параметры и потом вбиваю их без рантайма. Единственное, скрипты кончено лучше не трогать по время выполнения сценария, хотя, на последних версиях не знаю точно, я не тестил. Но это и не нужно. Вообще, не знаю, мне кажется если поискать, то можно найти какое то решение и для UE. В крайнем случае, мне кажется проще сделать себе инструмент который будет по нажатию кнопок двигать и крутить объект во время игры и можно будет все настроить, запомнить и потом просто скопировать в редактор. А такой скрипт или как оно называется на блюпринтах, кидать на тот объект, которой нужно настроить.

Ответить
1

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

Просто в Simulate режиме запускаешь и можно так делать, всё так же можно двигать(только статик объекты в параметрах переделать в Movable для этого) и менять параметры.

И камеры тоже можно там подвинуть(только их через outliner придётся искать), но это если она прям на сцене, а вот если внутри эктора, то хз

п.с. соответственно после выхода из режима он так же как и в Юньке эти сохранения не сохраняет)

Ответить
0

Про Simulate я знаю. Вот камера да, внутри Character объекта, или к примеру сокет с пистолетом подвигать в процессе игры, когда стреляешь и смотришь отдачу и все прочее. Я просто у Shimoro видел как он на Юнити игру свою пилил, там он отдачу пушки крутил в реальном времени на превью, кажется.

Ответить
0

Я, может, уже поздно, т.к. сообщение написано давно, и не уверен, что до конца вкурил проблему, но попробуйте f8 ткнуть в рантайме. Движок должен "отпустить" игровую камеру и перейти в камеру разработчика прямо в рантайме. После чего вы можете ставить на паузу, если надо, игру, двигать болванчиков, камеру, как нужно. Копировать трансформ, а потом вставлять до рантайма. Попробуйте.
И извините, если не в тему и херню написал.

Ответить
1

Чертовски интересно, если в следующий раз сделаешь гифки без куска интерфейса движка и вообще отличительных знаков\гизмоса, будут вопросы про НА КАКОМ ДВИЖКЕ ПИЛИШЬ?!

Ответить
0

Я попробую:D
Если только во первых не забуду, а во вторых это не помешает мне что то показать.

Ответить
1

Уже за меня и ответили)

Ответить
1

Ха, тоже так подумал)

Ответить
1

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

Ответить
1

Енджисты в треде

Ответить
3

Узнаю прицел и механики, вроде переключения вида. Это Third Person Controller Template - by Invector?

Ответить
3

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

Ответить
1

Клево и весьма недурно! Особенно хорошо смотрятся подкат и бег по стенам!

Ответить
1

А нарративная составляющая в проекте планируется?

Ответить
0

Да, обязательно. Но в более менее упрощённом виде. Только как основная завязка и объяснение вообще чем мы занимаемся и почему. Но конкретного сюжета на каждую миссию пока не планируется.

Ответить
{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }