Аннотация
После прочтения статьи «Непредсказуемый, но адекватный бот в играх» у меня появилось небольшое раздражение и желание написать мини-топик в ответ. В нём я хочу провести краткий анализ статьи и показать несостоятельность подходов для решения задачи написания искусственного интеллекта (ИИ) для ботов в 2D-шутере.
Очень краткое введение в проблему ИИ
Задача написания ИИ в области разработки игр является достаточно сложной. Каждый программист или команда раз её решает по-своему. Она может быть решена как удовлетворительно, так и неудовлетворительно. Удовлетворительно — это когда игроку интересно играть с ботами, иначе — неудовлетворительно. Т. е. исходя из всего того, что я выше понаговорил, можно сделать вывод: разработчик стремится сделать такой ИИ, с которым было бы интересно играть. Обратите внимание, что здесь нет слова ни про «адекватность», ни про «умность». Это вспомогательные задачи, достижение которых помогает нам сделать ИИ интереснее для игрока. Именно с этой точки и нужно оценивать качество ИИ.
Как сделать ИИ интересным
Эту проблему тоже каждый решает по-своему, но всё-таки можно вывести некоторые закономерности:
- ИИ не должен нарушать правила игрового мира
Здесь всё просто: противник должен уметь делать всё тоже самое, что и игрок. Если это шутер, то этими правилами может быть следующее: враги не должны видеть сквозь стенки; их ракеты не должны «корректировать курс» во время полёта (если это не специальные ракеты, конечно); они не должны проходить сквозь стенки; они должны передвигаться теми же самыми командами, что и игрок (вперёд, назад, вправо, влево, прыжок). - Противник не должен быть слабым
Чтобы победить противника, игроку нужно применять экстра-усилия. Ассиметричные правила и неравность условий — это норма. Нет ничего плохо в том, что враг будет расходовать меньше патронов на один выстрел, будем иметь численного превосходство. Это всё позволяет сделать игрушку более интересной.
Анализ статьи
Самый большой минус статьи — это отсутствие проделанной сопутствующей работы. Без этого статья не несёт никакой практической пользы. Описание моделей поведения на естественном языке плохо ложатся на алгоритмический язык (во всяком случае в моей голове). Нет чёткой формализации, когда одна модель поведения будет переходить в другую.
На самом деле я не могу пройтись по всем всем пунктам ИИ и сказать хорошие они и плохие. Дать их анализ и покзать достоинства должен автор. Я могу лишь сказать, что мне крайне неочевидно станет ли ИИ интереснее для игрока. До тех пор пока автор не реализует ИИ и не покажете его преимущества, то это всё будет его фрейдистскими фантазиями.
А вообще золотое правило — чем большая реалистичность, тем пользователи меньше прощают огрехи в чем-либо. Очень будет неприятно, если подобный «умный» ИИ будет ещё более слабый, чем «тупой».
Предложение автору
Все люди ошибаются. И наивно было бы мне полагать, что я не могу ошибиться по этому вопросу. Поэтому я могу вам предложить следующее: я напишу небольшой прототипчик игры на Unity3D или на Shiva3D (на чем вам удобнее), а вы реализуете для этого прототипа свой ИИ.
Автор: AlexanderMSG