War Thunder background
Игровая механика: честная игра
Внимание! Устаревший формат новостей. Контент может отображаться некорректно.

В этот раз мы хотим вновь затронуть тему игровой механики War Thunder и развенчать наиболее "популярные" среди игроков мифы, а также более полно раскрыть методы противодействия запрещенным модификациям и возможности их влияния на игровой процесс. Этот Дневник может оказаться сложен для понимания, просим отнестись к написанному максимально серьёзно.

 В моём повторе боя видно, что:

  • союзник/враг стреляет мимо противника, попадают и убивают. 
  • противник/союзник исчез, остановился в воздухе, дёрнулся вверх-вниз и т.д.

Игрок играет нечестно? 

Все решения, вся физика, все попадания в игре обсчитываются на сервере. Клиент физически никак не может попадать, стреляя мимо, летать и поворачиваться слишком быстро. Т.е. даже если это и можно сделать на вашем компьютере — на сервере всё равно всё будет так, как должно быть. Описанную в вопросе ситуацию нередко можно наблюдать в повторах — действительно, в клиентском повторе боя более-менее адекватно отображается только сам игрок и всё, находящееся в непосредственной близости от него. Информация же обо всём, что находится достаточно далеко или вне поля зрения, передаётся сильно сжатой (или вообще не передаётся). Поэтому в повторе, записанном на клиентском компьютере, при переключении на союзника, особенно находящегося за спиной в нескольких километрах от игрока, можно увидеть различные “неестественные” вещи — но всё это просто последствия сжатия.

— Можно ли как-то это улучшить? 

Так как в игре происходит много событий, в одном бою встречаются до 200 танков и самолётов, передача всей информации с одинаковой точностью привела бы к чрезмерной нагрузке на канал соединения с пользователем. При этом информацию о далёких и медленно двигающихся относительно игрока объектах можно без каких-либо потерь передавать реже. Информацию о невидимых вражеских юнитах игра старается не передавать вовсе, но информацию о союзниках для общего понимания ситуации — игра передаёт. Это позволяет переключиться на них в повторе боя и тогда можно увидеть что-то странное.

Главный совет — используйте для просмотра серверные повторы. В них всё отображается более-менее так, как происходило с точки зрения сервера. “Более-менее” потому, что серверные повторы тоже пишутся с некоторой потерей качества (в среднем частота положения и ориентации снижена до приблизительно 10-15 раз в секунду) — это сделано для оптимизации размера повтора.

— Неуязвимый игрок на самолёте — я в него попадаю, вижу вспышки, но он не умирает.

Ваши выстрелы скорострельного оружия и эффекты их попаданий отображаются в клиенте игры вне зависимости от того, действительно ли произошло попадание по версии сервера. Причина в том, что для скорострельного оружия и быстродвижущихся целей требуемое время на запрос серверу “было ли попадание?” и получение ответа порой превосходит время на выстрел, полёт пули и отрисовку самого попадания. Если такие эффекты отображать только после получения подтверждения сервера, то игрок элементарно не сможет скорректировать “очередь” из пулемётов/пушек, дожидаясь вспышек. Хуже того, может дойти до ситуации, когда цель уже давно покинула точку попадания, а эффекты попаданий только “пришли” от сервера и отобразились.

Другой пример того, почему в такой ситуации невозможно ждать гарантированного ответа сервера: вы можете получить вспышки от попаданий выстрелов, произошедших ранее, но думать, что они относятся к новым выстрелам (при пинге в 100-120 мс и небольшой потере пакетов “опоздание” может составлять до полсекунды). Что ещё больше запутает пилота.

Чтобы игрок точно знал, что попадание зафиксировано на сервере, при попаданиях вокруг прицела рисуются чёрточки. Это — серверные попадания (регистрирует до 8 попаданий). Внимательный игрок благодаря этим чёрточкам может заметить, какая задержка подчас бывает между выстрелами и сообщениями о попаданиях с сервера.

