Меню сайта
Форма входа

Категории раздела
Уроки по созданию игр [38]
Программирование игр разной сложности
Игровые алгоритмы [24]
Алгоритмы, которые уже реализованы для разных жанров игр
Графика [5]
Учимся работать с графикой в Делфи
Мультимедиа [3]
Работа с мультимедийными возможностями Делфи
Другие статьи [18]
Статьи не вошедшие не в один из разделов
Ошибки [4]
Всевозможные ошибки и пути их решения
Четверг, 09.01.2025, 06:40
Приветствую Вас Гость

Статьи по программированию

Главная » Статьи » Игровые алгоритмы

Игровой Искусственный интеллект. Поведение персонажей.

Игровой Искусственный интеллект. Поведение персонажей.

 

 

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

 

Игровой искусственный интеллект немного отличатеся от общепринятого ИИ. Основной задачей игрового ИИ является не победа всеми доступными средствами при минимальных затратах или потерях, а красивое поражения от игрока. Ведь людям должно быть интересно играть в Вашу игру. А если ее невозможно будет пройти, то кому она нужна?

 

 

Самый часто встречаемы вариант такого интеллекта. Это поведение игровых персонажей. Например он следит в радиусе трех клеток за появлением врага, и если враг появляется – то наш юнит начинает бежать за ним:

 

For x:=Pers.X=3 to Pers.X+3 do

For y:=Pers.Y-3 to Pers.Y+3 do

Begin

 

  If Map[x,y]>0 then

  Begin

  If Pers.x>Vrag.X then Pers.X:=Pers.X:=Pers.X-1;

  If Pers.x<Vrag.X then Pers.X:=Pers.X:=Pers.X+1;

  If Pers.y>Vrag.Y then Pers.Y:=Pers.Y:=Pers.Y-1;

  If Pers.y<Vrag.Y then Pers.Y:=Pers.Y:=Pers.Y+1;

  End;

End;

 

Возникает вопрос! А где же прописывать данный код? Можно его прописать в таймере и тогда интеллект будет работать постоянно. Также Вас может смутить запись Pers.X – это запись (record) примерно такого образца в разделе Type:

 

TPers=record

X,y,speed,power:integer;

End;

 

А теперь создаем новую переменную нашего нового типа данных.

 

var

Pers:TPers;

 

С этого момента можно ко всем свойствам переменной обращаться через точку: Pers.x, Pers.y, Pers.Speed и т.д.

 

Если с записями Вы не хотите заморачивать, тогда можно их заменять обычными переменными: x,y,spped.power и т.д.

 

Также не советую писать для каждого персонажа отдельно ИИ, особенно одинаковый. Нужно просто всех одинакого-мыслящих обьединять в отдельные типы (записи или классы). Например если в игре присутсвуют копейщики, мечники, лучники и мушкетеры, то для всех кроме лучников можно создать один тип мышления (поведения, реагирования):

 

·        При обнаружении врага бежать к нему и догнав его, наносить вблизи удары

 

А вот для Стрєлков нужею другой алгоритм:

 

·        Если в радиусе выстрела есть враг – нужно стрелять в него

·        Если враг очень близко – нужно убегать от него

·        Если враг сново далеко, то сново стреляем в него.

 

Эти действия можно зациклить, тесть постоянно проверять все это.

 

Еще очень часто интеллект применяется не к отдельным персонажам, а для команд или целых цивилизаций. Это, в основном, свойственно спортивным играм и стратегическим. Для такого случая интеллект следит за придерживанием к выбранной тактике и за ее изменением. Например, в стратегіях враг может сначала строить экономические здания, чтобы бать богатым и хватало ресурсов, а затем развивать военную отрасль, а может сделать все на оборот, особенно если ваши страны находяться рядом и в любой момент может начаться война. Или если суперник в чем-то сильно превосходит компьютерную команду.

 

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

 

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

 

В игровом ИИ часто используюся хитрости (читерство). Например комп’ютер может всегда знать где Вы находитесь и чем занимаетесь, потому легко Вас найдет и подберет наилучшую тактику. Еще комп’ютер может знать Ваши характеристики или какие-то показатели, от которых отталкиваться при выборе тактики. Чтобы не выглядеть слабее компьютерный ИИ может сам добавлять себе бонусы.

 

Очень часто для упрощения интеллекта даються уже готовые указания – заготовки поведения. К примеру:

 

·        Бежать напролом

·        Отбежать к пригра де и спряжаться за ней

·        Оббежать с фланга суперника и напасть сзади

 

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

 

Для большинства случав при создании интеллекта достаточно знания работы с операторами if then и циклами case of, for to do, while do, do while. Можно, конечно ограничиться знанием лишь if then, но иногда прийдется писать гораздо больше строчек кода, что влияет на скорость работы программы и скорость поиска ошибок.

 

Чем больше всевозможных проверок Вы добавите в алгоритм поведения, тем сложнее он становится, но гораздо реалистичнее. С каждой следующей проверкой персонаж будет учитывать больше факторов, а значит вести себя гораздо умнее и осторожнее. На этом у меня все! Всем удачи в программировании компьютерных игр.

 

Источник: delgame.at.ua 

Категория: Игровые алгоритмы | Добавил: Armageddets (04.11.2013) | Автор: Игровой Искусственный интеллект.
Просмотров: 1966 | Теги: создание игр, Игровой Искусственный интеллект, Поведение игровых персонажей, программирование игр на делфи | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш опрос
Уроки по созданию каких игр Вам интересны?
Всего ответов: 169
Мини-чат
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 8
    Гостей: 8
    Пользователей: 0