Аим ассист что это
Аим-ассист в мультиплеерном шутере — как сделать правильно
Аим-ассист — вечная тема для споров среди игроков. Для одних это узаконенный чит, для других — инструмент комфортной игры. Этическую сторону вопроса сейчас обсуждать не будем, просто примем факт, что большинству пользователей неудобно целиться на геймпадах и тачскринах. И это проблема.
Пару лет назад в нашем онлайн-шутере вообще не было аим-ассиста и автострельбы. Даже в сторе было написано, что 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) — однозначно сказать сложно. Они выходили вместе с батлроялем, о разработке которого я подробно рассказывал в двух статьях: про графическую и сетевую части.
Как работают консольные шутеры — и почему помощь при прицеливании необходима
Шутеры — непростой жанр. В них мозг игрока совершает множество вычислений за доли секунды: захватывает цели в статике и в динамике, следит за интерфейсом, координирует руки для управления персонажем — а также решает, когда перезарядиться и где укрыться.
И потому разработчики всячески стараются помочь игроку — особенно если он играет на геймпаде. В этом тексте мы расскажем, какие ухищрения идут в ход — от автоприцеливания и помощи при стрельбе до правок баланса.
После перехода консольных видеоигр в полноценное 3D разработчики столкнулись с проблемой — как ориентироваться в трёхмерном внутриигровом пространстве? В студиях не понимали, каким образом реализовать управление и прицеливание в играх от третьего лица — поэтому авторам игр ничего не оставалось, кроме как сделать фиксированную камеру.
Она работала так: при переходе из одной комнаты в другую менялись лишь ракурсы, а сама камера всегда висела в отдалении. Яркие примеры — хорроры Silent Hill и Resident Evil.
В шутерах от первого лица эпохи первой PlayStation герой обычно управлялся стрелками, а камера — шифтами (боковыми кнопками). Стиков на геймпадах тогда ещё не было. Из-за этого врагов приходилось расставлять на одном уровне с игроком, иначе сложность возрастала многократно. Да и ни о какой динамике, опять же, речи не шло.
Одна из самых действенных систем автонаведения была в GoldenEye 007 — она наконец решила проблему управления. Вне боёв игра работала в режиме свободного прицеливания — но когда рядом появлялся враг, перекрестие автоматически прилипало к нему. Так разработчики подражали манере стрельбы Бонда из кино — агент палил во все стороны от бедра, постоянно попадал в цель и смотрел, как враги картинно падают.
В GoldenEye 007 даже левел-дизайн создавался с учётом геймпада — помещения были узкими, а противники всегда расставлялись в поле зрения игрока. Прицеливание работало при помощи единственного аналогового стика с геймпада Nintendo 64.
Также в игре появились стелс-элементы, которые позволили избегать неудобных перестрелок.
В 1996 году Nintendo представила инновационную механику управления свободной камерой от третьего лица — в Super Mario 64. Попытки создать её были и до SM64, однако у Nintendo она вышла максимально удобной.
В игре герой может осматриваться вокруг себя — камера приближалась к нему, а управлялась при помощи единственного аналогового стика.
В 1997 году Sony выпустила контроллер DualShock с двумя аналоговыми стиками. Теперь персонажи управлялись левым стиком, а камера — правым. Экшены стали более динамичными, но всё ещё использовали автоприцеливание.
Первой среди шутеров такую схему использовала Alien Ressurection на PS1. В ней впервые реализовали систему управления с двумя аналоговыми стиками. Игру раскритиковали за «чересчур инновационный» подход к прицеливанию. Некоторые критики называли систему неудобной, а сам шутер — «неиграбельным».
Современная помощь при стрельбе
Всё поменяла Halo: Combat Evolved от 2001 года. В Bungie отказались от «железного» автонаведения, реализовав помощь при прицеливании — или аим-ассист. В отличие от GoldenEye 007, система работала не настолько навязчиво — лишь немного корректировала прицел, порой почти незаметно.
Но ценность первой Halo для жанра состоит не только в этом. Динамика геймплея возросла: враги стали умнее, а игрок теперь должен был активно перемещаться по арене, на ходу принимая уйму решений. Роль меткости увеличилась — и помощь при прицеливании здесь оказалась как нельзя кстати.
Подобный подход стал самым распространённым в шутерах на консолях — как от первого, так и от третьего лица. Сегодня аим-ассист есть почти в каждом экшене, в том числе и на ПК — ведь именно он делает стрельбу не просто проще, а приятнее.
Поведение аим-ассиста зависит в том числе от скорости реакции игрока — в среднем это занимает от 300 до 500 миллисекунд. Исходя из показателей и анализа мышечной памяти, игры подстраиваются под конкретного пользователя.
«При настройке аим-ассиста нужно учитывать строение мышц больших пальцев, которые используются геймерами для нажатия на стики. Обычно мышцы, задействованные в вертикальном движении, слабее, чем мышцы в горизонтальном. Поэтому прицеливание по вертикали ощущается тяжелее, чем прицеливание по горизонтали, а диагональное прицеливание – сложнее их обоих.»
Capcom, например, в Resident Evil 4 реализовала систему, которая на ходу анализировала меткость игрока и соотношение его промахов и попаданий. На основе собранных данных менялся баланс, а противники чаще или реже подставлялись под лазерный прицел. При этом иллюзия исходной сложности сохранялась, а геймеры не чувствовали, что игра поддаётся.
Прилипание – это когда проходящее через противника перекрестие замедляется, давая игроку достаточно времени на прицеливание. Оно работает только на геймпадах — управлению с мышью прилипание лишь мешает. Всё из-за мышечной памяти игрока — он подсознательно понимает, сколько усилий рука должна приложить, чтобы сдвинуть прицел на определённое расстояние. И любая корректировка чувствительности мыши прямо во время геймплея приводит к фрустрации.
Магнетизм же нужен для того, чтобы игроку не нужно было заниматься «пиксель-хантингом», или «охотой на пиксели». С экрана не видно, насколько точно вы целитесь — и если пуля пролетит в миллиметре от головы, вам будет казаться, что вы попали, хотя это не так. Подобный диссонанс рушит погружение.
«К примеру, вы прицеливаетесь в край головы противника, стреляете — а попадание не регистрируется, засчитан промах. С вашей точки зрения вы сделали всё правильно. Но с точки зрения кода пуля прошла в одном микрометре от головы, поэтому вы промахнулись.»
Магнетизм как раз нужен для того, чтобы таких случаев избегать — благодаря ему пуля всегда достигнет цели, когда это выглядит «честно». Многие этого не замечают, но магнетизм пуль присутствует и на ПК, ведь без него игра начинает казаться «неправильной».
Причём магнетизм — это не притягивание пуль в прямом смысле, подобно стрельбе из фильма «Особо опасен». Ниже наглядно показано, как это работает на примере Witchfire.
Аим-ассист в мультиплеерном шутере — как сделать правильно
Comments 33
Аим-ассист — вечная тема для споров среди игроков.
Да нет там никаких споров — асист зло, всё.
Желающие играть на консолях должны учиться играть, на мобилках — страдать.
Ну а вас, как разработчиков, понять, конечно, можно: казуальные игроки на телефончиках являются мясом и уходят. Обычно просто делят сервера по игровым платформам, вы же решили исправлять эту проблему отказавшись от первоначальной задумки харкорного шутера.
Самое забавное, что игроки с консолей требуют аим-ассист и во время кросс-плея с РС, у которых ассиста нет, «иначе им сложно»
На PC некоторые люди тоже на геймпадах играют в некоторые шутеры.
Никогда этого не понимал, кроме ситуаций вроде использования контроллера для управления авто/самолётом и так далее, как это может быть в Баттлфилде и подобных.
Я привык к геймпаду больше, чем к клавиатуре с мышкой. Много играл раньше в к3 в середине нулевых, у меня от клавиатуры сильно болят пальцы и кисть, от мышки кисть. Да, мышка точнее, но лично для меня гораздо менее удобно. Более того онлайн я играю во что-то только на консоли (тот же halo), через пару месяцев в онлайне с привыканием и удобством всё становится достаточно хорошо. В файтингах я к аркадному стику привыкал вообще год, а теперь без него не могу).
Туннельный синдром не позволяет больше наслаждаться шутанами на мышке
С геймпадом афигенно удобно играть лёжа на диване перед огромным теликом, когда устал от сидения за компом и хочешь расслабиться. Мышь и клава привязывают вас к столу с ними и к монитору (в основном).
А когда играешь во всё с геймпада, то исключительно для игры в онлайн шутер отпадает желание пересаживаться на мышь и тренировать скил быстрого и точного позиционирования курсора в нужной точке.
В шутерах кроме этого есть и другие скилы (позиционирование игрока, реакция, знание карты, etc). И вот как раз на них и делается упор и за счёт них получается фан.
Надо понимать что жалуются в основном люди, которые просто любят жаловаться.
На консолях даже без кросс-плея игроки вайнят на других и обвиняют их в том что они вместо геймпада подключили клаву с мышкой. При этом в половине случаев с другой стороны игрок с точно таким же геймпадом, но просто более скиловый.
При кросс-плее матчмейкинг обычно старается матчить игроков с геймпадами отдельно от игроков с мышками. Так же как и отдельно от игроков с телефонов.
Что качается именно ассиста, то он просто значительно повышает комфорт игроков с геймпадом, но это совсем не тоже самое что автоэйм, автор как раз раскрыл разницу. Автоэйм и на мышке повышает эффективность. А эймассист достаточно часто мешает.
Очень, очень много мата со стороны наших стримеров в сторону аимасиста консольщиков, когда в коротких стычках, ему достаточно попасть прицелом примерно в твое тело и нажать триггер стрельбы. Все пули летят в тушку, не важно как ты мансуешь.
Учимся играть в шутеры на геймпаде
Сегодня мне бы хотелось поговорить о шутерах и геймпадах. Для многих это несовместимые между собой вещи. И в этом есть доля правды, т.к. «клавомышь» и геймпад — разные контроллеры, предлагающие разный игровой опыт.
Разумеется, существует огромное количество «заточенных» под джойстик жанров (платформеры, квесты, слэшеры). Но для любителей ПК шутеров, которые переходят с ПК на консоль, отсутствие привычных манипуляторов — огромная проблема.
Поэтому далее я поделюсь советами о том, как повысить точность прицеливания и скорость реакции, если вы играете на PlayStation, Xbox или просто купили себе геймпад для ПК.
Настройте чувствительность стиков
Первое, с чего стоит начать — зайти в настройки и отрегулировать «под себя» чувствительность стиков. Для этого придется запустить несколько тестовых матчей, оценить скорость поворота персонажа по двум осям — «X» и «Y». Со временем вы поймете, насколько ужасны настройки по умолчанию.
Но нет никакого смысла менять чувствительность стиков, если вы неправильно ими пользуетесь. Скорость поворота персонажа зависит от плавности нажатия. Не нужно пытаться прицелиться сразу, как это интуитивно хочется сделать по аналогии с компьютерной мышью. Так вы избавитесь от неудобных «дерганий».
В некоторых играх полезно поменять не только чувствительность, но и управление. Например, для спуска курка использовать RT, LT или даже «X». Тут уж кому как удобнее. Если игра не позволяет менять конкретные кнопки, то выберите одну из доступных схем управления.
Цельтесь правильно
Включите Aim Assist
Aim Assist или «Помощь в прицеливании» включается в настройках. Правда, есть функция далеко не во всех играх. Иногда она может работать только в PvE режимах. Поэтому, если в настройках любимой игры вы не видите нужную опцию, то скорее всего она не поддерживается. И не надо про оказуаливание! «Клавомышь» и геймпад — это просто манипуляторы, предлагающие разный игровой опыт.
Игры с поддержкой Aim Assist
Используйте метод «Claw»
Повысить точность стрельбы при игре на геймпаде можно с помощью метода Claw, суть которого в том, чтобы держать контроллер немного иначе: указательный палец должен располагаться на кнопках, а средний на шифтах для стрельбы. Это позволяет значительно повысить точность стрельбы и скорость реакции. Привыкнете вы к «Claw» точно не сразу, но зато после сможете смело заявлять ПеКа-боярам, что в шутаны можно играть и на консолях!