Если вы сомневаетесь в том, как всё было на сервере — смотрите серверный повтор.

— От попаданий пушек калибра 37 мм и более любой самолёт должен разваливаться. Я стреляю только пушками, игра регистрирует попадания, но самолёт не разваливается. Как это возможно?

Во-первых, убедитесь в том, что речь идёт именно о серверных попаданиях — в случае удачного выстрела вокруг прицела рисуются риски серверного попадания (при условии, что вы стреляли только пушками, это будет означать, что попадание снаряда пушки зарегистрировано на сервере).

Во-вторых, не всякий самолёт развалится от любого попадания 37-мм снаряда. Посмотрите в интернете фотографии вернувшихся из боя Б-17 со следами прямого попадания 88-мм зенитной пушки, например.В-третьих, 37 мм — это, конечно, здоровый снаряд. Но если выстрел был произведён бронебойным боеприпасом (а стандартные ленты у многих самолётов заряжены такими через один с осколочно-фугасными), то результатом, в общем-то, будет всего лишь дырка диаметром в 4 сантиметра. И, если только это не дырка в двигателе или в пилоте, на управлении самолётом она мало скажется.

— Неуязвимый игрок на танке — я в него стреляю, не мог промахнуться, но рикошет/не пробил/не попал.

Кроме вполне обычных ситуаций (когда на самом деле имел место рикошет или разбор снаряда, например), возможны следующие варианты:

  • ошибки экстраполяции — если противник быстро маневрирует, то на клиенте его расположение может показываться не совсем точно. К этим ситуациям относится и тот случай, когда цель у вас ещё стоит, а на сервере она уже начала двигаться.
  • уровень детализации при передаче по сети — дальние цели передаются не так точно и, хотя в прицеле они уточняются, уточнение это может произойти с небольшой задержкой или быть недостаточным. Также неподвижные и медленно двигающиеся дальние цели передаются на клиенты чуть реже, что тоже изредка влияет на точность их отображения.
  • ландшафт и объекты локаций имеют свой уровень детализации — и силуэт дальних объектов может быть немного упрощённым. Таким образом, снаряд может попасть в дом/холм даже если кажется, что он должен был попасть в цель. Последняя проблема наиболее всего заметна при взгляде с самолета на землю, где ездят танки.
  • Ну и, наконец, во всём этом бывают ошибки. Перечислим несколько из тех, что случались недавно.
    • для самолётов частота отправки изменений в местоположении полностью неподвижных наземных объектов на большом расстоянии была бесконечно большой (объект не двигается — незачем слать данные про него). При этом расстановка юнитов на поверхность (по сути — телепортация), происходящая в начале миссии, также не считалась изменением, поскольку скорость у юнита не менялась, а проверка частоты отправки осуществляется как раз по скорости. В итоге это приводило к тому, что танки отображались немного “парящими” над поверхностью — до тех пор, пока не подлетишь к ним достаточно близко.
    • в некоторых случаях наличие объекта за танком могло “закрыть” его от снарядов, и, наоборот, наличие объекта перед танком не защищало его от попадания. Это было вызвано оптимизацией расчёта полёта снарядов, когда весь мир делится на сетку, а все объекты относятся к той или иной ячейке этой сетки. Соответственно, ошибка в определении принадлежности объекта к ячейке сетки приводила тому, что объекты  пропускали снаряды, а ошибка в транспонировании геометрии или ошибка в последовательности разного рода проверок объекта — к попаданию снаряда в объект за целью (если сначала проверили попадание в объект за целью и лишь после этого хотели проверить саму цель, но снаряд уже был “поглощён” объектом).

