ИИ на пяльцах: 5 полезных приемов

Автор оригинала: Alex J. Champandard
  • Перевод

Вашему вниманию представляю свой вольный перевод, обещанный г-ном Takezo в его комменте о будущем ИИ в GameDev.

Введение


Прикольно наблюдать за внутриигровой визуализацией, особенно если ты сам ее и создал! Однако, в погоне за этим ярким впечатлением легко забыть, что не нужно визуализировать все подряд.
Ниже вы найдете видео туториал по визуализации геймплея и ИИ, записанный в секретной исследовательской лаборатории AiGameDev.


Зачем нужна (хорошая) визуализация?


  • Корректность — При имплементации фич, даже если используются юнит-тесты, важно иметь визуализации, чтобы быть уверенным в правильном понимании проблемы. Комплексные игровые миры могут иметь особые кейсы, которые не учтены юнит-тестами.
  • Выявление багов — Помимо, собственно, проверки работоспособности кода, визуализация помогает избавиться от многих проблем при изоляции бага. При наличии коллекции визуализаций легче выявить баг или понять «где собака зарылась».
  • Оптимизация и настройка — На завершающей стадии проекта при наличии визуализаций легче вносить изменения в игровые уровни, поведения персонажей и геймплей.

Ниже представлены пять визуализаций, которые нами были использованы при разработке прототипа игры «RUSHING BASES». Обратите внимание насколько сильно эти инструменты помогли нам как на начальной стадии проекта, при построении инфраструктуры, так и в конце, для оптимизации игрового баланса.

Example #1 — Grid Map




Что она показывает?

Это демо сделано на базе двумерной сетки. Карта показывает какие зоны игрового мира доступны, а какие нет. По умолчанию заблокированные ячейки помечены пурпурным, а доступные не помечены вовсе.
Как это работает?

Это просто одна большая текстура с размерами сетки, которая (текстура? — прим. перев.) растянута на отлаживаемый полигон. Чтобы исключить перекрытие, было использовано смещение по вертикали, при этом можно установить тестовую глубину, добившись видимости текстуры повсюду на картинке.
Зачем это нужно?

  • Помогает понять начто влияет разрешение сетки.
  • Позволяет обнаружить узкие места на карте и помогает при проектировании уровней.


Example #2 — Area Network





Что она показывает?

Фундаментальное представление игры основано на группах ячеек, которые (группы ячеек, прим. перев.) мы называем зонами. Ноги растут из основ поиска пути и карт влияния. Сеть зон показывает не только сами зоны в отдельности, но и их связь друг с другом.

Как это работает?

Создается один экземпляр окружности, которая затем рисуется по центрам каждой из групп ячеек (зон). Окружность масштабируется и получает уникальный цвет в зависимости от размера и идентификатора зоны. Соединения между зонами рисуются сплайнами, хотя раньше я использовал стрелки — они менее тяжелы для рендеринга, но труднее визуализируются. Метки зон являются текстурами, отрисованными графическим движком и помещенными на карту мира с вертикальным смещением.

Зачем это нужно?

  • Помогает получить компромисс между точностью карты и ее простотой.
  • Визуализация графа, используемого алгоритмами поиска путей и построения карт влияния.
  • А еще эту штуку можно с важным видом демонстрировать кастомеру и прочему люду, проникшему в офис «внезапно» [*censored*] (смайлы под запретом, прим. перев.)


Example #3 — Hierarchical Graph





Что он показывает?

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

Как это работает?

Граф нарисован в виде набора ребер. Каждое ребро отрисовано в виде тонкого полигона, т.к. не все графические драйвера позволяют рисовать линии. Каждый узел имеет метку, отрисованную в виде спрайта (прямоугольники, всегда повернутые к камере — есть спрайты, прим. перев.).

Зачем это нужно?

  • Помогает локализовать проблемы поиска путей, если они есть.
  • Позволяет увидеть все возможные варианты путей, которые могут быть использованы ИИ.
  • Показывает «потерянные» пути и другие возможные проблемы дизайна уровней.


Example #4 — Influence Map





Что он показывает?

Эта визуализация отображает «карту влияния», т.е. стоимость (важность?, значимость? — прим. перев.) каждой из зон для персонажа в текущей игровой ситуации. Часть зон, в зависимости от близости персонажей оппозиции, помечена красным или желтым — это зоны риска. Другие зоны, выгодные, помечены синим или бирюзовым вследствие осуществленных ранее успешных проходов. Картинки выше показывают оба этих фактора по отдельности и в комбинации в одной и той же зоне меток «успеха» и «риска».

