Зачем игровые сервера подделывают онлайн? И как это распознать?
Продолжаю рассказывать детали реализации игровых рейтингов. В прошлый раз мы посмотрели, как устроены оценки IMDb – в этот раз будем бороться с фейковым онлайном, отсекая случайные выбросы и отклонения графиков.
Какой такой поддельный онлайн? О_о
Я занимаюсь разработкой игровых рейтингов, которые суммарно посещают десятки миллионов человек. Например, под моим управлением находится проект HotMC – его страницы просматривают в среднем 2'000'000 раз в месяц.
Семь лет назад, когда я только начинал делать рейтинги, у меня и близко не было понимания, сколько «хитростей» используют игровые сервера для привлечения и удержания посетителей.
В ход идут самые разные трюки:
- размещение сервера на разных доменах под видом разных
- поддельный завышенный онлайн
- услуги с автоподпиской или другими хитрыми условиями
- использование имён популярных ютуберов для продвижения в поиске
- распространение своих сборок ядра с «сюрпризами» внутри
...и множество других вещей. Если будет интересно, я постепенно обо всём расскажу в своих статьях на DTF 😉
Сегодня речь пойдёт про поддельный онлайн – это когда сервер показывает игроку большее число посетителей, нежели играет на самом деле.
Зачем это нужно?
Самый главный эффект – психологический. Не секрет, что игроки гораздо охотнее заходят на те сервера, где уже есть другие игроки. Это логично и просто: люди ищут в сети других людей. Поиграть в одиночку можно и в сингл плеере.
На сервера с нулевым онлайном заходят гораздо хуже. Иногда их просто игнорируют, пролистывая в списке серверов и переходя сразу к следующему серверу.
Помню, лет 15 назад у меня были свои сервера CS 1.6 и Quake – так вот, на первых порах каждый день приходилось собирать основной костяк игроков вручную...
...и только после этого в онлайн начинали подтягиваться остальные. Собрать и удержать первых людей всегда трудно.
Зачем с этим бороться?
Как я уже писал выше, собрать первый костяк игроков всегда трудно. Это некоторый барьер, который должен преодолеть любой игровой сервер на пути к высокому онлайну.
Если уже на этом этапе создатель сервера начинает в таких мелочах обманывать своих посетителей, то чего от него можно ожидать в будущем?
Мы заботимся о своих посетителях и поэтому понижаем в рейтинге проекты, которые используют недобросовестные приёмы. Для этого в рейтинге разработана целая система негативных и положительных факторов, которые влияют на рейтинг каждого сервера.
Одним из таких негативных факторов как раз и является «Поддельный онлайн»:
Если сервер исправляет своё поведение, то этот негативный фактор пропадает. Если же упорно продолжает накручивать свой онлайн, то снижается всё ниже и ниже в рейтинге. Всё просто.
Как вообще это выглядит?
Давайте сначала посмотрим, как выглядит нормальный онлайн. Хороший график онлайна зачастую выглядит как равномерные подъёмы и спады, которые совпадают по периодичности от недели к неделе.
Например, так:
Видно, что сервер набирает пиковый онлайн примерно в одно и то же время, а по ночам онлайн падает до одних и тех же значений (около 20 игроков). При этом есть как высокий уровень онлайна, так и низкий «околонулевой».
А теперь давайте посмотрим, как выглядят подделки. Несколько примеров:
Есть ещё некоторые экзотические примеры, но я не буду их здесь приводить. Это достаточно скучное занятие.
Каждый изворачивается как может. Кто-то тупо фиксирует свой онлайн, кто-то неуклюже устанавливает минимальный порог, а кто-то накручивает ботами, но график всё равно выглядит неестественно.
Как мы выявляем поддельный онлайн?
У нас есть множество фоновых процессов, написанных на C++ – они быстро и непрерывно анализируют показатели всех серверов на предмет аномалий. Это такой большой конвейер, по которому едут сотни тысяч цифр.
Алгоритм выявления поддельного онлайна достаточно сложный, и содержит некоторые подводные камни, о которых я сейчас расскажу.
Во-первых, график онлайна нужно разбить на непрерывные участки данных. Между соседними точкам анализируемого графика не должно быть разрывов более 30 минут. Иначе можно получить ошибочный результат.
Во-вторых, из анализируемых данных нужно убрать «выбросы» и прочие «аномалии». Сервера иногда падают, тогда онлайн может резко упасть до нуля. Такое бывает, и это нормально.
Ещё одна причина резких скачков – атака ботами. Если сервер атаковали, то его онлайн может наоборот скакнуть до сотен тысяч игроков за пару секунд.
Пример ниже:
Очистить набор данных от таких скачков нам помогают математические библиотечки, которые умеют высчитывать перцентили. Если какое-то значение не укладывается в 98% остальных значений, то это аномалия, и её нужно исключить из анализа.
Далее мы высчитываем, с какой скоростью в каждой точке меняется онлайн сервера. Проще говоря, берём первую производную.
А вот дальше происходит анализ производной. Для каждого уровня онлайна она должна колебаться в определённом математическом «коридоре», тогда график можно назвать «естественным», если же этого не происходит, то перед нам поддельный онлайн.
В общем, матан как всегда рулит и спасает нас от накрутчиков самым эффективным образом: здравый смысл, дельты, перцентили, производные, немного if-ов – и нарушитель автоматически наказан 😈
Владельцы серверов обычно удивляются, впервые сталкиваясь с такой системой, пишут в тех.поддержку, задают вопросы... но в итоге быстро всё исправляют и обещают больше так не делать. Самый распространённый способ накрутки – специальный плагин для сервера, который подделывает онлайн.
В целом, за 7 лет я очень многое узнал, благодаря созданию своих игровых рейтингов. Начиная от того, как рассчитывается рейтинг IMDb и заканчивая юридическими особенностями работы на территории разных стран.
Сейчас я начинаю постепенно делиться всем накопленным опытом в надежде, что кому-то эти материалы помогут при создании своих проектов, а кому-то просто будут интересны.
Каким бы простым не казался чужой проект, мы всегда видим на поверхности лишь верхушку айсберга. Внутри всегда таится гораздо больше интересного и сложного 🚀
Спасибо всем, кто прочитал! Хорошей пятницы и выходных 😉
Комментарий недоступен
👍 только не забудьте написать свою статью на DTF, чтобы мы могли с вами устроить гонку вооружений ))
p.s. Если серьёзно, то пользователи дополнительно проверяют сервера вручную, и если там какая-то хитрая накрутка, то мы узнаём об этом от них. На странице каждого сервера есть кнопочка для репорта о любых проблемах.
Пошел ты в баню со своим перцентилем. Залез я почитать .... а там пришлось читать 68–95–99.7 rule, Chebyshev's inequality, Normality test, Bayes factor, Statistical hypothesis testing и.т.д. Теперь голова болит. За то кажется понял как работает перцентиль...
🙂👍
Комментарий недоступен
Крупные корпорации как никто другой умеют в психологию... И они частенько используют подобные приёмы – особенно при запуске новых продуктов. Показать высокие показатели, сфабриковать успех (которого ещё нет) и так далее. А дальше срабатывает эффект толпы :)
Прямо сейчас из нашей техподдержки прислали скриншот. Владелец сервера спрашивает, за что его сервер получил метку «Поддельный онлайн»? :D
Иногда ещё начинают спорить, что это у них «всегда так игроки дружно заходят» 😞