Мы приводим примеры этих ошибок для того, чтобы показать, что ошибки такого рода бывают довольно нетривиальными. Поскольку код игры достаточно сложен просто в силу огромного объема задач, обсчётом которых он занимается в реальном времени (расчёт физики движения, полёта снаряда, попадания снарядов, и всё это — в масштабе огромных, по игровым меркам других игр, локаций, в которых многие десятки миллионов объектов, сотни юнитов, тысячи двигателей, катков, пружин, стволов, башен, тысячи снарядов в воздухе, разрушаемые здания, реальная физика волны и воды, проминаемые и активные грунты, и так далее и тому подобное), то всегда есть возможность возникновения нюансов, вызванных оптимизацией или деталями реализации, и нюансы эти могут привести к ошибкам. Но всё же гораздо чаще проблемы вызваны не ошибками в моделях или в коде клиента или сервера, а просто рассинхронизацией представления клиента с реальным положением на сервере (или даже простой ошибкой восприятия).

— А я вот слышал, что игра подстраивает модель повреждений/попаданий/эффект попаданий, чтобы уравнять игроков/технику. Это правда?

Посмотрите статистику игроков — чтобы “уравнять” их, игра ничего не делает кроме того, что подбирает, по мере возможности, равные по технике и сумме боевых рейтингов команды.Более того, реализовать что-то подобное было бы практически невозможно логически и крайне затратно в плане вычислений — потому что в игре и так обсчитывается траектория каждой пули в каждый момент времени, и чтобы сделать что-то подобное, пришлось бы для каждой пули дополнительно хранить и анализировать целую кучу информации. В действительности движок игры обсчитывает сотни и тысячи снарядов в воздухе каждый кадр в каждом бою — и, естественно, чем меньше будет лишней информации, тем вычисления будут быстрее (для программистов и инженеров это будет понятно — оптимизация под кэш и SIMD-вычисления).Опять же, если вы сомневаетесь, обращайтесь к серверным повторам. Как правило, они разрешают все сомнения — или же позволяют обнаружить ошибку в модели повреждений конкретной техники, или, как это было совсем недавно в 1.63.2.105 — ошибку в симуляции расчета движения снаряда в особых случаях (основную ошибку исправили довольно быстро, но окончательно всё поправили лишь спустя неделю — и всё это благодаря серверным повторам и репортам от игроков).

— Я видел в киллкамере, как снаряд проходит через холмы и препятствия. Это невозможно!

Киллкамера показывает историю упрощённо: сохраняется и передаётся с сервера лишь информация о том, кем и как был выпущен снаряд, тип снаряда, в какую точку и под каким углом он попал в броню, какие были нанесены повреждения, и тип повреждений. В случае рикошета также передаётся угол, куда полетел снаряд после рикошета. Соответственно, в анимации повтора снаряд “летит” по прямой между точкой, где его выпустили, и точкой, куда он попал — в действительности же траектория всегда имеет баллистическую форму.

— Я видел в киллкамере/хиткамере, что осколочно-фугасный снаряд произвёл всего лишь несколько осколков. Это неправильно, должно быть много десятков!

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

— Я увидел “читера” — игрок невероятно метко стреляет, видит всех в режиме без маркеров и так далее.

В режимы без маркеров игроки играют в первую очередь не ради спортивных ощущений, максимально честной игры или командного взаимодействия, а ради погружения в атмосферу, сознательно выбирая режим, в котором им доступно меньше информации, чем они могли бы получать — с тем, чтобы почувствовать себя в бою Второй мировой и ощутить атмосферу этих боёв. Конечно, и в то время бойцы старались как можно больше знать и представлять о том, что происходит вокруг, но технические возможности по получению информации (радары, FLIR) и её представлению (экраны, HUDs) были, как правило, сильно ограничены.

Однако, в безмаркерных режимах нечестные, зловредные или просто алчные игроки  потенциально могут использовать различные запрещённые модификации клиента — так как клиент в таких режимах всегда имеет больше информации, чем, как подразумевается, должно быть доступно игроку.Потому для начала посмотрите серверный риплей. Имейте в виду —- игрок может играть с другими настройками качества или с другим разрешением экрана, а в случае, если вы не меняете позицию — может корректировать и наводить огонь при помощи других игроков.

