Бессонница: Игровой Искусственный Интеллект Настолько Искусственен (Видео)

Продолжаем тему процесса создания игры Insomnia, начатую со статьи Как мы перестали бояться Огра и начали делать на нем игру



О кумирах
Начну с того, что на старте проекта мы не планировали внедрять ИИ как таковой.

Несколько скриптовых сцен нам показались вполне достаточным дополнением к игре.

Планировалось сделать всех NPC абсолютно безмозглыми, выполняющими строго определенную, зацикленную последовательность действий.

Забавно было наблюдать, как NPC продолжал приветливо махать вам рукой, пока вы вставляли ему вторую обойму.

Прогулка по густонаселенной местности напоминала путешествие по саду каменных фигур.



Про жизнь
Но как обычно жизнь немного скорректировала наши планы.

Вместе с отказом от идеи делать исключительно ММО мы пришли к пониманию, что нам придется заняться разведкой.

Мы решили отказаться от жесткого планирования действий персонажей.

Вместо этого мы придумали систему, которая позволяет без значительных дополнительных усилий определить поведение практически каждого персонажа.

Мы решили приблизить процесс принятия решений к человеческому.



Тонкая душевная организация
Для начала общая схема:

Бессонница: игровой искусственный интеллект настолько искусственен (видео)

Основой ИИ являются «сознание» и «подсознание».

Такое название блоки получили из-за способа обработки информации.

«Подсознание» обрабатывает все события от датчиков и при необходимости отправляет события в «сознание».

По структуре она больше соответствует ассоциативной памяти.

Пример такой карты: * Ложитесь спать в полночь.

Низкий приоритет; * если свои воюют, то наблюдайте за процессом; *если побьют кого-то из своих, то защити его.

Приоритет средний; * если ты кого-то побил, подойди и выверни его карманы; *если играет музыка, то танцуйте.

Приоритет низкий; * если кто-то достанет оружие, попросите его спрятать; * если вы видите врага, бегите звать друзей на помощь и отправляйтесь в бой; * если свои зовут на помощь, иди туда, куда зовут; * если вы слышите шум, обернитесь и посмотрите, что происходит; * если вы видите брошенную гранату, убегайте от нее; * если вы видите, что недалеко от вас бросают гранату, подбегите и бросьте ее назад; * если к вам обратился игрок, предложите ему что-нибудь купить; * если к вам обратится обидевший вас игрок, не отвечайте ему; * если вы убегаете от кого-то и слышите позади себя звук шагов, то бегите дальше.

Эти команды передаются «сознанию».

Таких карт у перса может быть несколько; приоритет этих карт будет меняться в зависимости от его настроения/состояния.

Например, трусливый NPC может убежать от вас, но увидев своих, может набраться смелости и ответить вам.

«Подсознание» может меняться в зависимости от полученного опыта.

«Подсознание» будет не только у NPC, но и у Героя.

Например, непрокачанный герой может оказаться достаточно трусливым и просто сбежать в самый ответственный момент. Также у игрока будет возможность тем или иным образом тренировать своего персонажа.

«Сознание» отвечает за логику действий персонажа, пример: *напасть на кого-то * стрелять в кого-то или что-то, * отслеживать цель, * перезарядить оружие, * иди куда-нибудь * осмотрите сундук, * звать на помощь.

Это набор скриптов, которые напрямую управляют телом.

В отличие от подсознания активными могут быть только один или несколько совместимых, например, «Следовать за целью» и «Стрелять в кого-то или что-то».

Они также могут быть вложенными, например, «Осмотреть сундук» может вызвать «Идти куда-нибудь» (к сундуку), а «Выстрелить в кого-то или во что-то» может вызвать «Перезарядить оружие».

Также в случае с ГГ эти скрипты принимают команды от пользователя и могут действовать в соответствии с этими командами.



И запах, как собачий, и глаз, как орлиный
Датчики.

Визуальный датчик отслеживает объекты, окружающие NPC, проверяет их видимость и определяет их состояние.

Датчик шума определяет направление и тип шума, например, чтобы отреагировать на него.

NPC может услышать шум в коридоре и выйти проверить, что там происходит. Или, подкравшись к NPC сзади, вы можете раскрыться перед ним, начав перезаряжать свое оружие.

Датчик времени необходим для выполнения определенных запланированных действий.

Вставать в 9, идти на дежурство в 13:00, идти в бар в 9 вечера, ложиться спать в полночь.

Обычно действия, инициируемые этим датчиком, имеют низкий приоритет. Если NPC с кем-то дерется и ему нужно лечь спать, он, конечно, продолжит сражаться.

А когда он закончит работу, то с чистой совестью ляжет спать.

Датчик сообщений позволяет NPC обмениваться сообщениями, информировать других NPC об опасности и отдавать команды.

Теперь небольшой пример реализации ИИ.

Небольшой комментарий - в видео 4 персонажа.

Два солдата комитета и двое мародеров.

Солдаты комитета патрулируют территорию.

Обнаружив мародеров, они вступают в бой.

ИИ солдат достаточно линеен - увидел врага - зови своих и начинай уничтожать врага (Приоритет "Атака").

ИИ Мародера более гибок.

Когда мародеры понимают, что их обнаружили, лидер (в дорогих доспехах) отправляет вперед своего помощника (приоритеты «Осторожно», «Отправить дозорного в подозрительную точку»).

При этом сам он остается на месте (Приоритет «Осторожность»).

Но именно в этом случае ему не повезло.

Один из солдат первым увидел лидера и открыл по нему огонь.

Приспешник вступает в бой, но после смерти лидера приоритет «Страх» превышает приоритет «Атака» и приспешник решает сдаться.

Он выбрасывает оружие и прекращает сопротивление.

Но последняя пуля ставит точку в его бесславной карьере.

Спасибо всем.

Автор: Вова69 В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

Какую следующую статью на эту тему вы хотите увидеть? 23,37% сеть 86 26,9% логика квестов 99 12,23% скриптинг 45 5,71% анимация 21 5,43% графика 20 12,5% физика 46 7,61% история разработки и концепции 28 6,25% ничего не нужно 23 368 пользователей проголосовали.

98 пользователей воздержались.

Теги: #Бессонница #разработка игр #искусственный интеллект #Разработка игр

Вместе с данным постом часто просматривают: