IGROMANIA.RU
Registration
Главный редактор «Игромании». Играть начал в середине восьмидесятых — сначала на ЕС-1046, потом перешел на БК 0010-01, «Спектрум», а затем и на IBM-совместимые компьютеры. По образованию — врач судебно-медицинский эксперт: полученные в университете знания с успехом применяет в игровой индустрии.
  
MoreLess
Популярные за неделю
Популярные за месяц
«Труп выглядит здоровее». Четвертый сезон «Шерлока» Кино > «Труп выглядит здоровее». Четвертый сезон «Шерлока»
Сценаристы «Шерлока» обещали, что четвертый сезон станет пугающим и шокирующим. Разбираемся, все ли у них получилось.
Комментариев: 31
Выбор имеет значение. Превью Vampyr В разработке > Выбор имеет значение. Превью Vampyr
Смогут ли авторы Remember Me и Life is Strange создать полноценную ролевку с открытым миром? Делайте ваши ставки, господа!
Комментариев: 19
«Press X to Win», или История Quick Time Event Спец > «Press X to Win», или История Quick Time Event
История возникновения и развития ваших нелюбимых всплывающих кнопочек.
Комментариев: 16
Семь кругов Камуро-тё. Обзор Yakuza 0 Рецензии > Семь кругов Камуро-тё. Обзор Yakuza 0
Для поклонников серии Yakuza 0 станет еще одной отличной игрой, а для новичков — билетом в мир японской мафии.
Комментариев: 12
Switch в Москве. Наши впечатления от игр для новой консоли Nintendo Спец > Switch в Москве. Наши впечатления от игр для новой консоли Nintendo
Мы сыграли в несколько игр на новой консоли Nintendo и спешим поделиться впечатлениями!
Комментариев: 10
Battlefield 1. Фронтовые записки Спец > Battlefield 1. Фронтовые записки
Делимся опытом выживания в сетевом режиме главного боевика про первую мировую.
Комментариев: 9
   В одиннадцатом номере "Мании" за 2001 год мы рассматривали тему создания модификаций для популярных игр. Отзывов на тот материал пришло много. Мы все детально изучили и вычленили наиболее популярные вопросы. Оказалось, что вас больше всего интересует проблема программирования ботов для трехмерных шутеров. Тупоголовых болванчиков, создаваемых другими (пускай и профессионалами), зачастую "не хватает" для обеспечения должного комфорта игры. Да и научить ботов играть на собственной карте — задача не из простых. Так что тема сегодняшней статьи — боты. Мы не будем изобретать велосипед, описывая программирование скриптов конкретных видов ботов (читайте мануалы, написанные создателями). Мы опишем основные принципы, из которых нужно исходить, "кодируя" поведение компьютерного оппонента (бота, но не монстра) на уровне. Усвоив урок, вы — освоив сам процесс кодинга — без труда создадите вполне приличного болванчика.
    
   Artificial Intelligence или Artificial Idiot?
   Прежде всего вы должны решить, что из себя будет представлять ваш бот. Возможные варианты: пушечное мясо для зарядки по утрам (Artificial Idiot), коварный DM-оппонент, грамотный CTF/Teamplay партнер или... что-то еще. Подобные мысли просто обязаны возникнуть у любого творца ботов. Ведь не станете же вы создавать болванчика, а потом перекраивать готовый код? Итак, из вышесказанного можно сформулировать важный постулат. Никогда не делайте бота для незаконченной игры. Если ваша модификация находится на ранних стадиях развития и вы только приступили к дизайну уровней, за ботов браться рановато. Вот когда задумка оформится, куколка прорвется и на свет появится симпатичная бабочка... Значит, настало время подумать о ботах. Не раньше!
    
   Вариации на тему
   Давайте рассмотрим, чем основные виды ботов отличаются друг от друга. Ведь исходя из этого знания и стоит подходить к вопросу программирования AI.
    
   Artificial Idiot
   Как правило, поддерживает все режимы игры, но непроходимо туп. Двигаться правильно не может, стенки обходить не умеет, стоит себе и стреляет... Можно использовать вместо тира.
    
   DM-оппонент
   Вот тут при программировании придется попотеть. Прежде всего, такому боту необходимо хорошее знание уровня, умение использовать все оружие, устраивать засады. Он должен уметь кемперить и, как это ни странно, отказываться от некоторых предметов, чтобы
