Я хочу создать многопользовательский шутер сверху вниз. Хотя я читаю на разные темы, я вижу их, у меня впереди реальные проблемы, но я готов к этому.
Одна вещь, которую я не могу понять, - как я должен защищать игру от людей, которые пытаются создавать ботов?
Я имею в виду, что, насколько я понимаю, невозможно защитить сетевой трафик таким образом, чтобы игроки не могли создавать программы, которые слушают происходящее и понимают его.
Так что меня беспокоит то, что люди могут создавать ботов, которые слушают текущее местоположение соперников и отправляют сообщения, которые имитируют, как если бы игрок стрелял в точно «идеальном» месте, чтобы выиграть этот матч.
Так какие же методы используются для защиты игр в реальном времени от таких ботов?
Также я хотел бы упомянуть, что я пытался искать обсуждения (поскольку это звучит как что-то, с чем сталкиваются многие люди), но я не мог найти что-то конкретно об этом, только как часть более широких вопросов о сетевом взаимодействии в играх реального времени. , Если бы я выглядел более усердно, не стесняйтесь поставить меня на место :)
источник
Ответы:
Есть два подхода к борьбе с ботами. Это защита на стороне клиента и анализ на стороне сервера.
Защита на стороне клиента является наиболее очевидным подходом - в некотором смысле, грубой силой. Вы прилагаете все усилия, чтобы гарантировать, что игровой клиент полностью легитимен, не был подделан и никакие другие программы не влияют на него. Сейчас это сложная проблема, и ее невозможно полностью решить. Но многие игры пытаются, и имеют некоторый успех с этим методом. Я знаю, что существуют некоторые готовые решения для защиты клиентов, и предлагаю вам поискать их. Реализация одного это сложная задача.
Помимо того, что защита на стороне клиента менее чем на 100% эффективна, она чрезвычайно раздражает игроков. Обычно это такие вещи, как отключение переключения задач alt-tab, антивирусные программы и т. Д.
Анализ на стороне сервера менее навязчив. При таком подходе у вас есть некоторый серверный код, который анализирует закономерности поведения игроков. Чаще всего боты играют явно по-разному. Например, игроки-люди имеют различное время между действиями (например, стрельбой), и на этот раз подчиняются распределению кривой колокола. Примитивные боты будут иметь постоянное время или распределяться равномерно по некоторому интервалу. Интересный факт: используя этот метод, мы однажды поймали игрока с механическим ботом - умным устройством, которое нажимало кнопки на его физической клавиатуре. Само собой разумеется, не степень защиты клиента может поймать это . Тем не менее, этот анализ не является идеальным. Более продвинутые боты обманут ваши системы, и чем больше проверок вы внедрите, тем более продвинутыми будут боты.
Для лучшей защиты вы можете комбинировать оба этих метода. Защита клиентов усложнит разработку ботов, а анализ сервера остановит простых ботов, которые были разработаны быстро. Но что бы вы ни делали, вы никогда не сможете полностью остановить ботов. Ну, если вы не отправите своих представителей в дома игроков, чтобы контролировать их игру и сообщать о нарушениях. (Между прочим, это не случайно. Я определенно прочитал историю о том, что покерная компания онлайн посылает людей в дом очень успешного игрока, чтобы подтвердить, что он играет законно. Но сейчас я не могу его найти.)
Есть еще две сомнительные рекомендации для борьбы с ботами. Во-первых, зашифруйте сетевой трафик. Я не думаю, что это сработает. С вашим клиентом в руках врага трафик может быть и будет расшифрован ... или ваш собственный клиент будет использоваться для шифрования. С другой стороны, шифрование добавляет задержку, и это действительно плохо для «стрелка в реальном времени». Вторая рекомендация - «просто разработайте свою игру вокруг этого». Хотя это кажется здравой идеей, я еще не видел ни одной игры, которая бы справилась с этим.
источник
Я бы не ожидал, что кто-нибудь из крупных игроков расскажет о том, что он делает для защиты своих игр. Чем меньше людей знают о том, что они делают, тем труднее людям обходить их. Я думаю, что часть того, что делает Steam, это искать определенные приложения, которые находятся в черном списке.
Лично я бы попытался зашифровать и запутать обмен данными между машинами, насколько это возможно, возможно, стоит почитать, как работает https / ssl, чтобы получить некоторые идеи. Если бы хосты генерировали случайный открытый / закрытый ключи и отправляли только открытую часть другим клиентам, тогда что-то было бы нелегко перехватить и изменить содержимое отправляемых пакетов, хотя, если у вас есть доступ к клиенту машина то ничем не полностью безопасна.
Вам также нужно убедиться, что клиентский exe-файл не подделан.
источник
Создайте свою игру так, чтобы командная работа и реальные интеллектуальные решения были важнее, чем умение целиться. Делать приличных ботов экспоненциально сложнее.
источник
И задайте себе важный вопрос: стоит ли это того? Мошенники и боты могут делать 2 вещи:
Конечно, они не являются взаимоисключающими.
Обычно самая большая проблема - это 3+ (так как человек может при обучении использовать 2 клавиатуры или другие устройства ввода одновременно, но не более, так как у него только две руки) клиенты с одинаковыми или тесно связанными IP-адресами (или MAC-адресами). адреса) действуя в прямом унисон, выполняя команды в течение миллисекунд друг от друга. Таким образом, если вы обнаружите, что, скажем, 5 клиентов, исходящих с одного и того же IP-адреса, все дают команды с аномально высокой скоростью и с аномально близкой координацией, вы, вероятно, нашли своего бота. Обычно это будет самым разрушительным в сценариях PvP, где эта армия ботов может доминировать в сражении против такого же количества управляемых мультяшек из-за более высокой координации и скорости. В сценариях Pve, как правило, урон игры ограничен (за исключением того, что он позволяет одному человеку быстрее обучить несколько мультов до высоких уровней,
источник