Документация Steamworks
Интеграция системы VAC

Задачи и принципы

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

В случае блокировки системой VAC произойдёт следующее:
  • Аккаунт не сможет подключиться к защищённым серверам приложений, в которых была получена блокировка
  • Блокировка будет видна в профиле сообщества Steam
  • Аккаунт больше не сможет поделиться играми с включённой системой VAC
  • Если пользователь получил доступ к игре с помощью функции Family Library Sharing, её владелец также подвергнется блокировке.
Дополнительную информацию можно найти в следующих статьях с ответами на частые вопросы пользователей: Античит Valve (VAC) и Меня заблокировала система VAC.

Требования

Наличие многопользовательской игры
Система VAC рассчитывает на то, что игровой сервер исключит заблокированных пользователей из игр. Поэтому система функционирует только в рамках многопользовательских игр и совершенно бесполезна в однопользовательских играх.

Система VAC требует наличия API аутентификации Steamworks
Аутентификация должна быть применена в игровом клиенте и на сервере посредством API аутентификации Steam.

Необходимо включить API античита
Это можно сделать в разделе «Настройка античита» на странице управления приложением. Включение данных API требуется для применения игровых блокировок и обнаружения читов в приложении.

Разработчик, активно занимающийся поиском читов
Система VAC рассчитана на обнаружение только тех читов, о которых сообщают разработчики. Сотрудники Valve не занимаются активным поиском читов автоматически или вручную. Сообщайте о читах с помощью веб-API ICheatReportingService/ReportCheatData и по электронной почте (на адрес valveanticheat@valvesoftware.com), чтобы мы смогли их классифицировать и включить в базу данных системы обнаружения читов.

Защищённые игровые серверы

«Защищённая» игра не позволит игроку, изобличённому в использовании читов, запустить её. Каждая отдельная копия вашей игры предоставляет выбор запуска в защищённом или незащищённом режиме. Вам решать, какими правилами будет руководствоваться ваша игра. Обычно по умолчанию устанавливается защищённый режим с предоставлением пользователю возможности запустить игру в незащищённом режиме. Таким образом, вы сможете отличить игроков, использующих читы, от остальных пользователей в вашем сообществе, допуская при этом их участие в игре. Только пользователи, подключённые к защищённому серверу, подвергнутся сканированию на наличие читов.

Интеграция

Обнаружение читов системой VAC не зависит от вашего игрового клиента: эту функцию выполняет Steam. Игра должна руководствоваться надёжными принципами и защищать свои ресурсы и внутреннее состояние. Игре необходимо использовать API Steamworks, чтобы узнать статус блокировки пользователя системой VAC. В обратном вызове ISteamUser::ValidateAuthTicketResponse_t, полученном от функции ISteamUser::BeginAuthSession, будут возвращены 3 результата, относящиеся к системе VAC. Результаты аутентификации:
  • k_EAuthSessionResponseVACBanned возвращается, если игрок заблокирован системой VAC за использование читов.
  • k_EAuthSessionResponseVACCheckTimedOut возвращается, если игрок не позволяет системе VAC просканировать свой компьютер на наличие читов. В таком случае игрока следует выгнать из игры.
  • k_EAuthSessionResponsePublisherIssuedBan возвращается, когда пользователь заблокирован с помощью веб-API RequestPlayerGameBan.

Связанные веб-API

Смотрите документацию по веб-API для дополнительной информации по использованию следующих веб-API.