"Гениальные двери: как кусок дерева с петлями доводит ИИ до истерики"
Вступление (или «За что ненавидят двери все, кто их программирует»)
Ах, двери! Казалось бы, что может быть проще? Деревяшка на петлях, которая открывается–закрывается. Но нет — в мире игрового ИИ это не дверь, а настоящий квест на выживание. Особенно если это не просто дверь, а, скажем, распашная дверь (читай: "кошмар разработчика"). А если добавить лифты? Поздравляю, ваш ИИ теперь официально в аду.
В этой статье мы с грустной иронией разберём, почему двери — это худшее, что случалось с игровым ИИ после патчей Day One, как мы (через боль) заставили их работать, и какие "гениальные" альтернативы можно придумать, чтобы не сойти с ума.
Почему двери — это проклятие для ИИ? (спойлер: потому что всё)
"Динамическая геометрия" (или "Навигационный меш больше не ваш друг")
Стены — статичны, пол — статичен, даже эти унылые вазы в углу не двигаются. Но двери? О нет, они должны шевелиться! И теперь ваш NavMesh, который строился с таким трудом, превращается в хаотичный пазл, который надо пересчитывать каждые полсекунды.
"Направление открывания" (или "Почему ИИ всегда толкает дверь не туда")
Казалось бы, логика проста: если дверь открывается от себя, то толкать её на себя — плохая идея. Но ваш ИИ так не думает. Он будет биться лбом в дверь, как пьяный студент в закрытый ночной клуб, пока не сломает физику или вашу психику.
"Конфликты с физикой" (или "Добро пожаловать в дверной ад")
Дверь задевает персонажа? Отлично! Теперь у вас есть:
Персонаж, который дрожит, как в лихорадке.
Дверь, застрявшая между измерениями.
NPC, который навсегда слился с дверью в экзистенциальном объятии.
Как мы "решили" проблему (спойлер: костылями)
"Двери теперь открываются от игрока (потому что ИИ не способен на большее)"
Чтобы избежать сцен, достойных черной комедии, мы просто заставили двери отъезжать в противоположную сторону от того, кто к ним подходит. Да, это лишает их "реализма", но, как показывает практика, реализм — это когда ИИ не застревает в дверном проёме навеки.
"Невидимая геометрия (или 'Давайте просто нарисуем ещё один хитбокс, никто не заметит')"
Наш гениальный план:
• Добавляем коллизии, которых нет.
• Говорим NavMesh'у, что они есть.
• Надеемся, что игроки не спросят, почему их персонаж обходит "невидимую стену" рядом с дверью.
"Советы" по реализации дверей (читай: как не сойти с ума)
"Используйте раздвижные двери (потому что распашные — зло)"
Шутеры? Гоночные игры? Да что угодно! Раздвижные двери — это как читы в реальной жизни: они не создают проблем, потому что им всё равно.
"Оптимизируйте навигацию (или 'Просто сделайте вид, что оптимизировали')"
Если вам очень хочется распашных дверей — хотя бы притворитесь, что продумали, как NavMesh будет обновляться. (Спойлер: он всё равно сломается.)
"Тестируйте крайние случаи (и плачьте)"
Обязательно проверьте:
Что будет, если 10 NPC попробуют пройти в одну дверь одновременно (спойлер: это будет "человеческий муравейник").
Что произойдёт, если дверь застрянет между ящиком и NPC (правильный ответ: "физика сдаётся").
Как ИИ отреагирует, если дверь внезапно исчезнет (подсказка: очень плохо).
Заключение (или "Просто уберите двери из игры")
Двери — это маленький, но исключительно болезненный элемент геймдизайна. Если вы хотите сохранить свои нервы — делайте их максимально примитивными. А лучше вообще замените их шторами. Или порталами. Или просто дыркой в стене.
Потому что, в конце концов, лучшая дверь — это отсутствие двери.(Но если вы всё же решили их оставить… наши соболезнования.)
"Дверные" результаты с видео и картиночками в телеге...