Конечно, всегда можно сказать “да вот у меня элементарнейшее поведение, там нечего выделываться с ИИшными фреймворками” или “у меня жанр Idle, там мобы просто выполняют последовательность действий”. Но давайте вспомним цикл жизни практически любой игры. Да, мы делаем сначала core-фичи, только основной набор действий для мобов. Но как долго это длится? Как долго наши мобы из айдлеров не начинают менять поведение на ходу. Например, когда не могут что-то выполнить или когда просто хотят порадоваться просмотренной рекламке?
Для ЛЛ:
пидр сверху боится что его заменит ИИ
Комментарий недоступен
В такие моменты мы и понимаем, насколько были ленивы, выбрав машину состояний. Ведь у нее квадратичная сложность увеличения количества поведений
Ну это же не совсем так. В данном случае теоретическая сложность не равно практическая сложность. Уж не знаю как у юнитистов, но вообще концепция стейт машины сама по себе не обязывает тебя декларировать переход из каждого состояния в каждое. Переходы можно всё ещё делать но как бы «в сырую» перезаписывая состояние, не описывая никаких специальных переходов. Так что стрелочки – они как бы есть, ведь ты всё ещё можешь делать переход из состояния в состояние. Но стрелочки как бы «невидимые» – потому что переход ты как-либо специально не декларируешь.
В итоге ты получаешь и гибкость, и компактность. У тебя нету квадратичной зависимости.
Но у юнитистов может быть и есть, не удивлюсь если юнитисты ебашут переходы на все случаи жизни – которые им нужны и не нужны, бездумно.
Ну и конечно отмечу, что использовать переходы напрямую перезаписывая состояние, это может быть не совсем по правилам написания стейт машин, и кто-то может даже сказать «говнокод». Ну если говнокод выглядит лучше и работает лучше, то может быть это не говнокод. Плохой программист учится правилам чтобы им следовать. Хороший программист учится правилам чтобы понимать когда их можно, а может быть даже нужно, нарушать.
Ну а если все-таки захочется полноценный переход какой-то иметь. Ну тогда добавь в стейт машину. Тогда это сложность не искусственная математическая, а реальная практическая. Это лишь значит что игра у тебя действительно комплексная, требующая сложной логики.
Вы пишете так, словно это невероятно повсеместная проблема, но BT используются для игрового ИИ очень давно и очень везде, включая маленькие студии и даже соло-проекты, включая обскурные и не то чтобы сильно успешные коммерчески. Я что-то не знаю и проблема куда масштабнее?
Сегодня я, наконец, расскажу
НАКОНЕЦ-ТО БЛЯТЬ, как же долго я этого ждал, пиздец просто
Комментарий недоступен
PS, ну ок, стейт машина, по твоему мнению, такое себе. А какие есть альтернативы? BT чем-то лучше?