Есть два подхода к борьбе с ботами. Это защита на стороне клиента и анализ на стороне сервера.
Защита на стороне клиента является наиболее очевидным подходом - в некотором смысле, грубой силой. Вы прилагаете все усилия, чтобы гарантировать, что игровой клиент полностью легитимен, не был подделан и никакие другие программы не влияют на него. Сейчас это сложная проблема, и ее невозможно полностью решить. Но многие игры пытаются, и имеют некоторый успех с этим методом. Я знаю, что существуют некоторые готовые решения для защиты клиентов, и предлагаю вам поискать их. Реализация одного это сложная задача.
Помимо того, что защита на стороне клиента менее чем на 100% эффективна, она чрезвычайно раздражает игроков. Обычно это такие вещи, как отключение переключения задач alt-tab, антивирусные программы и т. Д.
Анализ на стороне сервера менее навязчив. При таком подходе у вас есть некоторый серверный код, который анализирует закономерности поведения игроков. Чаще всего боты играют явно по-разному. Например, игроки-люди имеют различное время между действиями (например, стрельбой), и на этот раз подчиняются распределению кривой колокола. Примитивные боты будут иметь постоянное время или распределяться равномерно по некоторому интервалу. Интересный факт: используя этот метод, мы однажды поймали игрока с механическим ботом - умным устройством, которое нажимало кнопки на его физической клавиатуре. Само собой разумеется, не степень защиты клиента может поймать это . Тем не менее, этот анализ не является идеальным. Более продвинутые боты обманут ваши системы, и чем больше проверок вы внедрите, тем более продвинутыми будут боты.
Для лучшей защиты вы можете комбинировать оба этих метода. Защита клиентов усложнит разработку ботов, а анализ сервера остановит простых ботов, которые были разработаны быстро. Но что бы вы ни делали, вы никогда не сможете полностью остановить ботов. Ну, если вы не отправите своих представителей в дома игроков, чтобы контролировать их игру и сообщать о нарушениях. (Между прочим, это не случайно. Я определенно прочитал историю о том, что покерная компания онлайн посылает людей в дом очень успешного игрока, чтобы подтвердить, что он играет законно. Но сейчас я не могу его найти.)
Есть еще две сомнительные рекомендации для борьбы с ботами. Во-первых, зашифруйте сетевой трафик. Я не думаю, что это сработает. С вашим клиентом в руках врага трафик может быть и будет расшифрован ... или ваш собственный клиент будет использоваться для шифрования. С другой стороны, шифрование добавляет задержку, и это действительно плохо для «стрелка в реальном времени». Вторая рекомендация - «просто разработайте свою игру вокруг этого». Хотя это кажется здравой идеей, я еще не видел ни одной игры, которая бы справилась с этим.