Читеры в многопользовательских играх
Последний шэр хорошего доклада с Unite 2025. В этот раз Making games that keep cheaters away 📺
Тему читов ранее у себя в блоге тоже однажды задевал 💬
И на Хабре ранее натыкался на серию статей: про сами читы и про анти-читы 📝
Что было внутри доклада, с небольшими дополнениями от себя:
1️⃣ Мотивации читеров: • Заработок (P2E, продажа прокаченных аккаунтов и читов, влияние на игровую хард-экономику). • Соц. статус: получение признания и статуса без усилий. • Доминирование.
2️⃣ Типы читов: • Локальные (Wall Hack, Radar, Aim Bots и т.д.) • Сетевые (Lag Switch, Fake Lag Drop Hack и т.д.) • Читы, изменяющие состояние игры (Speed Hack, Fly Hack и т.д.).
3️⃣ Способы реализации читов: • Изменение данных в RAM. • Реверс инжениринг, патчинг кода, подмена ассетов. • Перехват системных вызовов. • Подмена сетевых пакетов.
4️⃣ Модели авторитарность: • Server Authority, когда всё решает сервер, самый безопасный и подходящий для PvP. •Про виды авторитарности и топологий я ранее собирал более подробный материал 💬
5️⃣ Технические барьеры для читеров: • Code Obfuscation: беспорядочное переименование, перемешивание и замусоривание итогового кода. • Memory Scrambling: случайное смещение адресов в RAM. • Projection: смещение чисел в RAM, чтобы не хранить их в памяти в явном виде. • Network Encryption: шифрование сетевого трафика. • Data Encryption: шифрование сохраняемых данных. • Code Virtualization: использование кастомного языка для части кода игры, который может понять только встроенная в игру “виртуальная машина”. • Integrity Protection: хэширование и сверка файлов и участков памяти игры. • Anti-cheats инструменты: Client-side, Server-side. • Runtime-проверка подключенных дебаггеров. • Анализ паттернов поведения.
6️⃣ Правила разработки: • Запрещено хранить пароли и API-ключи в коде или системах контроля версий. • Серверный и клиентский код должны находиться в разных сборках и не попадать друг в друга. • Хранить в RAM минимально необходимую информацию для продолжения игры текущего конкретного игрока. • Не хранить в RAM избыточные данные других игроков.
7️⃣ Стратегии наказания: • Платные игры: бан для читера в бесплатной игре ничего не стоит. • Банить отложено, не сразу, чтобы читеры не поняли, из-за чего именно случился бан.
8️⃣ Задача в борьбе с читерами: • Искоренить читеров невозможно, но можно сделать взлом настолько дорогим и скучным, чтобы им было проще уйти в другой проект.
Это в т.ч. коррелирует с мыслью, которую я давно прочно ухватил из “45 татуировок менеджера” Батырева: если хочешь, чтобы следовали правилам, нужно создать условия, в которых нарушать правила настолько сложно, что проще им следовать.