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 :)
fuente
Respuestas:
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.
fuente
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.
fuente
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.
fuente
Y hágase la pregunta más importante de si vale la pena. Los tramposos y los botters pueden hacer 2 cosas:
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,
fuente