На всякий случай повторим. В игре не могут быть созданы и использованы “классические” читы для одиночных игр или игр с “клиентским” расчетом игровой логики, такие как: бессмертие/неуязвимость, спидхак, инстакилл, сверхмощное оружие, изменённые характеристики физической модели вашей техники или техники других игроков и так далее. В безмаркерных режимах ограниченно возможен так называемый wallhack/maphack и автоматическое управление наведением.Злоумышленник может воспользоваться только тем, что и так передается на игровой клиент с сервера, и только прибегая к тем же возможностям управления, которые есть у всех игроков.Перечислим основные типы модификаций клиента, которые могут быть использованы для получения преимущества, а также то, как их можно обнаружить неспециалисту:

  • отключение отрисовки деревьев/объектов/ландшафта (всё, кроме крон деревьев и кустов, как правило, или не пробивается снарядом, или взводит снаряд, или имеет шанс его отклонить/повредить и т.д., поэтому на практике махинаторы в основном модифицируют клиент, чтобы отключить прорисовку деревьев);
  • визуальное изменение модели техники, рисование маркера противника. Так как на клиенте есть танк игрока, и известны его тип и положение, то можно изменить выводимые данные игры так, чтобы вражеская техника рисовалась, например, ярким цветом и была видна через препятствия, или же, воспользовавшись возможностями windows, можно подключиться к процессу игры, узнать эту информацию и нарисовать маркер поверх выводимого игрой изображения, создать “радар” и прочие элементы интерфейса, столь хорошо известные нашим игрокам по опыту игры в режимах с маркерами;
  • автоэйм — автоматическое наведение ствола/башни/самолёта на цель, расчёт баллистического прицела и тому подобное. Про это — отдельным пунктом ниже.

Вычислить игрока, который использует модификации, помогающие увидеть то, что не должно быть видно, можно по его поведению. В серверном повторе при виде “от игрока” видно, куда смотрел этот игрок, куда наводился и т.д., также видно и всех остальных игроков. С помощью этого несложно заметить, если “жулик” как бы “смотрит” сквозь дома и деревья, то есть “следит” взглядом за перемещающимся, невидимым для него, противником.Если вы действительно уверены в том, что игрок пользуется запрещенными модификациями — пользуйтесь жалобами на сайте. Не надо создавать видео на ютубе или записи в твиттере — от них мало пользы (если она вообще есть), так как такие “репорты” могут быть просто неверной интерпретацией (например, в случае  использования клиентских повторов) или являться манипуляцией с целью “устранения” неприятного кому-то игрока. Кроме того, они вообще не обязательно дойдут до тех, кто занимается отловом мошенников. Вместо этого пользуйтесь специальным средством, которое действительно помогает в борьбе с ними.Если же вы хотите рассказать о какой-то новой запрещённой модификации или поделится ещё какой-то, важной на ваш взгляд, информацией о видах и способах нечестной игры — пишите в Техническую поддержку или на форум Помощникам или Модераторам (они доставят сигнал куда надо, и проследят, чтобы он не был забыт).

— А кроме жалоб?

Кроме функционала жалоб, мы также используем несколько различных способов автоматического “отлова” запрещённых модификаций на серверной стороне. Но большая часть таких методов не имеет 100% надёжности срабатывания. Кроме того, всегда есть вероятность появления новых модификаций. Основными же надежными методами борьбы с нарушителями являются следующие два основных:

  • сознательность и репорты честных игроков, оберегающих принципы честной игры;
  • дизайн. В режимах с маркерами (использующихся в основных спортивных форматах и в большинстве всех самолетных режимов) возможности запрещённых модификаций и их влияние на игру значительно ограничены.

