Как я учил ботов открывать двери

Всем привет, это October team у клавиатуры я Илья. Сегодня я решил поделиться, опытом работы с ИИ в Unreal Engine.

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

Ну начнем.

Мы разрабатываем хоррор. И в нем много механик связано с дверьми. Игрок может их отмыкать, замыкать, взламывать, открывать, приоткрывать и так далее.

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

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

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

- За тем ему нужно вычислить, что дверь та

- И если он ее открыл, не нужно пытаться ее снова открывать

Это больно, но пришлось использовать EQS (Environment Query System)

Для справки, это система, которая тестирует окружающую среду по условиям, которые мы ей задаем, и возвращает координату с самой выгодной позицией (не только).

Тест был простой:

- Отсекаем все точки, к которым не можем добраться

- Вычисляем путь игрока

- Ищем ближайшую дверь к игроку

- Ну и мелкие корректировки

Как видите, все значения за комнатой исключаются, а самое высокое у двери, которая ведет к выходу

Далее мы берем ближайшую к точке дверь, и передаем NPC на нее ссылку, и координаты.
Далее мы берем ближайшую к точке дверь, и передаем NPC на нее ссылку, и координаты.

Ну а потом его подхватывает логика самой двери. Удаляет из его памяти все воспоминании о ней, оставляя только легкое похмелье.)

И внимание вопрос, а чего трудно так? За чем вычислять нужную дверь. Бот наступил на триггер, и пошло поехало. Так я и думал, пока в игре не появились коридоры. Когда так много соблазнов не гнаться за игроком, бот обычно выбирает соблазны.)

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

Ну и игровую тематику мы не обходим стороной. Заходи, располагайся. Куштака любит тебя)

66
18 комментариев

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

4
Ответить

Ахах, да) Ну скоро будет видео подтверждение.

1
Ответить

Юзаем, просто наши двери не так просты) Но спасибо)

1
Ответить

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

2
Ответить

Я просто сам на эти грабли встал)
Оказывается нужно руками выбирать блоки, которые будут отображаться в посте в ленте

Ответить

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

1
Ответить