Как это работает?

Реализовано это также, как и в случае с картой-гридом, через наложение текстур с той лишь разницей, что оверлейные текстуры должны обновляться вместе с обновлением карты влияния.

Зачем это нужно?

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


Example #5 — Navigation Paths





Что он показывает?

Эта визуализация отображает финальный навигационный путь, пройденный во время игры всеми акторами в игровом мире. Он представлен в виде последовательности стрелок, соединенных между собой. Каждая стрелка — сегмент пройденного пути. Также есть возможно показа истории ранее пройденных путей.

Как это работает?

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

Зачем это нужно?

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


Заключение


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

Видео смотрите в оригинале статьи… Прим. перев. ориг. статьи.
UPD: поправлены опечатки и ошибки перевода. Спасибо всем багрепортерам!
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 19

    +1
    Класс, вот это качество вспомогательных инструментария =) А такие текстурки можно где-то скачать?
      +2
      Всё таки ИИ на пялцах или на пальцах?
        0
        Всё-таки, о опечатках стоит писать в личку ;)
          +7
          Это не опечатка. Вопрос уместен.
          +2
          «На пяльцах»
            0
            А, на картинке в начале — это такие высокотехнологичные пяльцы? Не опознал, раньше видел только в виде деревянных колец.
            И всё равно я не понимаю смысла фразы.
              0
              Для дебага натянули ИИ на пяльцы с канвой ортогональной… как-то так.
        • НЛО прилетело и опубликовало эту надпись здесь
            +8
              –1
              Ой, что-то я себя стариком почувствовал.
            0
            речь в основном идет о вещах связанных (еще и косвенно) с эвристическими алгоритмами на службе геймдева и того, что там понимается под ИИ движка или бота, и чаще всего это что-то вроде «эмуляции ИИ» ;) и вроде бы правильный термин здесь — Игровой Искусственный Интеллект (ИИИ), сообщает вики.
            так что, имхо, заголовок и постоянное упоминание ИИ немного вводит в заблуждение, и добавляет ложной весомости чтоли…
              +2
              По моим наблюдениям, в западной gamedev культуре не особо заморачиваются с разделением ИИ и ИИИ, а употребляют в общем случае аббривеатуру AI.
                0
                ИМХО, ИИ есть эмуляция человеческого интеллекта, и неважно, где она применяется и насколько глубокие проблемы способна решать. Эмуляция эмуляции? Нет, скорее эмуляция с узким спектром применения и возможностями.

                Никто в геймдеве не пытается сделать вид, что они творят чувствующих разумных существ, придавая статьям напыщенности красивым словом. Они делают болванчиков, бегающих по узлам графов с одной прагматической целью — создать видимость того, что болванчиками управляет человек. Да, связи между реальным ИИ и ИИИ весьма отдаленные, но они есть. Да и термин устоялся.

                И кстати в рамках компьютерных игр некоторые программные противники вполне проходят тест тьюринга — чтобы отличить реального игрока от хорошего бота, надо быть профи в этой игре.
                0
                По моему опыту, чаще всего, никакие тесты или логи не заменят простой визуализации путей или зон проходимости. Обычно у нас ни одна игра не обходиться без подобных решений.
                  0
                  Ну без логов-то совсем тоже нельзя. В реалтайме нельзя увидеть, почему ИИ вдруг решил пойти вопреки его influence map, или напримел, просто из Москвы в Питер через Челябинск. Но без грамотной визуализации конечно же никуда — время, затраченное на неё окупится сторицей. Думаю, тут нет психов, которые граф на полторы тысячи нодов в дебаггере будут смотреть)
                  0
                  Первый пример мгновенно напомнил поиск кораблей противника в игре «морской бой» (которая на бумаге в клеточку и с авторучкой).
                    0
                    «Часть зон, в зависимости от близости персонажей оппозиции, помечена красным или желтым — это зоны риска.»

                    Может, будет лучше сказать «в зависимости от близости вражеских персонажей»? Вряд ли здесь идёт речь о выборах и митингах на Чистых прудах. ☺
                      0
                      > Оппози́ция (от лат. oppositio «противопоставление»)

                      Это необязательно политический термин. В оригинале говорилось об «акторах другой команды». И к такой фразе также могут вопросы возникнуть.
                      0
                      Всегда было интересно как создаются профессиональные карты для таких игр как Counter Strike, например. Там после старта игры — каждый шаг играет роль и очень важно, чтобы карта была сбалансирована для обеих сторон.
                      Теперь понимаю, что примерно что-то типа этого примера используется :)

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

                      Самое читаемое