Cómo proteger a tu tirador en línea en tiempo real de posibles robots

14

Estoy buscando crear un juego multijugador de arriba hacia abajo. Si bien he leído sobre diferentes temas, puedo ver que tengo algunos desafíos reales por delante, pero estoy preparado para ello.

Una cosa que no puedo entender es cómo se supone que debo proteger el juego de las personas que intentan crear bots.

Lo que quiero decir es que, hasta donde yo entiendo, es imposible proteger el tráfico de la red de manera que los jugadores no puedan crear programas que escuchen lo que está sucediendo y lo entiendan.

Entonces, lo que me preocupa es que las personas puedan crear bots que escuchen la ubicación actual de los jugadores rivales y envíen comunicaciones que imiten como si el jugador estuviera disparando en la ubicación "perfecta" exacta para ganar esa partida.

Entonces, ¿qué tipo de técnicas se utilizan para proteger los juegos en tiempo real de tales bots?

También me gustaría mencionar que he intentado buscar discusiones (ya que esto suena como algo con lo que muchas personas luchan), pero no pude encontrar nada al respecto específicamente, solo como parte de preguntas más amplias sobre la creación de redes en juegos en tiempo real . Si debería haber buscado más, no dudes en ponerme en mi lugar :)

Zaky German
fuente
Punkbuster, jeje ... Hay una razón por la que hay una aplicación de terceros que detecta aplicaciones y alteraciones de terceros :)
James
¿Por qué te preocupa si la gente crea bots? Tal vez puedas solucionarlo, así que no es un problema.
Beska
@James Punkbuster es horrible. Soy muchos otros que han tenido malas experiencias tratando de jugar nuevos juegos cuando salen. Constantemente te patean por algún error punkbuster, no divertido.
AttackingHobo
@Beska: tan genial como suena, necesito un poco de convicción seria de que los bots no destruirán el juego para los jugadores que no son bot. Estoy seguro de que se podría diseñar un juego donde los bots no arruinarían la experiencia. Estoy bastante seguro de que para la mayoría de los juegos multijugador en línea no es trivial hacer que la mecánica del juego sea a prueba de bots.
deft_code
@AttackingHobo Todo lo que quería señalar es que hay compañías enteras que no hacen nada más que intentar encontrar una solución a este problema. PunkBuster es solo una de las piezas de software más conocidas que intenta hacer esto, bueno o malo :)
James

Respuestas:

8

Hay dos enfoques para contrarrestar los bots. Son protección del lado del cliente y análisis del lado del servidor.

La protección del lado del cliente es el enfoque más obvio: la fuerza bruta, en cierto sentido. Realiza todos los esfuerzos para garantizar que el cliente del juego sea totalmente legítimo, que no haya sido manipulado y que ningún otro programa lo afecte. Ahora, este es un problema difícil e imposible de resolver por completo. Pero muchos juegos lo intentan y tienen cierto éxito con este método. Sé que existen algunas soluciones preparadas para la protección del cliente, y le sugiero que las busque. Implementar uno usted mismo es una tarea desalentadora.

Además de ser menos del 100% efectivo, la protección del lado del cliente tiene el inconveniente de ser extremadamente molesta para sus jugadores. Por lo general, implica cosas como deshabilitar el cambio de tareas de alt-tab, programas antivirus, etc.

El análisis del lado del servidor es menos intrusivo. En este enfoque, tiene un código de servidor que analiza los patrones en el comportamiento de los jugadores. Muy a menudo, los bots juegan demostrablemente diferente. Por ejemplo, los jugadores humanos tienen un tiempo variable entre acciones (como disparar), y esta vez obedece a una distribución de curva de campana. Los bots primitivos tendrán un tiempo constante o se distribuirán de manera uniforme durante algún intervalo. Dato curioso: usando este método, una vez atrapamos a un jugador con un robot mecánico , un dispositivo inteligente que presionaba los botones de su teclado físico. No hace falta decir que ninguna cantidad de protección del cliente puede captar eso . Aún así, este análisis no es perfecto. Los bots más avanzados engañarán a sus sistemas, y cuantas más comprobaciones implemente, más avanzados serán los bots.

Para una mejor protección, puede combinar ambos métodos. La protección del cliente dificultará el desarrollo de bots, y el análisis del servidor detendrá los bots simples que se desarrollaron rápidamente. Pero hagas lo que hagas, nunca puedes detener a los bots por completo. Bueno, a menos que envíe a sus representantes a las casas de los jugadores, para supervisar su juego y denunciar violaciones. (Lo cual no es desconocido, por cierto. Definitivamente he leído una historia sobre la compañía de póker en línea que envía personas a la casa de un jugador muy exitoso, para confirmar que estaba jugando legítimamente. Pero parece que no puedo encontrarlo ahora).

