Алгоритмическая оценка эффективности ослепляющих гранат в CS:GO

От автора: флешка — сленговое название ослепляющей гранаты, от англ. flashbang

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

Компьютер справляется с такими задачами гораздо лучше. Если представить, что компьютер может алгоритмически оценить насколько данная флешка хороша, то это может дать возможность автоматически нагенерить сразу много «хороших» гранат.

Ниже я описываю, как можно построить такой рейтинг. Основываясь на простой идее о том, что «лучше слепить как можно больше соперников», я написал программу, вычисляющую количество пересечений зон обзора (Field Of View, FOV). Посмотрим как это работает.

Загружаю...

Если смотреть в 2D, то стандартная зона обзора выглядит как прямоугольный треугольник с прямым углом в месте расположения игрока

  

В случае, если впереди есть стена, то угол становится меньше. На второй картинке показана соответствующая зона, нанесенная на 2D карту — программа так выводит результаты вычислений.

 

Загружаю...

Для того, чтобы найти, как ослепить наибольшее количество соперников, нужно отыскать места, которые видят как можно больше оппонентов. Если взять 2 позиции, то, в принципе, несложно представить их пересечение — в 2D или прямо в игре

 

Начиная с 3-4 позиций у человеческих мозгов начинаются проблемы

Но только не у компьютера! Справа тепловая карта на основе количества пересечений

 

Загружаю...

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

Представим, что мы делаем ритейк бомбплента А с "зелени" и возьмем четыре наиболее вероятные позиции оппонента внутри плента.

 

 

Загружаю...

Посмотрим как это выглядит на тепловой карте. Обратите внимание на зону в центре, я нарисовал ее прямо в игре через команду drawline

 

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

Загружаю...

На данный момент это все, что умеет программа. Думаю что моим следующим шагом будет разработать оценку траектории гранаты, добавив «функцию стоимости», основанную на том, как долго виден полет гранаты. Это будет моим следующим шагом на пути к алгоритму, генерирующему лучшие гранаты.

Этот пост опубликован в блоге на Трибуне Sports.ru. Присоединяйтесь к крупнейшему сообществу спортивных болельщиков!
Другие посты блога
Флешки в контре