Использование AI и утилит при разработке игр жанра Tower Defense |
Тема создания ботов-имитаций игрока для однопользовательских игр далеко не нова, но, как правило, они создавались либо для «спортивного интереса», либо с целью «накручивания» параметров в тех играх, где требуются монотонные действия.
В этой статье мы хотим рассказать о том, как AI может помочь геймдизайнеру на разных этапах создания игры. Речь пойдет о нашей игре Goal Defense жанра TD с классической игровой механикой и свободной застройкой игрового поля. Соответственно, траектории движения врагов (крипов) задаются не статично, а вычисляются в зависимости от застройки поля, что заметно усложняет расчет баланса сложности уровней. В чем-то упростить эту задачу поможет AI.
Для начала определимся, для чего может быть необходим AI в игре жанра Tower Defense (TD).
В первую очередь, в Goal Defense бот был необходим для поверхностной оценки уровней, особенно для проверки геометрии. Так как у нас в игре свободное поле (свободная застройка), то с помощью бота можно было быстро проверить, насколько граф путей врагов изменится при разных вариантах застройки.
Во вторую очередь, в процессе создания бота в игру (ее отладочный вариант) была введена очень полезная функция – максимально быстрое «ускорение» прогона волны крипов, без отрисовки графики, только с обсчитыванием игровой механики. Это позволило быстро проверять работу бота, а также отлаживать баланс отдельных волн для каждой из конфигурации поля (и для различных методов расстановки башен на поле). Этот способ был необходим для проверки «на практике» применимости башен различных видов в разных ситуациях. Он позволяет за короткое время «проиграть» множество разных карт, что дает возможность собрать статистику, которая покажет, насколько математически выверенные данные совпадают с реальным положением вещей.
Если же говорить про принцип работы бота, то он имел следующий алгоритм (пункты также показывают эволюцию создания бота, его разные итерации):
Однако, дальнейшее развитие бота (чтобы он мог использовать другие башни, бонусы, грамотно противодействовать противникам с уникальными способностями) было признано нецелесообразным, но некоторые части этой утилиты нашли свое применение в совсем другой сфере: записи и просмотре реплеев игры.
Более того, в результате сравнения логики бота и человека на одних и тех же картах выяснилось, что бот хорошо показывает себя там, где дело касается геометрии, но действия, связанные с апгрейдом и продажей башен как правило лучше выполняет человек. Исходя из этого, были выведены следующие пункты, в которых AI показывал себя весьма неплохо:
Однако, использование модуля AI было актуально и в дальнейшем, а именно: для той части кода, которая позволяла бы имитировать одиночные действия игрока – постройку башен, апгрейд, продажу, ускорение игрового времени и т.д.
Все это пригодилось для записи (и дальнейшего просмотра) реплеев от других тестеров, когда сам вектор дизайна был выбран и требовался тюнинг сложности и интересности уровней, проводимый на живых игроках. Фактически, просто изменился источник, который выдает решения – раньше этим занимался AI, теперь же вся последовательность действия считывалась из файла логов.
В каждой игровой сессии записывались следующие действия:
level3.lvl start; 03/22/2012 19:39:12; level3.lvl; 6.41; build; active_tower; 5,1; 250; level3.lvl; 10.25; build; active_tower; 9,1; 190; level3.lvl; 12.16; upgrade; 5,1; 130; level3.lvl; 13.86; upgrade; 9,1; 80; level3.lvl; 35.68; killlast; wave1; 7,0; 6; level3.lvl; 60.76; killlast; wave2; 7,0; 10; level3.lvl; 85.97; build; splash_tower; 11,0; 190; level3.lvl; 88.44; lifelose; wave3; 56; level3.lvl; 88.98; lifelose; wave3; 56; level3.lvl; 99.08; killlast; wave3; 7,0; 6;
Для каждого события пишется игровое время, время не зависит от скорости игры, то есть оно может отличаться от реального.
Таким образом, можно просмотреть как действия игрока, так и состояние игры. Это может быть важно для «синхронизации» геймплея при запуске реплея. Например, если в реплее последний крип волны не был убит, а в логах помечено, что он погиб, то для сохранения синхронизации лучше этого крипа уничтожить искусственно.
Запись игрового времени позволяет высчитать, насколько быстро игрок реагирует на появление «раздражителя» (новой волны врагов).
Файлы реплеев записывались автоматически в файловую систему телефона, затем изымались и проигрывались в десктоп-варианте игры. Игра написана на Unity, поэтому в редакторе игра могла быть запущена так же, как и на мобильном устройстве. Разумеется, мы этим воспользовались при проигрывании реплеев.
Также по действиям игрока можно посмотреть, где в игре есть «провисание» экшн-составляющей.
Эта «карта» позволяет определить слабые места уровня, не прибегая к анализу множества отдельных реплеев, а визуальное отображение позволяет лучше «наложить» данные логов на сам уровень игры.
Таким образом, такая методика была полезна на разных стадиях проекта: как на плейтесте, где важно видеть поведение каждого из тестеров, включая «эволюцию» игрока по ходу прохождения игры, так и на более поздней стадии, когда нужно было проанализировать множество прохождений.
Copyright © 2021 ООО "ДТФ.РУ". Все права защищены.
Воспроизведение материалов или их частей в любом виде и форме без письменного согласия запрещено.
Замечания и предложения отправляйте через форму обратной связи.