aim fov что это
Секреты FoV от авторов Witchfire
Пара слов от Kacper Domański (разработчика AI в The Astronauts), которые могут порадовать некоторых ПК-игроков.
Kacper поделился интересной инфой о разработке с внутренней кухни, и я перевёл для своего бложика его мысли про FoV (поле зрения) и как оно работает в Witchfire.
Парни из AMD подогнали «астронавтам» сверхширокий LG монитор, оказавшимся и благословением, и проклятием.
Хорошая новость в том, Witchfire в 21:9 смотрится охренительно.
FoV (поле зрения) — это характеристика с которой большинство игроков шутеров знаком. Одноимённая настройка контролирует, по сути, то, что вы видите на экране и влияет на восприятие расстояния, размера и скорости игроками.
Мы меняем FoV во время игры, уменьшая его при наведении, что создаёт эффект зума, и слегка увеличивая его при спринте и броске, чтобы создать ощущение быстрого движения. В то же время (особенно большой) FoV может деформировать объекты определённым образом и влияет на производительность, поскольку на экране появляется больше объектов.
Как раз по причине нагрузки на консолях блокируют этот параметр, чтобы обеспечить стабильный FPS. На ПК у нас обычно полный контроль над этой настройкой (в разумных пределах, безусловно).
Как может происходить деформация объектов? Например, так:
Наибольшие деформации происходят на ближайших к камере объектах — руке игрока и оружии:
Мы определённо хотим дать игрокам возможность выбрать наиболее подходящий для них вариант, но мы не тратим сотни часов на полировку вещей, которые легко поломать!
ADS in FoV 60, как надо.
Первым шагом было внесение изменений в исходный код Unreal Engine, чтобы мы могли явно выбирать, хотим ли мы рендерить какую-либо модель в FoV камеры или кастомно. Затем мы немного поэкспериментировали с углом и остановились на магическом числе 77, чтобы Jakub, аниматор всех наших пушек, мог расположить их и сделать анимации, которые в конечном итоге выглядели бы точно так же, как и в его программном обеспечении.
Затем добавили щепотку матана, чтобы вращать камеру в зависимости от положения перекрестия на экране. Это позволило модели пистолета вписаться в UI; в противном случае всё ощущались бы как-то так.
Так всё и работало…пока мы не получили этот великолепный 21:9 экран и не заметили, что рендеринг оружий сломан.
Не то чтобы это было полной катастрофой, но мы хотели сделать эту часть игры идеальной. Поэтому я и изменил нашу залоченную FoV, сделал вертикальной вместо горизонтальной, и это решило проблему раз и навсегда. Не стесняйтесь спрашивать подробности в Твиттере.
В конце концов, прямо сейчас у парней полный контроль над тем, как выглядят пушки в игре, что в итоге позволит играть так, как нам удобно:
Описание функций читов CS: GO
Сегодня я бы хотел поделится с вами своими знаниями о читах и их функциях на всеми нами любимую игру Counter-Strike: Global Offensive или же попросту CS:GO. Начнём с того, какие виды читов бывают.
Прежде всего читы делятся на 2 типа, это:
Ключевое их отличие это метод взаимодействия с игрой.
Как можно уже понять из названия, Internal софты зачастую являются .dll файлами и их нужно вводить в игру специальными программами – “Инжекторами”. Они могут считывать и записывать данные из/в память игры и таким образом взаимодействуют с ней. На данный момент большинство софтов являются именно Internal софтами, и имеют довольно обширный функционал.
External и Internal софты также делятся ещё на несколько типов по своему основному предназначению в игре и типу игроков, которые будут с ним играть:
Это Legit софты, Rage, и так называемые “Универсальные” софты, в которых комбинируется сразу много функций и есть как Rage, так и Legit.
Теперь более детально рассмотрим Rage и Legit софты, функции, которые к ним относятся и их предназначения.
Legit. При переводе с английского уже можно понять, за что отвечают такие читы, переводится как “Легальный”. Legit предназначен в первую очередь для того, что бы играть с читами и получать преимущество незаметно для патруля и других игроков соответсвенно, что бы не быть забаненым естесвенно. Актуален по большей части для игры на официальных серверах Valve с Прайм-Аккаунтом. Идеально подходит для калибровки званий и играх на основных читерских аккаунтах. В Legit стиле игры также можно условно выделить Full Legit (Для игры на лигах, по типу Faceit, или если за тобой наблюдают и нельзя палится с читами) и то, что сильно отходит от Легита – Semi-Rage. О нём мы поговорим немножечко позже.
Из основных функций, которые есть во всех читах можно отметить такие:
FOV – радиус работы Аима. Говоря проще, чем больше ФОВ – тем за дальшее расстояние от прицела до противника будет происходить доводка. Зачастую в Легите используют FOV около 10 (Может варьироваться в зависимости от чита)
Вторая основная функция, которая работает совместно с FOV – это Smooth. Smooth это скорость доводки прицела до противника. В разных читах Smooth работает по разному. В некоторых читах, чем больше Smooth – тем быстрее скорость доводки до противника, а в некоторых наоборот, чем больше, то тем плавнее. Ещё существует такое довольно распространённое выражение как “Smooth 0” Под ним подразумевается мгновенная доводка до противника при нажатии кнопки выстрела. Зачастую используется на AWP и SSG-08.
RCS – Recoil Control System – Система контролирования отдачи при стрельбе “зажимом” из штурмовых винтовок по типу АК-47. Зачастую выставляется в процентах от 0% до 100%. Чем больше процентов – тем сильнее будет уводить прицел вниз и тем кучнее будут лететь пули в противника. Работает только при зажиме на противников. Не контролирует отдачу при стрельбе в стены или ещё куда либо. Для этого есть RCS Standalone – при его вкючении отдача контролируется всегда.
Hitbox Selection тоже одна из немаловажных функций в легите. Тут всё просто, какую часть тела вы выберете, туда и будет доводить прицел. Зачастую на пистолетах ставят голову, а например на AWP – тело. Также существует очень полезная и удобная фича – Nearest – “Ближайший”. при её включении доводка будет происходить до той части тела, к которой ближе всего находится прицел.
Target Switch Delay – задержка после убийства одного противника до наводки на следующего. Измеряется в миллисекундах (ms). Особенно полезно, если вы стреляете в толпу людей. При убийстве одного у вас перекинет прицел на следующего, а с этой функцией – сначала пройдёт время и только тогда перекинет на следующего. Значительно уменьшает вероятность спалится. Зачастую ставят от 200 ms и вплоть до 600 ms.
Теперь же разберёмся, что такое Rage и какие в нём есть функции.
Рейдж предназначен для игры против других жёстких читеров и на специальных серверах, где играют только читеры. Это называется HvH – Hack Versus Hack. А по простому – Читеры Против Читеров.
Основные функции в рейдже, которые есть во всех читах:
Не менее важная функция в Рейдже – это AutoWall – прострел через стены. Она работает со значениями HitChance и MinDamage, которые я уже описал выше. Её желательно включать, так у вас появляется возможность простреливать некоторые тонкие объекты на карте и преимущество над противником, если вы прострелите его раньше!
AutoWall также есть и в легите, но использовать его для легита я не советую, так как высока вероятность спалится! Чуть подробнее я об этом распишу, когда мы будем затрагивать Semi-Rage.
BodyAim – автоматическая стрельба в тело, если читу сложно попасть по голове противника. Для него может задаваться отдельный MinDamage.
AutoStop – Чит автоматически приостанавливается, когда может выстрелить для уменьшения разброса и более высокого шанса попадания.
AimStep/Speed Limit – функция, предназначенная для игры по рейджу в казуальных режимах, что бы не кикала VAC ошибка. Если играете в обычном, перелётных снайперах, бой насмерть – включайте её. Она ограничивает скорость смены углов, на позволительную VAC на этих серверах и таким образом вас не кикает VAC Error. Также нужно отключать Анти-Аимы.
SlowWalk – новая функция в читах, при активации которой, зажимая клавишу, вы начианете медленно ходить и по вам сложнее попасть. Так же благодаря снижении скорости передвижения Slow Walk увеличивает точность стрельбы. Это один из вариантов работы рассинхронизации – Desync, о котором вы можете прочитать чуть ниже.
И тут мы плавно подошли к одной из важнейших составляющих рейджа – Анти-Аимы!
Использовать только в Рейдже! При Легитной игре вас сразу же запалят с ними!
Самый простой и известны Анти-Аим – Spinbot или же просто “Крутилка”, которая банально вращает вас вокруг своей оси с большой скоростью. Но есть также более сложные Анти-Аимы, такие как Jitter, Backward, Desync AA, и другие. Отдельно останавливаться на каждом мы не будем, так как на описание их всех уйдёт очень много времени.
Анти-Аимы ставятся по двум осям – Pitch и Yaw. Pitch – это ось Y. Тоесть вверх-вниз (Зачастую ставят Emotion или Down), а Yaw – это уже Анти-Аимы вокруг своей оси.
Сейчас в большинстве читов используется новый тип Анти-Аимов – Desync AA. На простом языке – это рассинхронизация анимаций вашей модели на сервере. Пример правильной работы Desync AA вы можее увидеть ниже, под спойлером.
Фух, рейдж разобрали. Теперь я поведаю вам о том, что такое Semi-Rage, как его сделать и с чем его едят.
Semi-Rage часто используется против других читеров, или если нужно брать важные раунды. Он довольно палевный, но несколько раундов с ним отыграть можно и ничего страшного произойти не должно. Его также часто используют, если в вашем чите нет полноценного Рейджа, а вы хотите хотя бы немного поборотся против другого софтера!
Semi-Rage лучше всего использовать на таких оружиях как Deagle и SSG-08 (но это в крайних случаях, так его спокойно используют и на обычных винтовках, например АК-47), так как с них легче всего убивать и они дёшево стоят!
Сделать его очень просто. Для этого просто зайдите в Легит и поставьте максимальный FOV на оружии и минимальный Smooth, также отключите Nearest и поставьте доводку только в голову! Таким образом у вас будет жёстко залетать по головам, где бы ни был прицел. Выражаясь точнее, вы можете держать прицел хоть в небе, но когда вы нажмёте на кнопку выстрела, то прицел резко заскочит на голову противника и убьёт его мгновенно.
Палевная вещь, но иногда она просто незаменима!
Надеемся, данная статья помогла вам узнать много нового.
Спасибо за внимание!
@moderator, нет желания скачать что-нибудь с сайта новорега?
Полезная статья, респект +
Просто удивлен с реакции людей. Объективно статья адекватно написана, все расписано. Не понимаю откуда столько негатива?
Читы для малолетних дебилов
аим самый позорный чит, в свое время на локальных серверах когда доставали читаки использовал валхак
Кущевская ОПГ
Кущевская резня, Ростов, 11 лет прошло и все по кругу, просто нет комментариев, предлагаю поднять резонанс, что бы такой беспредел не замолчали.
Бесплатное кино
Буквально сегодня столкнулся с ситуацией, которую не хотел бы видеть. Еду в электричке на ночную смену. Фрязинское направление, первый вагон, время около 21:30. Все едут по своим делам, залипают в телефонах. Вот он появляется. Главный подмосковный жених.
Правда глаза режет
Если вдруг кто не в курсе то этот самый султан проталкивает закон о запрете называть национальность,мол у людей плохое мнение сразу складывается.
Видать правда глаза режет.
Вспомнилось
Почему не уведомляют о суде заранее через госуслуги?!
Что мешает сообщать через ГосУслуги?
Не нужной переписью населения они меня спамят, а как подумать о экономии и удобстве хрен вам.
Собакодевочка
И стало так хорошо.
Про «национальность, которой нет»
Всем привет. Пишу сюда первый раз. Но сейчас не об этом
Я журналист. И смею заметить, что СМИ не указывают национальность правонарушителя. СМИ пишут «уроженец Дагестана», «житель Оренбурга», «трудовой мигрант из Таджикистана» и т.д. Национальность не указывается. Так что все эти вопли по поводу «а давайте запретим указывать национальность» ни о чем.
Такой разный Гарри Поттер
Правильная штопка
Так происходит эвтаназия в Швейцарии, для человека с неизлечимым заболеванием
Фильм «Терри Пратчетт: Выбирая умереть»
Бывает
Скафандр
Вот работаешь, а тебя делают крайним
В Казани умер человек, в смерти обвиняют рентгенолога, который просто сделал описание КТ лёгких. А после этого КТ человек лечился ещё в нескольких больницах и делал ещё КТ, но умер.
Рентгенолог не лечил пациента, не решал вопросы маршрутизации.
Само открытое письмо.
Уважаемые коллеги-рентгенологи и врачи г. Казани и Республики Татарстан.
К Вам обращается Самигуллин Максим Александрович, 1983 года рождения, работающий врачом-рентгенологом отделения лучевой диагностики ГАУЗ «МКДЦ» МЗ РТ, что находится по адресу: г. Казань, ул. Карбышева 12а.
В настоящее время в СК по Приволжскому району г. Казани в отношении меня возбуждено уголовное дело №12002920007000494 от 11.11.2020 по признакам преступления предусмотренного ч.2 ст.109 УПК РФ – причинение смерти по неосторожности (до 4 лет лишения свободы).
Меня обвиняют в причинении смерти по неосторожности пациенту Аминову А.А., которого я лично не знал, решений касательно его здоровья, лечения и маршрутизации не принимал. Я только вынес заключение по данным рентгеновской компьютерной томографии от 15.07.2020, проведенной в ГАУЗ «МКДЦ» МЗ РТ, о вероятности того, что выявленные изменения в легких могли быть обусловлены вирусным поражением, в том числе и КОВИД-19. После чего, спустя 2 недели, пациент Аминов А.А., побывав в 4 больницах г. Казани, и пройдя еще 2 раза РКТ ОГК (не в МКДЦ), скончался.
СК по Приволжскому району г. Казани, следователи Хасаншин И.М. и Сулейманова В.Т., имея на руках все факты, касательно этого случая, безосновательно и предвзято предъявили мне тяжкие обвинения, попутно очернив мою репутацию в материалах дела.
Свои обвинения они основывают только на заключении судмедэксперта Хабибулиной С.Ш., которая заявила о моей неверной интерпретации данных рентгеновской компьютерной томографии пациента Аминова А.И. от 15.07.2021. Хотя все, более высококвалифицированные чем она, приглашенные независимые эксперты (Закиров Р.Х., Курочкин С.В., Анисимов В.И., Рафиков А.Ю – люди хорошо известные рентгенологическому сообществу г. Казани и Республики Татарстан) заявили свое несогласие с ее описанием и доводами о неверной интерпретации снимков Самигуллиным М.А. Показания данных экспертов приобщены у уголовному делу. К тому же они проводили оценку данных томограмм незамутненным взглядом, а эксперт Хабибулина С.Ш. сама указала на допросе, что она больше опиралась, вынося заключение, на данные посмертного гистологического исследования. (При этом надо отметить, что все эксперты оценивали патологические изменения в легких в динамике на основании данных 3 РКТ ОГК, в отличии от меня, когда я проводил пациенту Аминову 1 РКТ ОГК 15.07.2021).
На основании единственного заключения судмедэксперта Хабибуллиной следователи, невзирая на все остальные доводы и вопросы защиты к экспертизе, которые были отражены в отклоненном СК ходатайстве, делают все возможное для скорейшей передачи дела в суд.
Виновным в преступлении себя не признаю, считаю свои действия в данном конкретном случае верными поскольку всегда поступал по совести, руководствуясь своим долгом и клятвой врача. Отдельно хочу ответить, что подобная несправедливость происходит во время очередной волны коронавирусной инфекции, захлестнувшей нашу страну, когда все медработники и система здравоохранения работают на пределе своих возможностей.
Хочу, чтобы Вы – коллеги были в курсе данной ситуации и в полной мере осознали насколько в тяжелой нынешней ситуации Вы «ценны» для системы здравоохранения и правопорядка, когда с экранов телевизора и со страниц газет Вам вещают о героях врачах, в которых нуждается Родина, а с другой стороны на Вас пытаются «повесить» уголовное преступление, не имея оснований и бездоказательно. На моем месте в любой момент может оказаться любой из вас.
Aim fov что это
FOV — это поле зрения. Угловое пространство, которое видит человеческий глаз при неподвижной голове и зафиксированном взгляде. Поле зрения среднестатистического человека составляет 55° вверх, 60° вниз, 90° наружу (суммарное поле зрения двумя глазами — 180°) и 60° — внутрь. Из-за особенностей строения человеческий глаз распознает объекты трехмерными в пределах 110°, а полноцветными — в еще меньшем диапазоне. Для сравнения, после зрения некоторых птиц достигает почти 360°.
А в мониторах?
Про-геймеры уже давно игрались со значением FOV, тогда как казуальные игроки обратили внимание на поле зрения с появлением Ultrawide LG мониторов. Точнее, когда LG выпустила доступные массовому потребителю модели.
Все преимущества FOV раскрываются на широкоформатных мониторах с соотношением сторон 21:9. Линейка Ultrawide LG 2017 года целиком состоит из таких моделей, тогда как в линейке Gaming их четыре. Остальные — привычные экраны 16:9. Но всех их объединяют хорошая контрастность, углы обзора и время отклика. Разрешение тоже не отстает: от FullHD на 24 и 27-дюймовых моделях до 2560×1080 на 29/34 дюймах. А у на 38 дюймах — до 3840×1600.
Зачем это?
Мудрые геймеры предпочитают ставить угол обзора больше, чтобы на экране сразу помещалось больше информации. Обратите внимание на отзывы к играм в Steam: игроки, привыкшие к увеличенному значению FOV, часто выделяют как недостаток отсутствие ручной регулировки угла обзора — даже там, где это совершенно не нужно. Такие отзывы копятся и совершенно необоснованно занижают рейтинг игр в Steam. Это особенно фатально для инди — ведь низкий рейтинг напрямую влияет на покупки.
На Ultrawide LG мониторе поле зрения по умолчанию значительно выше. Но, к сожалению, разработчики не всех игр озадачиваются поддержкой мониторов 21:9. Владельцы таких экранов уже добавили в закладки FOV-калькулятор и в курсе значений Vert-/Hor+. Первое — обрезка изображения сверху и снизу (те самые «кинематографичные» полосы), второе — увеличение FOV, которое влечет за собой больше доступного глазу контента по ширине.
Решить проблему поддержки широкоформатных мониторов в играх может адаптивное поле обзора Vert+/Hor+. Почитать об этом методе на примере Quake можно здесь.
Ультраширокие экраны по-новому раскрывают компьютеры в работе (мультитаскеры в восторге!) и в играх. Все больше мультимедиа контента выходит под экраны такой формы, и мониторы Ultrawide LG — доступный способ приобщиться.
Где может пригодиться повышенный FOV?
В шутерах вроде Titanfall 2, Overwatch, Call of Duty и сессионных играх типа World of Tanks и PUBG. Поиск оптимального значения FOV в последней — популярная тема на фан-сайтах. С увеличенным полем зрения ощутимо легче заметить врага на периферии, ориентироваться в замкнутых пространствах, заглядывать за угол. Кроме того, не придется так активно елозить мышью, за что в напряженной схватке вы неоднократно поблагодарите новенький монитор с повышенным FOV.
Аим-ассист в мультиплеерном шутере — как сделать правильно
Аим-ассист — вечная тема для споров среди игроков. Для одних это узаконенный чит, для других — инструмент комфортной игры. Этическую сторону вопроса сейчас обсуждать не будем, просто примем факт, что большинству пользователей неудобно целиться на геймпадах и тачскринах. И это проблема.
Пару лет назад в нашем онлайн-шутере вообще не было аим-ассиста и автострельбы. Даже в сторе было написано, что 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) — однозначно сказать сложно. Они выходили вместе с батлроялем, о разработке которого я подробно рассказывал в двух статьях: про графическую и сетевую части.