14 Kb
самому не наткнуться на засаду, которую по вашей воле устроил другой бот или игрок. Причем выглядеть это должно по-честному. Скажем, если вполне логичным выглядит то, куда побежал бот после своего респавна (к ближайшему хорошему оружию или другому полезному предмету), то умение "чуять" противника, который стоит за углом, и обходить все засады вызывает противоречивые эмоции. Представляете дуэль двух "идеальных" ботов: один бегает, другой его ждет за ящиком (и так всю дорогу). С одной стороны, хорошо, что бот такой умница (на самом деле ничего особенно умного тут нет), а с другой — явно проглядывает читерство со стороны бота.
   В процессе создания DM-бота вам придется столкнуться с таким понятием, как приоритет. В данном случае под этим термином следует понимать желание бота взять тот или иной предмет или напасть на того или иного игрока. Создание кода, оптимального с точки зрения приоритетов бота по отношению к предметам, выглядит примерно следующим образом. Каждый тип предмета (причем не только по виду оружие-броня-здровье, но и по тому, какое это оружие, броня и т.д.) индексируется (т.е. ему присваивается порядковый номер), а затем создается числовая таблица приоритетов, где каждому значению индекса предмета соответствует значение приоритета. Это наиболее удобный способ кодинга. Можно, конечно, отдельно прописывать приоритеты для каждого "операбельного" предмета на уровне, но это более трудоемко, а сам метод — менее гибок.
   Алгоритм может выглядеть приблизительно так:
   Пример 1: Если никого не видно — И — Если хочется взять предмет — И — Если идти за предметом не более N числа шагов — Итог — ВЗЯТЬ ПРЕДМЕТ.
   Пример 2: Если видно игрока — И — Если здоровья больше половины — И — Если у бота неплохое оружие (перечень такого оружия) — Итог —НАПАСТЬ НА ИГРОКА.
   Как видите, все довольно просто. Но неплохо бы вставить в эти условия некоторый элемент неожиданности. Скажем, во втором примере была бы уместна такая строка: "если случайное число имеет значение от 0 до 0.9". Во всех случаях, когда некое случайное число больше или равно 0.9, бот будет игнорировать игрока (или любого другого потенциального оппонента).
   После того как бот либо выполнил поставленную задачу (взял предмет или убил кого-то), либо решение этой задачи становится невыполнимым (предмет взял кто-то еще или враг скрылся), следует переназначить цель для бота. Далее программа выбирает путь до цели, если она есть (об этом ниже), или же бот начинает просто бродить в каком-то случайном направлении, пока не наткнется на что-то интересное.
    
   CTF/Teamplay
   Все вышеописанное для DM-ботов подходит и для CTF/Teamplay ботов. За исключением того, что бот должен узнать понятие "команда". Мало просто бродить по уровню и гасить подряд всех врагов и не гасить "друзей". Вот пример для наглядной
41 Kb
демонстрации действия команд. Скажем, у вас мало здоровья, и вы бежите за аптечкой (например, "мегой"), а в это время бот из вашей команды, который находится снизу, делает рокет-джамп и забирает у вас вожделенную аптечку из-под носа. "Абыдно, да?" Научить ботов командному духу вряд ли получится (даже у профессионалов ботостроения с этим пока проблемы), но исключить такие казусы можно и даже нужно. В данном случае пример алгоритма (псевдокод) выглядит следующим образом.
   Пример: Если виден хороший предмет — И — Если нет врагов — И — Если рядом нет друзей, которые смотрят в сторону объекта и направляются к нему — Итог — ВЗЯТЬ ПРЕДМЕТ.
   Конечно, бывают и такие случаи, когда 3-я смысловая (т.е. не "И") строчка должна игнорироваться. Например, если бот подошел ближе всех к вражескому флагу и у него нехватка здоровья.
    
   Class-based Games
   Как правило, class-based games ассоциируются у нас с Counter-Strike, поэтому и рассмотрим поведение бота на его примере. На самом деле, Counter-Strike недалеко ушел от CTF. Вернее, он является его усложненным вариантом. Труднее всего научить бота не лезть на рожон, а вымуштровать его прятаться в темных углах, осторожно передвигаться. Обычно авторы на эти обстоятельства на обращают внимания... Купив первый пистолет, боты бросаются в бой. Вот и получается банальность вроде "стенки на стенку". На самом деле понятие "класс" довольно условное. То есть на игрока накладываются ограничения в оружии, броне, здоровье и скорости. В Counter-Strike важнее всего оружие, поэтому поведение бота и должно зависеть от ствола, который он прикупил. Если, скажем, у бота снайперка, то ему не следует идти в атаку в первых рядах и лезть грудью на амбразуру.
    
   Расставление путей
   Боты, какими бы умными они ни были, все равно полностью зависимы от человека. Одной из сторон этой зависимости является расставление путей (вейпоинтов). На карте по всему ее внутреннему периметру устанавливаются точки (узлы), которые линкуются между собой, и получается как бы связанный путь. Расставляя вейпоинты, нужно соблюдать определенные правила:
   1. Следующий вейпоинт должен
