Зачем игровые сервера подделывают онлайн? И как это распознать?

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

Какой такой поддельный онлайн? О_о

Я занимаюсь разработкой игровых рейтингов, которые суммарно посещают десятки миллионов человек. Например, под моим управлением находится проект HotMC – его страницы просматривают в среднем 2'000'000 раз в месяц.

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

Зачем игровые сервера подделывают онлайн? И как это распознать?

В ход идут самые разные трюки:

  • размещение сервера на разных доменах под видом разных
  • поддельный завышенный онлайн
  • услуги с автоподпиской или другими хитрыми условиями
  • использование имён популярных ютуберов для продвижения в поиске
  • распространение своих сборок ядра с «сюрпризами» внутри

...и множество других вещей. Если будет интересно, я постепенно обо всём расскажу в своих статьях на DTF 😉

Сегодня речь пойдёт про поддельный онлайн – это когда сервер показывает игроку большее число посетителей, нежели играет на самом деле.

Зачем это нужно?

Самый главный эффект – психологический. Не секрет, что игроки гораздо охотнее заходят на те сервера, где уже есть другие игроки. Это логично и просто: люди ищут в сети других людей. Поиграть в одиночку можно и в сингл плеере.

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

Помню, лет 15 назад у меня были свои сервера CS 1.6 и Quake – так вот, на первых порах каждый день приходилось собирать основной костяк игроков вручную...

...и только после этого в онлайн начинали подтягиваться остальные. Собрать и удержать первых людей всегда трудно.

Зачем с этим бороться?

Как я уже писал выше, собрать первый костяк игроков всегда трудно. Это некоторый барьер, который должен преодолеть любой игровой сервер на пути к высокому онлайну.

Если уже на этом этапе создатель сервера начинает в таких мелочах обманывать своих посетителей, то чего от него можно ожидать в будущем?

Мы заботимся о своих посетителях и поэтому понижаем в рейтинге проекты, которые используют недобросовестные приёмы. Для этого в рейтинге разработана целая система негативных и положительных факторов, которые влияют на рейтинг каждого сервера.

Одним из таких негативных факторов как раз и является «Поддельный онлайн»:

Очередной сервер получил свой минус в карму.
Очередной сервер получил свой минус в карму.

Если сервер исправляет своё поведение, то этот негативный фактор пропадает. Если же упорно продолжает накручивать свой онлайн, то снижается всё ниже и ниже в рейтинге. Всё просто.

Как вообще это выглядит?

Давайте сначала посмотрим, как выглядит нормальный онлайн. Хороший график онлайна зачастую выглядит как равномерные подъёмы и спады, которые совпадают по периодичности от недели к неделе.

Например, так:

Нормальный естественный график онлайна игрового сервера.
Нормальный естественный график онлайна игрового сервера.

Видно, что сервер набирает пиковый онлайн примерно в одно и то же время, а по ночам онлайн падает до одних и тех же значений (около 20 игроков). При этом есть как высокий уровень онлайна, так и низкий «околонулевой».

А теперь давайте посмотрим, как выглядят подделки. Несколько примеров:

Самая тупая реализация – стабильно 160 человек :)
Самая тупая реализация – стабильно 160 человек :)
Онлайн колеблется, но в очень узком коридоре между 200 и 250.
Онлайн колеблется, но в очень узком коридоре между 200 и 250.
Онлайн колеблется около низких значений: иногда около 10, иногда около 6, иногда у нуля.
Онлайн колеблется около низких значений: иногда около 10, иногда около 6, иногда у нуля.
Онлайн обладает некоторой периодичностью, но никогда не падает ниже 20.
Онлайн обладает некоторой периодичностью, но никогда не падает ниже 20.

Есть ещё некоторые экзотические примеры, но я не буду их здесь приводить. Это достаточно скучное занятие.

Каждый изворачивается как может. Кто-то тупо фиксирует свой онлайн, кто-то неуклюже устанавливает минимальный порог, а кто-то накручивает ботами, но график всё равно выглядит неестественно.

Как мы выявляем поддельный онлайн?

У нас есть множество фоновых процессов, написанных на C++ – они быстро и непрерывно анализируют показатели всех серверов на предмет аномалий. Это такой большой конвейер, по которому едут сотни тысяч цифр.

Алгоритм выявления поддельного онлайна достаточно сложный, и содержит некоторые подводные камни, о которых я сейчас расскажу.

Во-первых, график онлайна нужно разбить на непрерывные участки данных. Между соседними точкам анализируемого графика не должно быть разрывов более 30 минут. Иначе можно получить ошибочный результат.

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

Ещё одна причина резких скачков – атака ботами. Если сервер атаковали, то его онлайн может наоборот скакнуть до сотен тысяч игроков за пару секунд.

Пример ниже:

Резкий точечный подъём онлайна игрового сервера от 300 до 550 игроков.
Резкий точечный подъём онлайна игрового сервера от 300 до 550 игроков.

Очистить набор данных от таких скачков нам помогают математические библиотечки, которые умеют высчитывать перцентили. Если какое-то значение не укладывается в 98% остальных значений, то это аномалия, и её нужно исключить из анализа.

Далее мы высчитываем, с какой скоростью в каждой точке меняется онлайн сервера. Проще говоря, берём первую производную.

А вот дальше происходит анализ производной. Для каждого уровня онлайна она должна колебаться в определённом математическом «коридоре», тогда график можно назвать «естественным», если же этого не происходит, то перед нам поддельный онлайн.

В общем, матан как всегда рулит и спасает нас от накрутчиков самым эффективным образом: здравый смысл, дельты, перцентили, производные, немного if-ов – и нарушитель автоматически наказан 😈

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

В целом, за 7 лет я очень многое узнал, благодаря созданию своих игровых рейтингов. Начиная от того, как рассчитывается рейтинг IMDb и заканчивая юридическими особенностями работы на территории разных стран.

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

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

Спасибо всем, кто прочитал! Хорошей пятницы и выходных 😉

6868
38 комментариев

Комментарий недоступен

10
Ответить

👍 только не забудьте написать свою статью на DTF, чтобы мы могли с вами устроить гонку вооружений ))

p.s. Если серьёзно, то пользователи дополнительно проверяют сервера вручную, и если там какая-то хитрая накрутка, то мы узнаём об этом от них. На странице каждого сервера есть кнопочка для репорта о любых проблемах.

1
Ответить

Пошел ты в баню со своим перцентилем. Залез я почитать .... а там пришлось читать 68–95–99.7 rule, Chebyshev's inequality, Normality test, Bayes factor, Statistical hypothesis testing и.т.д. Теперь голова болит. За то кажется понял как работает перцентиль...

6
Ответить

🙂👍

2
Ответить

Комментарий недоступен

4
Ответить

Крупные корпорации как никто другой умеют в психологию... И они частенько используют подобные приёмы – особенно при запуске новых продуктов. Показать высокие показатели, сфабриковать успех (которого ещё нет) и так далее. А дальше срабатывает эффект толпы :)

1
Ответить

Прямо сейчас из нашей техподдержки прислали скриншот. Владелец сервера спрашивает, за что его сервер получил метку «Поддельный онлайн»? :D

Иногда ещё начинают спорить, что это у них «всегда так игроки дружно заходят» 😞

2
Ответить