Как защитить своего онлайн-шутера в реальном времени от потенциальных ботов

14

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

Одна вещь, которую я не могу понять, - как я должен защищать игру от людей, которые пытаются создавать ботов?

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

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

Так какие же методы используются для защиты игр в реальном времени от таких ботов?

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

Заки немецкий
источник
Punkbuster, хе-хе .. Есть причина, по которой существует стороннее приложение, которое обнаруживает сторонние приложения и изменения :)
James
Почему вы беспокоитесь, если люди создают ботов? Может быть, вы можете обойти это, так что это не проблема.
Беска
@ Джеймс Панкбастер ужасен Я, как и многие другие, испытывал неудачные попытки играть в новые игры, когда они выходят. Постоянно быть выгнанным за некоторую ошибку punkbuster, не забаву.
AttackingHobo
@Beska: как бы круто это не звучало, мне нужно серьезное убеждение, что боты не разрушат игру для не-ботовых игроков. Я уверен, что можно разработать игру, в которой боты не испортят впечатления. Я совершенно уверен, что для большинства многопользовательских онлайн-игр нет ничего проще в том, чтобы сделать игровую механику доказательством ботов.
deft_code
@AttackingHobo Все, что я хотел сказать, - это то, что есть целые компании, которые только и пытаются найти решение этой проблемы. PunkBuster - это лишь одна из наиболее известных программ, которая пытается сделать это, хорошо это или плохо :)
James

Ответы:

8

Есть два подхода к борьбе с ботами. Это защита на стороне клиента и анализ на стороне сервера.

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

Помимо того, что защита на стороне клиента менее чем на 100% эффективна, она чрезвычайно раздражает игроков. Обычно это такие вещи, как отключение переключения задач alt-tab, антивирусные программы и т. Д.

Анализ на стороне сервера менее навязчив. При таком подходе у вас есть некоторый серверный код, который анализирует закономерности поведения игроков. Чаще всего боты играют явно по-разному. Например, игроки-люди имеют различное время между действиями (например, стрельбой), и на этот раз подчиняются распределению кривой колокола. Примитивные боты будут иметь постоянное время или распределяться равномерно по некоторому интервалу. Интересный факт: используя этот метод, мы однажды поймали игрока с механическим ботом - умным устройством, которое нажимало кнопки на его физической клавиатуре. Само собой разумеется, не степень защиты клиента может поймать это . Тем не менее, этот анализ не является идеальным. Более продвинутые боты обманут ваши системы, и чем больше проверок вы внедрите, тем более продвинутыми будут боты.

Для лучшей защиты вы можете комбинировать оба этих метода. Защита клиентов усложнит разработку ботов, а анализ сервера остановит простых ботов, которые были разработаны быстро. Но что бы вы ни делали, вы никогда не сможете полностью остановить ботов. Ну, если вы не отправите своих представителей в дома игроков, чтобы контролировать их игру и сообщать о нарушениях. (Между прочим, это не случайно. Я определенно прочитал историю о том, что покерная компания онлайн посылает людей в дом очень успешного игрока, чтобы подтвердить, что он играет законно. Но сейчас я не могу его найти.)

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

Ничего
источник
1
Я сомневаюсь, что вы нашли парня с механическим ботом. Это был скорее программный бот, который эмулировал аппаратную клавиатуру для ввода.
AttackingHobo
2
Нет, настоящий механический бот. Автор прислал нам фотографии. К сожалению, они уже удалены с сервера (это было в 2007 году!), Поэтому вам придется поверить мне на слово.
Nevermind
Спасибо за ответ. Я полагаю, что шифрование может немного поднять планку и оградить от многих хакеров. Но будет ли практичным какое-либо шифрование для коммуникации в играх с критичным временем, таких как стрелялки или даже MMO?
Заки Герман
Ни в одной из игр, над которыми я работал, нигде не использовалось шифрование, кроме последовательности входа в систему, поэтому я не знаю, насколько она влияет на лаг. Зависит от алгоритма шифрования, наверное.
Nevermind
2

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

Лично я бы попытался зашифровать и запутать обмен данными между машинами, насколько это возможно, возможно, стоит почитать, как работает https / ssl, чтобы получить некоторые идеи. Если бы хосты генерировали случайный открытый / закрытый ключи и отправляли только открытую часть другим клиентам, тогда что-то было бы нелегко перехватить и изменить содержимое отправляемых пакетов, хотя, если у вас есть доступ к клиенту машина то ничем не полностью безопасна.

Вам также нужно убедиться, что клиентский exe-файл не подделан.

Роджер Перкинс
источник
1

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

Том Гуллен
источник
Я думаю, что игры, которые зависят от командной работы и подготовки, и игры, которые зависят от чистых навыков мышц, имеют свое место. Тем не менее, я не думаю, что кто-то должен адаптировать свой игровой дизайн к техническим препятствиям
Заки Герман,
@Zaky: Однажды я создал прототип игры в стиле червей, где во время внезапной смерти экран медленно заполнялся жидкостью SPH. Это выглядело действительно круто, пока игра не отстала до смерти. Я думаю, что на многие решения по разработке игр влияют технические препятствия.
deft_code
@deft_code Я имел в виду игровой дизайн как в механике геймплея, а не художественный или графический дизайн
Заки Герман,
Мое использование SPH - такая же игровая механика, как и водянистая смерть червей. Я просто меняю способ взаимодействия воды с игрой.
deft_code
0

И задайте себе важный вопрос: стоит ли это того? Мошенники и боты могут делать 2 вещи:

  1. уничтожить игру для себя. Они не могут играть без бота, они быстро теряют интерес и уходят, потому что это не весело.
  2. уничтожить игру для других. Они становятся чрезмерно мощными благодаря своим ботам, что обходится вашим клиентам. Обычно это сопровождается тем, что один игрок управляет несколькими ботами с одного и того же физического компьютера (или использует гораздо больше компьютеров, чем один игрок может управлять вручную).

Конечно, они не являются взаимоисключающими.

Обычно самая большая проблема - это 3+ (так как человек может при обучении использовать 2 клавиатуры или другие устройства ввода одновременно, но не более, так как у него только две руки) клиенты с одинаковыми или тесно связанными IP-адресами (или MAC-адресами). адреса) действуя в прямом унисон, выполняя команды в течение миллисекунд друг от друга. Таким образом, если вы обнаружите, что, скажем, 5 клиентов, исходящих с одного и того же IP-адреса, все дают команды с аномально высокой скоростью и с аномально близкой координацией, вы, вероятно, нашли своего бота. Обычно это будет самым разрушительным в сценариях PvP, где эта армия ботов может доминировать в сражении против такого же количества управляемых мультяшек из-за более высокой координации и скорости. В сценариях Pve, как правило, урон игры ограничен (за исключением того, что он позволяет одному человеку быстрее обучить несколько мультов до высоких уровней,

jwenting
источник