53 Kb
быть виден из текущего.
   2. Расстояние между соседними вейпоинтами не должно превышать n-ного кол-во единиц.
   3. Расстояние между вейпоинтами не должно быть меньше m-ного кол-ва единиц (слишком частая расстановка может привести к необоснованным затратам системных ресурсов и глюкам).
   4. Старайтесь не делать один вейпоинт на краю стены, а другой — уже на полу под стеной.
   5. Труднодоступные места (нычки и т.д.) нужно "обработать" особенно тщательно (побегать, попрыгать, обойти каждый уголок).
    Большинство из уже
существующих ботов поддерживают установку вейпоинтов вручную. Запускается игра в режиме debug, и играющий бегает по всей карте, а в это время автоматом ставятся вейпоинты. Преимущество данного метода — в его экономии. Недостаток — как правило, все боты будут пытаться пробежать по заранее известному пути, чуть ли не становясь в очередь, как за колбасой. Сделать грамотные пути таким способом можно, но довольно трудно.
    Альтернативой такому тупому "маршу по уровню с обучением" может служить полностью автоматизированное конструирование вейпоинтов. Специальная программа загружает карту, делит ее на кубы некоторого размера, ищет в пределах каждого пол, и если он есть — устанавливает на нем вейпоинт. Тут у ботов появляются неограниченные возможности выбора пути — "хошь" прямо, "хошь" левее или правее. При этом используются другие алгоритмы выбора пути, нежели в методе, описанном выше. Впрочем, и тут приходится сталкиваться с проблемами. Например, боты из-за обилия возможностей и при неправильном кодинге AI будут бессмысленно носиться по уровню, начисто позабыв о конечной цели и методах ее достижения.
    
   * * *
   На этой ноте мы закончим наш сегодняшний разговор о программировании ботов. Возможно — если просьб с вашей стороны будет достаточно — мы еще вернемся к проблеме ботостроения в следующих номерах "Мании". А пока осваивайте кодинг и, исходя из принципов, изложенных выше, программируйте компьютерных болванчиков по своему усмотрению. И пускай ваши боты пореже застревают в стенах...
    
   Полезные ссылки
   www.gameai.com — неплохой сайт по программированию AI. Есть статьи как для новичков, так и для профессионалов.
   www.gamedev.net/community/forums/forum.asp?forum_id=9 — доска объявлений сайта gamedev.net, раздел AI.
   www.botepidemic.com — ведущий игровой сайт, посвященный ботам.
   http://bots.internet.com/s-game1.htm — крутейшая страница чуть ли не про всех ботов.
   www.flipcode.com — шикарный сайт по программированию.
   www.gamedev.net — тоже неплохой сайт по программированию.
   www.gamasutra.com — хорошие статьи, написанные хорошими программистами. Стоит почитать.
   http://bot.counter-strike.net — боты для Counter-Strike.
События, игры, достижения — все, что в 2016 году обсуждали миллионы людей по всему миру.
Новую работу SIE Japan Studio можно сравнить с творчеством Team ICO. Новая игра тоже «не для всех».
Чем опечалил нас и всю игровую индустрию в целом миновавший год? Вспоминаем!
Чествуем победителей во всех основных номинациях. Какие игры, по мнению «Игромании», нельзя было обойти вниманием в 2016 году?
Комментарии к статьям
Войти и прокомментировать                Войти под логином игромании | Зарегистрироваться
Самые комментируемые статьи за месяц:
Кино > «Викинг». The Return of the (Vi)king
Кино > Ассасины и тамплиеры на большом экране. Фильм «Кредо убийцы»
Спец > Лучший мой подарочек — это Xbox One S!
Спец > Достать геймпад и плакать: игры, берущие за душу: от Ori and the Blind Forest и This War Of Mine до BioShock Infinite и Life is Strange
Спец > Презентация Nintendo Switch. Самое главное об играх для новой консоли
Кино > «Труп выглядит здоровее». Четвертый сезон «Шерлока»
Железный цех > В ожидании ZEN. Тестируем игровой компьютер Edelweiss MSI Edition на базе AMD 970
В разработке > Выбор имеет значение. Превью Vampyr
Спец > На скорости 160 км/ч, или Как работают гоночные игры
Спец > «Press X to Win», или История Quick Time Event
Поиск по сайту Игровые платформы: PC  |   X360  |   XONE  |   PS3  |   PS4  |   Wii  |   Wii U  |   PSP  |   Vita  |   NDS  |   3DS  |   Android  |   iOS
1997-2017 ООО «Игромедиа». Мнение авторов и посетителей сайта может не совпадать с мнением редакции. Полное или частичное воспроизведение материалов сайта и журнала допускается только с согласия редакции. Для прямого контакта с редакцией пишите на основную почту «Игромании.ру».
Пользовательское соглашение

КОММЕРЧЕСКИЕ ССЫЛКИ:
Механизм выбора платформы позволяет отображать на страницах информационного портала материалы, относящиеся строго к выбранным платформам.

Каждый пользователь индивидуально выбирает для себя интересующие его игровые платформы.
 
Rambler's Top100 Яндекс цитирования