Есть очень интересная статья по этому вопросу о Гамасутре: интеллектуальные ошибки: как включить глупость в ваш код AI , написанную Миком Вестом.
Эта статья рассказывает об искусстве игры в пул. При реализации такого ИИ довольно легко заставить его забивать мяч при каждом выстреле. Упрощенный способ сделать ИИ менее «умным» состоит в том, чтобы, как было предложено в других ответах, добавить в расчет случайный фактор, заставляя ИИ больше пропускать.
Но есть два основных недостатка такого подхода. Во-первых, это непредсказуемо. Для игрока, играющего в «легком» режиме, недопустимо, чтобы ИИ становился «счастливчиком». Что если ваш случайный фактор заставит ИИ сделать еще лучший удар, нанести удар по более ценному мячу или сделать комбо? Вы не знаете, что произойдет, и удача не должна быть опцией для ИИ в легком режиме.
Другой недостаток заключается в том, что игрок будет пытаться определить закономерности поведения ИИ. И с простым случайным фактором нет никакой картины. Но это не значит, что игрок не увидит никакого паттерна, даже наоборот. Как только ИИ повезет, в его поведении игрок увидит стратегию. В этой статье игроки жалуются на то, что ИИ играет стратегию позиции. Когда есть случайный фактор в угловой точности .
С моей точки зрения, после прочтения этой потрясающей статьи, неидеальный ИИ никогда не должен использовать рандомизацию как фактор упрощения. Это совсем наоборот. Более легкий ИИ должен быть умнее, но пытаться помочь игроку.
В примере с игрой «Пул» в статье лучшим вариантом для реализации ИИ в «легком режиме» было удаление всех случайных факторов и добавление стратегии позиционирования. ИИ будет пытаться бить по мячу, чтобы подготовить легкий и потрясающий удар для игрока .
Таким образом, игрок будет думать, что ему повезло. И это то, что вы ожидаете от игры, когда в нее легко играть.
Ключевая концепция состоит в том, чтобы не давать NPC "совершенное знание".
Я уверен, что будет дано гораздо больше примеров, возможно, вы могли бы рассказать нам о своей игре, и мы можем получить более конкретную информацию :-)
источник
Один из быстрых способов сделать идеальный боевой ИИ - заставить его принимать неправильные решения, добавляя некоторый «шум» к его входам или выходам. Под шумом я подразумеваю некоторые случайные факторы.
Вот небольшой пример для вывода:
Вот несколько идей для ввода:
Одной очевидной вещью, которую нужно принять во внимание, является скорость ИИ. В большинстве игр ИИ могут реагировать НАМНОГО быстрее, чем люди (особенно в бою), и выполнять многозадачность (это очень заметно в играх RTS). Таким образом, вы должны действовать в соответствии с этим, поддерживая ИИ немного медленным (возможно, адаптивно) и ограничивая количество действий, которые он может выполнять в определенный промежуток времени (т.е. одно действие каждые полсекунды).
Надеюсь, что это помогает и удачи!
источник
Трудно дать прямо полезный ответ, не зная, что именно вы пытаетесь сделать.
У меня есть две вещи на эту тему, которые могут вам помочь.
Первое (и это, безусловно, самое важное): если вы пытаетесь заставить врага чувствовать себя более интересным и человечным, ваша тактика ведения боя не имеет значения. Хитрость в том, чтобы заставить игроков «верить», что враг жив, состоит в том, чтобы использовать анимацию, звуки и мелкие детали, чтобы подразумевать поведение человека. Идеальный ИИ может пройти за угол, увидеть игрока и выстрелить. ИИ-человек может пройти за угол, увидеть игрока, удивленно взглянуть ему в лицо, выкрикнуть в тревоге и выстрелить. Первый кажется роботизированным. Второй кажется человеком. Оба используют идентичный ИИ во всех отношениях, кроме вставки анимации непосредственно перед стрельбой (или, чтобы сохранить тактическое поведение во время стрельбы).
Во-вторых, избегайте рандомизации. Игроки не ценят это так сильно, как дизайнеры хотят думать, что они будут. Игроки не видят, что «компьютер сгенерировал 1 из 100, а затем 5, 3 и 4, поэтому факторы ошибок для последних четырех выстрелов составляли только 1%, 5%, 3% и 4%, и это почему ты умер за полсекунды в этом раунде ". Игроки просто видят врагов, которые иногда дико скучают, а другие время от времени бьют их без видимой причины, что невероятно расстраивает. Хороший игровой дизайн - это, в основном, создание шаблонов, которые могут сделать люди-игроки.наблюдать, учиться и побеждать, и добиваться успеха игрока, основываясь на его собственных суждениях, умениях и интуиции, а не на том, повезло ли игроку. Стремление к рандомизации исходит из опыта настольных игр и азартных игр, которые невероятно отличаются от видеоигр (а то, что работает в одной среде, часто не имеет смысла в другой).
источник
Я помню, что на нашем курсе ИИ в колледже была тема о том, как сделать ИИ более «человеческим» и менее совершенным. Это было много лет назад, поэтому я просто запомнил несколько пулевых точек в голове.
Конечно, это всего лишь общие советы, которые следует изучить и протестировать для каждого случая, и они действительно могут сделать ваш ИИ еще более искусственным, чем предполагалось. Однако я думаю, что они являются хорошей отправной точкой.
источник
Я только что увидел это всплывающее окно и хотел поделиться идеей, которую я использовал в прошлом.
Допустим, у персонажа есть три хода, и каждый из них забит, более высокий балл - лучший ход. (Другие ответы говорят о добавлении шума для создания этой оценки.)
Суммируйте общее количество баллов (100)
Возьмите показатель интеллекта персонажа из максимально возможного значения для этого показателя (скажем, 60 из 100).
Создайте случайное число между 0 (или некоторым другим полом) и коэффициентом интеллекта (0,6), умножьте на общее количество баллов (100). В нашем примере, скажем, результат 45.
Теперь вы начинаете вычитать плохие ходы из этого значения, пока не достигнете нуля. (Вычтите по порядку.)
Сначала мы рассмотрим заклинание льда, которое набрало 20. 45 - 20 = 25. Это выше нуля, поэтому мы выбрасываем заклинание льда.
Во-вторых, посмотрите на Атаку с мечом, стоимостью 30 очков. 25 - 30 = -5. Мы достигли порога, поэтому выбираем Атаку с помощью действия меча.
В этой системе персонаж с низким интеллектом не выберет лучший ход. И персонаж с высоким интеллектом часто выбирает лучший ход. (В этом примере персонаж с совершенным интеллектом выбирает лучший ход в 50% случаев.)
Добавление механизма пола к случайному числу увеличит вероятность выбора лучших ходов.
источник