Флешки в контре
Блог

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

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

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

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

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

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

standard view  90 degrees

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

cs3 cs4

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

cs5 cs6

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

cs7

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

cs8 cs9

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

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

A1 A2

A3 A4

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

A5 A6

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

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

10 комментариев
Возможно, ваш комментарий нарушает правила, нажмите на «Отправить» повторно, если это не так, или исправьте текст
Пишите корректно и дружелюбно. Принципы нашей модерации
Ответ George Yadvidchuk
Хм, полагаю, что вне игры. Любопытно будет посмотреть на нее в дальнейшем и в целом пообщаться по ее поводу. Может, устроить эксперименты какие с профессиональными командами. Интересно, что они скажут.
прога работает в оффлайне. на основе введенных позиций рассчитывается количество пересечений зон обзора, на основе которых и строится тепловая карта.

если есть еще вопросы, с радостью отвечу. я для этого и создавал топик :)
+1
0
+1
Ответ watti
прога работает в оффлайне. на основе введенных позиций рассчитывается количество пересечений зон обзора, на основе которых и строится тепловая карта. если есть еще вопросы, с радостью отвечу. я для этого и создавал топик :)
можно брать реплеи про команд, брать определенные моменты (деф после постановки бомбы например) и кормить прогу такими наборами данных, чтобы она определяла наиболее актуальные точки для каждого планта.
+1
0
+1
Ответ anton.alekseev
можно брать реплеи про команд, брать определенные моменты (деф после постановки бомбы например) и кормить прогу такими наборами данных, чтобы она определяла наиболее актуальные точки для каждого планта.
угу, так я и собираюсь делать. сейчас вот разбираюсь с парсером демок, потому буду учиться выделять паттерны в передвижениях
+1
0
+1
слишком сложна.

для реально оценки эффективности(валюэ) гранат следует взять следующие пункты:

1.Исходная позиция бросающего

2.Время сколько будет видеть гранату соперник

3.Время ослепления гранатой

на самом деле это даже не будет 100% показателем

так как не редко и проще ослепить какую то конкретную позицию, остальные при выходе проще пофиксить
+1
0
+1
Ответ Can
слишком сложна. для реально оценки эффективности(валюэ) гранат следует взять следующие пункты: 1.Исходная позиция бросающего 2.Время сколько будет видеть гранату соперник 3.Время ослепления гранатой на самом деле это даже не будет 100% показателем так как не редко и проще ослепить какую то конкретную позицию, остальные при выходе проще пофиксить
В природе не существует "правильного" или 100% показателя для "оценки валюэ". Все зависит от постановки задачи и от факторов которые мы будем учитывать при построении оценки. В данном случае предложено решение задачи "как ослепить как можно больше оппонентов", которая является подзадачей для "как кинуть флешку наилучшим образом". Приведенные в комментарии факторы дополняют решение, а не противоречат ему.

В остальном согласен. В последнем абзаце я указал, что собираюсь добавить функцию для учета траектории гранаты. Без этого никуда :) Про время ослепления тоже думал, это будет важно при генерации комбинаций гранат. Спасибо за мысли ;)
+1
0
+1
Блин, обалденный текст. Я только не могу понять. Программа это делает во время матча или она просто рассчитывает определенные варианты, если задать ей определенные данные?
0
0
0
Хм, полагаю, что вне игры. Любопытно будет посмотреть на нее в дальнейшем и в целом пообщаться по ее поводу. Может, устроить эксперименты какие с профессиональными командами. Интересно, что они скажут.
0
0
0
Ничего не понял, но поставил плюс. Надеюсь текст собственный, а не заимствованный.
0
0
0
Ответ Igor Glushko
Ничего не понял, но поставил плюс. Надеюсь текст собственный, а не заимствованный.
с радостью отвечу на вопросы, если укажете что конкретно не понятно. текст мой собственный, правда это перевод — оригинал на английском опубликован тут: https://www.reddit.com/r/GlobalOffensive/comments/43dzrq/i_made_a_program_that_helps_do_develop_flashbangs/
0
0
0
Ответ Can
слишком сложна. для реально оценки эффективности(валюэ) гранат следует взять следующие пункты: 1.Исходная позиция бросающего 2.Время сколько будет видеть гранату соперник 3.Время ослепления гранатой на самом деле это даже не будет 100% показателем так как не редко и проще ослепить какую то конкретную позицию, остальные при выходе проще пофиксить
В природе не существует "правильного" или 100% показателя для "оценки валюэ". Все зависит от постановки задачи и от факторов которые мы будем учитывать при построении оценки. В данном случае предложено решение задачи "как ослепить как можно больше оппонентов", которая является подзадачей для "как кинуть флешку наилучшим образом". Приведенные в комментарии факторы дополняют решение, а не противоречат ему.

В остальном согласен. В последнем абзаце я написал, что собираюсь добавить функцию для учета траектории гранаты. Без этого никуда :) Про время ослепления тоже думал, это будет важно при генерации комбинаций гранат. Спасибо за мысли ;)
0
0
0
Укажите причину бана
  • Оскорбление
  • Мат
  • Спам
  • Расизм
  • Провокации
  • Угрозы
  • Систематический оффтоп
  • Мульти-аккаунтинг
  • Прочее
Пожаловаться
  • Спам
  • Оскорбления
  • Расизм
  • Мат
  • Угрозы
  • Прочее
  • Мультиаккаунтинг
  • Систематический оффтоп
  • Провокации
Комментарий отправлен, но без доната
При попытке оплаты произошла ошибка
  • Повторить попытку оплаты
  • Оставить комментарий без доната
  • Изменить комментарий
  • Удалить комментарий