EN
grf
grf
6 subscribers

Обучаем Бабуляторов

Создание интеллекта монстров - одна из интересных задач в ремейках игр. Кто-то вооружается дизассемблерами и ищет в коде оригинальной игры такие процедуры. У меня другой метод - я просто изучаю логику поведения этих самых монстров в оригинальной игре  и потом делаю свои алгоримы на основе этих наблюдений. Если в итоге мои монстры ведут себя также как в оригинале - значит мне удалось разгадать задумку автора.
Первым делом я обучил Бабок и Зомби обнаруживать ямы и стены, это само собой. Затем стал смотреть, как они реагируют на Дейва. Зомби - самые простые в этом плане. Они бродят от стены к стене, ожидая появления Дейва на своей горизонтали или ниже. Если Дейв появился на их горизонтали - Зомби сразу же поворачиваются в его сторону и бредут к нему. Если на пути им вдруг встретилась яма или стена, то Зомби поворачивают назад и делают от 1 до 5 шагов в обратном направлении, уже не обращая внимания на Дейва. Иначе монстр просто зациклится в бесконечных поворотах у стены - "Дейв в переди! Блин, стена, разворот. Но Дейв на этом уровне, поворачиваем  к нему! Блин, стена..."
Изначально, кстати, я по привычке сделал обнаружение стены между Дейвом и монстром, чтобы монстр не реагировал на Дейва, если между ними стена. Но оказалось, что в оригинале монстры видят Дейва сквозь стены и реагируют на него. Бабки даже ножи кидают в такие стены. Пришлось процедуру выкинуть пока.
Бабки ведут себя гораздо хитрее, чем Зомби. Во-первых, они не приближаются к Дейву, если есть такая возможность, а поворачивают назад, отходят и потом уже кидают нож. Но могут и не кинуть, тут уже явно применен генератор случайных чисел. Пришлось подбирать подбирать подходящее значение порога и для генератора случайных чисел, чтобы Бабка не кидалась ножами как пулемет, но и не делала это раз в пятилетку. Во-вторых, Бабка не сразу реагирует на то, что Дейв появился на ее горизонтали. Она вполне может пройти шагов пять и не обернуться, даже если Дейв идет у нее за спиной. Но при встрече с препятствием Бабуляторы поступают также, как Зомби - поворачивают назад и делают случайное количество шагов.
Таким образом, в алгоритме есть коллизия - если Бабка находится слишком близко к стене и при этом слишком близко к Дейву, то она тоже может зациклиться в своих попытках и от Дейва отойти на расстояние броска, и от стены удалиться после разворота. В оригинале такое происходит - Бабка начинает вертеться вокруг Дейва бесконечно на одном месте. Не думаю, что это стоит копировать, поможем Бабуле разобраться в ситуации :)
На данный момент Бабки уже почти все делают как надо и даже делают движения броска. Осталось выдать им ножи...
avatar
Тоже приходилось реконструировать логику чужих игр для портов. И я тоже не люблю лезть в глубины чужого кода и пытаться там что-то понять - это конечно способ 100% верный, но очень утомительный и меня никак не вдохновляющий. Я тоже оцениваю логику визуально, и в этом деле очень помогает покадровый режим в эмуляторах, либо сильное замедление.
Show more replies
avatar
grf, в свои игровые разработки для PC тоже встраиваю покадровый режим, замедление, ускорение и скриншот. Всегда пригождается.
avatar
shiru8bit, я думаю, служебные клавиши встраивают все, это удобно для отладки - переключение текущего лабиринта, режим бессмертия и т.д.. А потом их находят любители копаться в чужом коде и публикуют как секретные коды :)

Subscription levels

Базовый

$ 1,38 per month
Просто поддержать.

Узнать больше

$ 2,76 per month
Для тех, кто хочет больше знать о том, какие проблемы возникают в ходе разработки и как в итоге они решились. 

Глобальная поддержка

$ 5,6 per month
Тут доступны всякие инсайды, планы для тех, кому очень интересно.
Go up