Аим в играх что
Руководство: Как улучшить свой AIM в шутерах
Игры в жанре шутера от первого лица пользуются в среде геймеров большей популярностью, чем любые другие видеоигры. Среди них можно найти игры на любой вкус: тактические шутеры (CS:GO, Valorant, Overwatch), королевские битвы (PUBG, Apex Legends, Escape from Tarkov), одиночные игры (Doom Eternal, Cyberpunk 2077). Списки можно составлять довольно долго. Все эти видеоигры объединяет то, что они заставляют геймера быстро принимать решения и действовать.
В такие игры трудно играть только для развлечения, так как рано или поздно появится соревновательная составляющая. В особенности это касается онлайн-шутеров, в которых противниками для игрока являются такие же люди, как он, в Интернете. Каждый проигрыш ощущается довольно болезненно, а победа – повышает чувство собственного достоинства. В этом нет ничего странного, спорт есть спорт. Даже одиночные игры заставляют геймеров соревноваться между собой. Например, в Doom Eternal играет большую роль скорость и эффектность прохождения.
Но играть красиво в шутеры (и выигрывать) невозможно без хорошего АИМа (Aim — цельб прицеливание). Точность стрельбы является определяющим фактором в большинстве игровых ситуаций. Как же быть геймеру, если его аим ставляет желать лучшего?
Геймерские аксессуары
Многие геймеры любят утверждать, что качество техники не играет особой роли, главное – это скилл. Утверждение правдиво, но есть нюансы. Устройства вполне могут ограничивать возможности геймера, если их качество не соответствует уровню игры. Если дело касается точности стрельбы в шутерах, определенное влияние на скилл игрока могут оказывать сразу несколько устройств. В первую очередь стоит обратить внимание на мышь и коврик. Какой бы удобной в руке не была офисная мышка, она не может сравниться с геймерской по точности, скорости прицеливания и скорости отклика. То же касается и качества коврика.
Хотя современные мышки могут работать на любой поверхности, только идеально ровное и равномерное покрытие коврика может обеспечить наиболее стабильный процесс расчета передвижения. Вместе с тем, необязательно стремиться заполучить игровую мышку и коврик премиум-уровня, для тренировок вполне можно найти качественные изделия в среднем ценовом диапазоне. При покупке стоит обратить внимание на массу мыши, ее форму, параметр DPI и тип сенсора (последний должен обеспечивать стабильность работы даже при отрыве мышки от поверхности стола).
Для повышения конкурентоспособности в онлайн-играх уровня CS:GO можно также купить игровой монитор. Обратить внимание стоит на частоту обновления (144 Гц или идеальный вариант – 240 Гц), а также скорость отклика (1-5 мс). Важно помнить, что преимущества, которые предоставляет геймерский монитор, потеряют свою силу, если мощность ПК не является соответствующей.
Правильная обстановка
Оборудование, оптимизированное под запросы геймера, это только основа. Если дело касается точности стрельбы в шутерах, важным является и то, как именно тело взаимодействует с игровыми устройствами. Многие профессиональные геймеры считают, что способ хватки за мышь сильно влияет на точность в игре. Привычная, но неправильная с этой точки зрения, хватка может создавать ограничения для определенных движений. Данные ограничения сильнее всего ощущаются в экстремальных условиях. Например, в ближнем бою, когда противник движется вокруг игрока, последнему необходимо быстро разворачиваться на 180 и большое градусов. Из-за неправильной хватки точность разворота может страдать. Правильная хватка подразумевает, что игрок может двигать мышь в любом направлении с одинаковой эффективностью. Конечно же, на столе должно быть достаточно свободного места для таких маневров. Не лишней будет также корректировка высоты стола или игрового кресла.
Чувствительность мыши
От того, как мышка реагирует на движения геймера, напрямую зависит точность стрельбы в FPS-играх. Устройство должно правильно отображать на экране как медленные и незначительные передвижения руки, так и резкие рывки. Для этого придется настроить чувствительность мышки. Каких-либо готовых «рецептов» в данном случае нет, как и невозможно просто использовать настройки известных про-игроков. Единственный вариант – кропотливо настраивать чувствительность, экспериментировать с разными значениями, пока мышка не будет вести себя в игре согласно требованиям геймера.
Чтобы еще на этапе покупки оценить, как мышь будет реагировать на передвижение, можно посмотреть на ее параметр DPI (Dots Per Inch – количество точек на дюйм). Считается, что чем выше DPI, тем точнее работает мышка, так как даже самые незначительные движения руки учитываются устройством. Но есть и альтернативное мнение – часть геймеров считают, что высокое DPI-значение вредит точности прицеливания и останавливают выбор на моделях со средним DPI (800-1600, хотя DPI геймерских премиум-мышей достигает 16000 точек на дюйм). Существует множество мнений, но в любом случае чувствительность мышки можно точно настроить в Windows или опциях самой игры независимо от ее разрешения. Также стоит помнить, что готовые настройки придется менять для новой мышки с другим значением DPI.
Техники прицеливания в шутерах
Чтобы сделать флик-шот, геймеру необходимо резко перевести прицела из нейтрального положения на противника и выстрелить. Последний может находиться в поле зрения игрока меньше секунды, поэтому времени на плавное и точное передвижение мышки нет. Подобное действие происходит у опытных геймеров на уровне рефлексов. Используется техника для одиночных, но «болезненных» для врага выстрелов. Как уже говорилось выше, для точных выстрелов недостаточно одной реакции. Геймеру стоит подумать наперед о возможной траектории противника и держать прицел наготове поблизости.
Практика
Последний компонент идеального аима, без которого все приготовления выше не имеют смысла – готовность вложить большое количество времени в совершенствование навыков. Для тренировки мышечной памяти и рефлексов могут потребоваться сотни и тысячи часов практики. Данный нюанс многие начинающие геймеры часто не до конца понимают. Недостаточно просто играть как всегда. Необходимо создавать нагрузки, к которым мозг должен приспосабливаться. Стоит выбирать такие режимы игры, в которых процесс стрельбы является постоянным: deathmatch, team-deathmatch, и стараться в каждом матче побить свой же рекорд по точности.
Тренировать аим позволяют также специальные режимы в CS:GO, Overwatch, Valorant или целые игры, как KovaaK’s FPS Aim Trainer. С помощью ботов или обычных мишеней для игрока создается имитация разных игровых ситуаций. Часть режимов позволяет тренировать флик-шоты, другая – трекинг-аим, а есть и комбинированные режимы. Единственный недостаток такого подхода – боты и мишени двигаются не так, как реальные игроки в онлайн-матчах. Для максимальной эффективности тренировок, стоит заниматься каждый день, время от времени делая небольшие перерывы (даже на несколько дней) для восстановления сил.
Рекомендации
Напоследок хочется предупредить, что тренировка аима – это надежный способ избавиться от приятелей в онлайн-шутерах. Если кто-то после интенсивных занятий начнет внезапно доминировать абсолютно во всех матчах, то часть друзей может просто перестать с ним играть. Игрок, который стал значительно сильнее, также может потерять интерес к играм с более слабыми приятелями. Это самая настоящая «палка о двух концах». Возможно, геймеру не стоит слишком зацикливаться на точности стрельбы, если дело касается любительских матчей против товарищей. Конечно же, если разговор идет о киберспорте, без нормального аима не обойтись.
Аим-ассист в мультиплеерном шутере — как сделать правильно
Аим-ассист — вечная тема для споров среди игроков. Для одних это узаконенный чит, для других — инструмент комфортной игры. Этическую сторону вопроса сейчас обсуждать не будем, просто примем факт, что большинству пользователей неудобно целиться на геймпадах и тачскринах. И это проблема.
Пару лет назад в нашем онлайн-шутере вообще не было аим-ассиста и автострельбы. Даже в сторе было написано, что Pixel Gun 3D — «hardcore shooter». Нас это устраивало, пока не стало сложнее привлекать новую аудиторию. Даже несмотря на обучение и матчмейкинг, новичкам было сложно освоиться.
На рынке тогда уже были шутеры с автодоводкой, но она была слишком навязчивая, чересчур влияла на игровой опыт и скилл игрока. Нам предстояло разработать систему получше — чтобы не разозлить бывалых хардкорщиков и не отпугнуть новичков. Рассказываю под катом, что из этого вышло.
Авто-аим и аим-ассист
Для начала на всякий случай определимся с терминами, чтобы не путать авто-аим и аим-ассист.
Авто-аим (автонаведение). Прицел жестко фиксируется на противнике, позволяя игроку расслабиться, зажать кнопку стрельбы и вообще не двигать стиком. Это, на удивление, до сих пор популярная система стрельбы, которая используется, например, в GTA V и Red Dead Redemption 2.
В мультиплеерных проектах подобное особенно фрустрирует. Почти всегда авто-аим можно отключить, но смысла в этом примерно никакого — у остальных игроков всегда будет преимущество.
Аим-ассист (помощь в прицеливании). Глобально он присутствует практически в любом шутере, даже на PC. Все эти маленькие хитрости разработчиков, когда пули примагничиваются к модельке противника даже если игрок на самом деле промазал на пару миллиметров, — тоже в каком-то смысле можно отнести к аим-ассисту. Например, такие лонгшоты в Battlefield были бы невозможны без помощи разработчиков:
Грамотно реализованную помощь в прицеливании пользователь может вообще не заметить. Система должна угадывать желание игрока — не выполнять что-то за него, а лишь помогать делать то, что он хочет. Именно с такими вводными мы начали думать над разработкой собственной системы помощи в прицеливании.
Выделили две концепции:
1. Когда прицел игрока попадает в область вокруг противника (обычно очень большую), то начинает примагничиваться к телу врага. Например, похожая система есть в Respawnables или Blitz Brigade на смартфонах.
Проблема в том, что она не всегда угадывает желание игрока. Допустим, он хотел перевести прицел влево, а рядом пробегал враг, «захватил» прицел и увел его в сторону. В итоге — неприятный игровой момент.
2. Другая концепция заключается в попытке предугадать поведение игрока с помощью считывания его действий. На ней и остановились.
Система отслеживает положение врага на экране и направление движения прицела игрока, пытаясь предугадать необходимые действия — провести прицел мимо или помочь навестись на цель.
Теперь подробнее о том, как это работает.
Как устроен аим-ассист
Окей, мы решили предугадывать желание игрока и помогать ему в прицеливании. Теперь предстояло определиться, как это лучше всего сделать.
Когда игрок наводится на противника, он направляет на него прицел и движением стика (физического или сенсорного) старается удержать цель в фокусе. Концепция выглядит не такой уж и сложной — мы определяем момент движения прицела к противнику и ненавязчиво помогаем игроку. Но дьявол кроется в деталях.
Путем проб и ошибок пришли к системе из двух зон вокруг персонажа: внешней и внутренней.
1. Внешняя зона отвечает за помощь в доводке камеры, но не с помощью притягивания прицела к врагу, а благодаря высчитыванию изменения положения курсора внутри ректа зоны.
Как это работает. Если прицел попал во внешнюю зону, а игрок движется вместе с противником, то его камера поворачивается так, чтобы прицел оставался на том же самом месте внутри этой зоны, где он был кадром ранее (плюс к этой позиции добавляется движение за счет инпута игрока). То есть мы не отбираем у игрока необходимость прицеливаться, а лишь помогаем его прицелу оставаться внутри внешней зоны.
Если резко включить ассист, то камера дернется и игрок воспримет это как вмешательство в управление. Поэтому при попадании прицела в эту зону включается специальный механизм приращения силы аим-ассиста. Назовем ее h:
h увеличивается со скоростью p, если внутри зоны прицел двигается к противнику;
h уменьшается со скоростью m, если движение идет в сторону от противника;
h уменьшается со временем.
Чтобы игрок мог легко убрать прицел из внешней зоны, m в 4 раза больше p (выведено эмпирически). Максимальное значение h означает, что прицел железно закрепляется внутри ректа. Для поддержания этого значения нужно вести прицел к противнику, поэтому у нас нет ситуаций, когда игрок не ведет прицел к цели, но при этом чувствует какое-либо вмешательство. Дополнительно мы ограничили максимально разрешенную скорость доводки камеры и применили легкую интерполяцию.
Размер ректа на экране привязан к размеру противника, но не прямо пропорционально, а с поправкой на дистанцию. Даже если персонаж очень далеко, рект все равно будет занимать достаточную область экрана (если, конечно, игрок не вышел за максимальную дистанцию аим-ассиста).
Изначально наша помощь в прицеливании ограничивалась только внешней большой зоной, но этого было недостаточно. В Pixel Gun 3D персонажи перемещаются очень быстро, а интерполяция создает небольшое отставание помощи в прицеливании. Поэтому мы добавили внутрь вторую зону поменьше, которая всегда соответствует размеру персонажа на экране.
2. Внутренняя зона. В ней сила аим-ассиста h со временем не уменьшается, а растет. Также увеличивается максимальная разрешенная скорость доводки камеры (пока прицел находится внутри зоны).
Когда игрок удерживает прицел на враге, h достигает максимального значения — положение прицела «приклеивается» к внутренней зоне и меняется только инпутом самого игрока. При этом если прицел нужно отвести в сторону, то никакого сопротивления не будет за счет понижающего коэффициента m.
В итоге получилась незаметная система помощи в прицеливании, абсолютно лишенная ощущения, что у игрока выхватывают управление из рук:
доводка учитывает желания и подстраивается под пользователя;
при неподвижном прицеле ассист не включается;
при проведении прицела мимо врага нет сопротивления или замедления скорости камеры.
Это довольно общее описание работы аим-ассиста. Сейчас поговорим про нюансы.
Выбор цели
Неправильно выбранная цель может сильно подпортить игровой опыт и заруинить не один матч. Например, в Call of Duty Warzone встречается проблема, когда перестреливаешься с противником, и тут внезапно второй противник, пробежавший через линию огня, уводит прицел за собой, что приводит к плачевным последствиям и разбитым геймпадам. Забегая вперед — у себя мы решили эту проблему.
У каждой сущности, реализующей IAimHelp, для считывания попаданий есть один или несколько коллайдеров (хитбоксов), к которым мы напрямую привязали размер зон ассиста. Это решило кучу проблем с настройкой зон под каждую сущность.
Во время игры нужно понять, попал ли прицел игрока внутрь одной или нескольких внешних зон объекта, реализующего IAimHelp. Если выстраивать ректы каждый кадр для каждой сущности, то уйдет очень много ресурсов, поэтому сначала вычисляется вектор от игрока до сущности, после чего, используя скалярное произведение векторов, отсекаются все сущности, которые не попадают в область видимости игрока.
Отсечение при помощи скалярного произведения векторов:
Затем для каждой сущности сохраняется дистанция и отсеивается все, что дальше максимально разрешенного расстояния для аим-ассиста.
Дальше пробрасывается луч в каждую из целей, чтобы определить, есть ли препятствие между игроком и целью — остаются только цели в прямой видимости игрока. И уже после этого высчитываются ректы.
Просчет ректа зоны для прицеливания:
При построении ректа очень важен угол обзора, так как снайперский прицел работает за счет его сужения, поэтому ректы должны правильно перестраиваться.
Отсюда формула влияния поля зрения на размер ректа на экране:
Дальше идет проверка попадает ли прицел игрока внутрь ректа. И, если да, то цель становится текущей:
После этого у активной цели каждый кадр строится рект и проверяется видимость при помощи RayCast. Цель перестает быть активной, если RayCast не достигает ее или если прицел не находится в ректе дольше секунды.
Этот алгоритм работает, если у игрока еще нет ни одной цели. Другая ситуация — если игрок решит навестись на другого соперника, чей рект перекрыт ректом текущей цели.
В этом помогает проброска луча в центр экрана — каждые несколько кадров луч летит через все объекты по направлению обзора игрока, и если он дольше определенного времени попадает в другой объект, доступный для аим-ассиста, то текущей целью будет выбран именно этот объект.
В результате мы получили удобную систему выбора цели: активная цель не сбрасывается, если ненадолго пропадет из видимости, пробегающие мимо враги не перехватывают ассист на себя, а когда игрок специально наводится на другую цель, то аим-ассист переключается на нее.
Адаптивность
На силу помощи в прицеливании влияют сразу несколько факторов:
уровень скилла игрока;
Насчет дистанции все ясно — чем дальше, тем меньше помощи. Но на деле все немного сложнее — чем дальше противник, тем меньше его хитбокс. Поэтому если понижать силу аим-ассиста линейно, то он будет бесполезен для дальних целей. Чтобы настроить фактор снижения силы помощи в зависимости от дистанции, мы использовали редактируемую кривую. В Unity это AnimationCurve.
Как работает автострельба
Хотя умельцы из Китая уже понаделали множество специальных механических триггеров, которые крепятся на грань смартфонов и превращают его в подобие геймпада.
На AliExpress полным полно таких аксессуаров рублей за 200
Но мы все же исходим из того, что 99% игроков используют только сенсорный экран смартфона. Поэтому с автострельбой есть свои фишки. Ее, конечно, при желании тоже можно отключить.
Поэтому мы привязали момент начала автострельбы к скорострельности пушки — чем она выше, тем быстрее начнется автострельба. Например, на скорострельных автоматах задержка минимальная, а на снайперках — максимальная. При этом на урон мы не смотрим, так как он изначально привязан к скорострельности.
Таймер рассчитать довольно просто, хватает лишь минимальной и максимальной задержки перед автострельбой и скорострельности самой пушки, умноженной на определенный коэффициент.
Также важно, чтобы игроку было понятно, когда у него сработает автострельба. На автоматах она начинается почти сразу и понять это не сложно. Но на снайперках из-за высокой задержки ситуация другая, поэтому научить игрока поможет UI и специальная индикация. Например, мы добавили внешние элементы прицела — они сходятся вместе и сигнализируют о начале стрельбы. Кроме того, у пушек разная дальность и игрок должен понимать, начнется ли автострельба вообще, поэтому прицел имеет дополнительную цветовую индикацию (красный — автострельба возможна, белый — нет).
Реакция аудитории и метрики
Автодоводке и автострельбе в нашем проекте уже два года. Онлайн не упал, а жалоб от комьюнити практически не было. Немного были недовольны хардкорщики, которым не понравилось, что менее опытные игроки теперь получили шанс убивать.
При этом с самого выпуска апдейта, старых игроков на запуске приложения встречал экран, где объяснялось, что функции нужны для помощи новичкам. Прямо там же их можно было отключить не заходя в настройки. Это решение сильно помогло снизить негатив среди фанатов.
Если обратиться к метрикам, то распределение киллрейта игроков по квартилям поменялось. Игроков с очень низким киллрейтом среди новичков стало значительно меньше (как мы и хотели), но также значительно увеличилось количество игроков с высоким соотношением убийств к смертям на последних уровнях. Эту проблему уже позже решали настройкой значений задержки автострельбы и силы доводки в зависимости от уровня скилла.
Насколько же сильно помощь в прицеливании и автострельба повлияли на ключевые метрики (Retention, LT, ARPU) — однозначно сказать сложно. Они выходили вместе с батлроялем, о разработке которого я подробно рассказывал в двух статьях: про графическую и сетевую части.