Hay dos recomendaciones más dudosas para luchar contra los robots. Uno, encripta el tráfico de tu red. No creo que esto funcione. Con su cliente en manos de un enemigo, el tráfico puede ser y será descifrado ... o su propio cliente será utilizado para el cifrado. Por otro lado, el cifrado agrega retraso, y eso es realmente malo para un "tirador en tiempo real". La segunda recomendación es "solo diseña tu juego alrededor de esto". Si bien esto parece una buena idea, aún no he visto un solo juego que lo haya logrado.

No importa
fuente
1
Dudo que hayas encontrado a un tipo con un robot mecánico. Era más probable que un bot de software emulara un teclado de hardware para las entradas.
AttackingHobo
2
No, bot mecánico real. El autor nos envió fotos. Desafortunadamente, ya se eliminaron del servidor (¡fue en 2007!), Por lo que tendrá que aceptar mi palabra.
importa
Gracias por la respuesta. Supongo que el cifrado podría "elevar un poco el listón" y proteger a muchos de los hackers. ¿Pero cualquier encriptación de comunicación real sería práctica en juegos críticos como los shooters o incluso los MMO?
Zaky German
Ninguno de los juegos en los que trabajé usaba cifrado en ninguna parte excepto la secuencia de inicio de sesión, por lo que no sé cuánto afecta el retraso. Depende del algoritmo de cifrado, supongo.
importa
2

No esperaría que ninguno de los grandes jugadores hablara sobre lo que hacen para proteger sus juegos. Cuanto menos sepan las personas sobre lo que están haciendo, más difícil será para las personas evitarlo. Creo que parte de lo que hace Steam es buscar ciertas aplicaciones en ejecución que están en una lista negra.

Personalmente, trataría de cifrar y ofuscar la comunicación tanto como sea posible entre las máquinas de comunicación, podría valer la pena leer cómo funciona https / ssl para obtener algunas ideas. Si los hosts generaran claves públicas / privadas aleatorias y solo enviaran la parte pública a otros clientes, entonces algo no sería fácilmente capaz de interceptar y cambiar el contenido de los paquetes que se envían, aunque si tiene acceso al cliente máquina entonces nada es completamente seguro.

También deberá asegurarse de que el cliente exe no sea alterado.

Roger Perkins
fuente
1

Diseñe su juego para que el trabajo en equipo y las decisiones inteligentes reales sean más importantes que poder apuntar perfectamente. Se vuelve exponencialmente más difícil hacer bots decentes.

Tom Gullen
fuente
Creo que los juegos que dependen del trabajo en equipo y la preparación, y los juegos que dependen de habilidades de contracción pura tienen su lugar. Aún así, no creo que nadie deba adaptar sus elecciones de diseño de juego a obstáculos técnicos
Zaky German
@Zaky: Una vez realicé un prototipo de un juego de gusanos donde, durante la muerte súbita, la pantalla se llenaba lentamente con un fluido SPH. Se veía realmente genial hasta que el juego se retrasó hasta la muerte. Creo que muchas decisiones de diseño de juegos se ven afectadas por obstáculos técnicos.
deft_code
@deft_code Me refería al diseño del juego como en mecánica de juego, no diseño artístico o gráfico
Zaky German
Mi uso de SPH es tanto una mecánica de juego como la muerte acuosa en los gusanos. Solo cambio la forma en que el agua interactúa con el juego.
deft_code
0

Y hágase la pregunta más importante de si vale la pena. Los tramposos y los botters pueden hacer 2 cosas:

  1. destruir el juego por ellos mismos. No pueden jugar sin el bot, pierden rápidamente el interés y se van porque no es divertido.
  2. destruir el juego para los demás Se vuelven demasiado poderosos a través de su bot, lo que le cuesta a los clientes. Esto generalmente va acompañado de un solo jugador que controla múltiples bots desde la misma computadora física (o usa muchas más computadoras de las que se puede esperar que un solo jugador controle manualmente).

Los dos no son mutuamente excluyentes, por supuesto.

Por lo general, el mayor problema es 3+ (como un ser humano puede con el entrenamiento usar 2 teclados u otros dispositivos de entrada al mismo tiempo, pero no más, ya que solo tiene 2 manos) clientes de las mismas direcciones IP (o MAC) direcciones) actuando en unísono directo, ejecutando comandos dentro de milisegundos entre sí. Entonces, si detecta, digamos, 5 clientes que se originan en la misma dirección IP, todos dando comandos a una velocidad anormalmente alta y con una coordinación anormalmente cercana, es probable que haya encontrado su botter. Por lo general, esto será más dañino en escenarios pvp donde este ejército de bots puede dominar un enfrentamiento contra un número similar de toons controlados por humanos debido a su mayor coordinación y velocidad. En escenarios de pve, normalmente hay un daño limitado en el juego (excepto en que permite que una persona entrene múltiples toons a niveles altos más rápidamente,

jwenting
fuente