Ещё немного про игровой дизайн и его влияние на борьбу с запрещёнными модификациями и мошенниками, их использующими.Если сервер не передаёт данные клиенту, то, соответственно, нет возможности эти данные показать. К сожалению, даже если бы можно было рассчитать каждый кадр для каждого игрока “на лету”, это всё равно привело бы к неприемлемому уровню задержки, а значит — к появлению танков из воздуха. Поэтому игра вынуждена передавать клиенту технику противника чуть заранее — перед тем, как игрок сможет её увидеть. Тем не менее, для улучшения общего качества игры и затруднения жизни махинаторам, мы решили несколько изменить текущую систему обнаружения, сделав ее более “агрессивной” в плане сокрытия “невидимых” моделей.

В первую очередь мы уменьшили те параметры в системе обнаружения, которые были наиболее “уязвимы” и давали наибольший эффект от несанкционированного использования через запрещённые модификации. Один из таких параметров это “Дальность безусловного обнаружения”, т.е. радиус, внутри которого клиент гарантированно получает информацию о положении всей техники вокруг себя, в том числе и вражеской. До патча 1.65 этот параметр был довольно большим, около 360 метров, это значение было подобрано так, чтобы давать минимум ситуаций с внезапным появлением танка соперника в поле зрения при резком повороте камеры. Мы несколько доработали алгоритм проверки видимости на краях сектора обзора игрока, что позволило нам значительно уменьшить этот параметр и при этом максимально быстро отрисовывать модель танка противника в случае резкого поворота камеры игроком. В патче 1.65 этот радиус (для максимально прокачанного экипажа) уменьшится примерно в 5 раз (значение может ещё измениться к моменту выхода обновления на основной сервер).

Также мы уменьшили примерно в 2 раза (с 2км до 1200м) максимальную дальность “Обнаружения по направлению взгляда” в виде от третьего лица. Старое значение позволяло нарушителям иметь информацию о положении соперников в поле зрения камеры от третьего лица практически всегда и на всех картах, причем без перехода в оптический прицел или бинокль. С учётом того, что проверка видимости в виде от третьего лица осуществляется из точки положения камеры, которая может быть несколько выше высоты самого танка, это также давало заметное преимущество при использовании запрещённых модификаций.Еще одним параметром в настройках видимости, который мог дать преимущество нарушителям, были множители на дальность обнаружения при использовании бинокля и прицела. Так, множитель для бинокля составлял 2.6 раза, что при умножении на 2 км давало значение, которое с запасом перекрывало размеры всех игровых карт даже по диагонали. С учётом того, что скорость перемещения поля зрения в бинокле не ограничена скоростью поворота башни, это также потенциально давало преимущество, поэтому множитель для бинокля был довольно сильно уменьшен: с 2.6 до 1.4.Множитель на дальность обнаружения при использовании прицела, который был равен 2.4, также был несколько уменьшен, но уже не так сильно: с 2.4 до 2 раз, поскольку скорость перемещения прицела ограничена скоростью поворота башни или орудия, а точка, из которой происходит проверка видимости, совпадает с расположением самого прицела.Отдельно остановимся ещё на двух параметрах: множителях дальности обнаружения движущихся и стреляющих противников. И если первый параметр, множитель на дальность обнаружения подвижных целей, был уменьшен с 1.5 до 1.1 раза, то другой (множитель на дальность обнаружения ведущих огонь целей) — наоборот, был увеличен. Данным изменением мы намерены игрокам дать больше возможностей для обхода противника по флангам и в общем увеличить значимость тактики передвижения, а заодно — уменьшить преимущества, которые может дать использование запрещённых модификаций клиента при игре в “снайперском” стиле, т.е. при стрельбе с больших дистанций, где “wallhack” помогает легко обнаруживать цели. Таким образом, игроки, ведущие огонь с неподвижных позиций, будут демаскировать себя на большей дистанции по сравнению с теми игроками, которые больше двигаются по карте.

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

— Я видел в повторе, как дёргается прицел — игрок пользуется автоэймом, человек так не может наводиться.

На сервер положения курсора прицеливания отправляются несколько раз в секунду (больше десяти). Это в несколько раз менее плавное движение, чем на клиенте, что делает любые движения кружка прицеливания роботизированными на вид и “дёрганными”. В целом, подобное поведение прицела вообще не может быть признаком того, что прицелом управляет внешняя программа — злоумышленникам не составляет никакого труда сделать движение кружка плавным и это никак не повлияет на эймбот, ведь пушка всё равно двигается с конечной скоростью.

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

Эффективность подобных модификаций зависит от игрового режима.

Так как игровой клиент располагает информацией о типе техники и её положении для того, чтобы быть готовым отрисовать модель танка, то в режимах танкового РБ и СБ (где нет маркеров и не выводится расстояние до цели) автоэйм (он же эймбот) помогает уже тем, что находит противников. Кроме того, на больших расстояниях стрельбы примитивный баллистический калькулятор позволяет выставить примерный угол подъёма ствола, чтобы попадать примерно в цель — т.е. в вас (точность выставления зависит от многих факторов, в частности от того, двигаетесь ли вы, а также от ряда других). При этом такой “бот” не целится в уязвимые места — это трудная задача, которую робот решает относительно плохо, но на больших дистанциях снаряд имеет шанс попасть по навесной траектории в крышу, где у большинства танков слабая броня. Однако на коротких дистанциях (в 300-500 метров и менее) это редко служит хорошую службу. Характерным признаком такого автоэйма является стрельба без какого-либо “выцеливания” противника и вымеривания угла наведения, стрельба по закрытым позициям на больших дистанциях, отсутствие времени на поиск других углов после промаха или попадания.В режиме танкового АБ эймбот не даёт ощутимых преимуществ над обычной функцией наведения на цель и баллистическим компьютером (“зеленым крестиком”).

В самолётных режимах эймбот относительно бесполезен — он может помочь стрелять только по относительно неподвижной (не маневрирующей) цели, и только при управлении максимально маневренными самолётами (бипланами). В большинстве случаев эймбот заметно хуже игрока понимает, куда и как может полететь противник (точка упреждения показывает лишь, где окажется самолёт в случае, если не будет маневрировать), и уж тем более не способен справиться с тем, чтобы адекватно построить свой манёвр захода на цель, рассчитывая свою энергию, энергию противника и так далее.

По анализу статистики, игроки, использовавшие эймбот в самолётных режимах, имели результат даже ниже среднего (поэтому в прошлом наказания для нарушителей были относительно мягкими, от двух недель до месяца за первое нарушение, — эти нарушители и без всякого наказания были весьма посредственными игроками).

В симуляторных режимах при игре на самолёте эймбот и вовсе бесполезен.

“Автоогонь” — бот, который нажимает кнопку открытия огня при совмещении прицела с мишенью — в War Thunder, насколько нам известно, не используется, так как во всех режимах подобный функционал принесёт больше вреда, чем пользы. Как его вычислить, очевидно из описания его действия, но по сути игрок с ним больше вредит себе, чем помогает.

— Что вы делаете с читерами?

Баним. В настоящее время — как правило, навсегда. Списки забаненных не публикуются, дабы избежать “охоты на ведьм”. Вместе с тем с недавних пор у забаненных есть статус на сайте — “забанен” — так что, если вы кого-то подозреваете/подозревали, то можете проверить у него наличие этого статуса.

Читайте также:
Получите Boxer MGS в событии «Мобильный снайпер»!
  • 26 сентября 2024
Boxer MGS: мобильный снайпер
  • 3 октября 2024
По Дорожной карте: детализированная модель повреждения вертолетов
  • 16 сентября 2024
Присоединяйтесь к испытаниям малого флота Франции!
  • 10 сентября 2024

Комментарии (461)

Новость больше не доступна для комментирования