La mayoría de los juegos en línea sufren este problema y hay algunas compañías de software para cubrir esto, pero recientemente, por lo que he visto, la mayoría de las compañías están tratando de evitar que esos programas creen su propio sistema (tormenta de nieve con Warden, Aion con su propia cuenta, etc. ...) pero es un caso muy difícil prevenir tal ...
Solo quería decir que hice otro tema de preguntas como wiki de la comunidad específico para publicar aplicaciones y sus características y las ideas detrás de esta pregunta aquí no es enumerarlas sino saber más sobre cuáles fueron sus intentos, problemas en el camino y posibles soluciones , pieza de códigos si la aplicación y así sucesivamente.
¿Qué tipo de protección usan ustedes para (intentar) prevenir tales actos?
- ¿Software anti trampa? (indique qué, por qué y posibles problemas que enfrentó, por ejemplo, aion dejó de usar GameGuard en la etapa beta debido a una gran cantidad de problemas de compatibilidad y quejas de sus usuarios)
- Tu propio código? (¿qué tipo de verificación sueles ejecutar para asegurarte de que los jugadores de mala fe, por ejemplo, speedhack, verifiquen la nueva ubicación contra la velocidad + la última ubicación, etc ...)
- Ninguno, no me importa (¿alguna razón personal o aportación que quisiste compartir?)
¿Alguna pieza interesante de código relacionada con el problema que le gustaría publicar?
Siéntase libre de volver a trabajar mi texto, ¿mi inglés es genial? **
fuente
Respuestas:
Desafortunadamente, es realmente difícil evitar que las personas hagan trampa, por eso se creó un software como Punkbuster para tratar de atrapar a algunos.
Para un MMO, lo más importante que puede hacer es no confiar en nada que el cliente le envíe . El cliente no debería poder decirle a dónde se ha movido el jugador, cuánto daño le han hecho a quién, etc. En su lugar, debe enviar la entrada de control al servidor, validar que sea práctico (presionar el botón "ataque" 1000 veces en 1 segundo, por ejemplo, no es válido), luego actualice la simulación en el servidor. Luego enviarías las partes relevantes del nuevo estado del juego al cliente.
Mientras valida la entrada del usuario, también es posible buscar tendencias en su entrada. Si no permite macros, puede capturarlos aquí al notar que el usuario ha hecho clic en el mismo botón en las mismas coordenadas de píxel en intervalos perfectos de 1 segundo durante los últimos 30 minutos.
El cliente en sí es el lugar principal donde las personas pueden hacer trampa, por lo que programas como Punkbuster pueden reducir las trampas, los objetivos, etc. Aparte de eso, no confiar en el cliente y validar cualquier cosa que el cliente le envíe ayudará a reducir las trampas.
fuente
Inicio sesión. Todo lo que sucede en el servidor debe registrarse, e idealmente todo lo que proviene del cliente. El cliente es inherentemente poco confiable, pero incluso el registro de datos no confiables puede ser esclarecedor.
Una vez que todo está registrado, la detección de trampas se convierte en una cuestión de análisis de datos. Algunos trucos serán obvios (valores fuera de rangos aceptables, por ejemplo, poder moverse entre puntos mucho más rápido de lo que normalmente permite el avatar), otros son más insidiosos (como los aimbots que permiten la focalización perfecta de píxeles dentro de plazos artificialmente cortos). Algunos son aún más difíciles de detectar (como los wallhacks), pero grabar tanto como sea posible permite la detección automática y manual. Hay varios artículos al respecto, pero en general los trucos se detectan muy fácilmente en la detección automática porque son tan predecibles / repetibles, exactamente como los jugadores humanos no lo son.
Dado que lo más probable es que no se pueda grabar absolutamente todo, es útil el registro por niveles. Por ejemplo, los informes de trampas por parte de los usuarios, o el registro básico simple que detecta la posibilidad de trampa (puntuación que está muy por encima de la curva estadística), sería suficiente para marcar un cliente / cuenta / clave de CD en particular para un registro más detallado, lo que podría luego se utilizará para demostrar, más allá de toda duda razonable, que se está utilizando un truco.
Lo que haces cuando detectas un truco es algo completamente diferente. La prohibición de cuentas después del hecho es buena, especialmente cuando tiene un mecanismo de detección automatizado que es lo suficientemente confiable. La prohibición temprana alerta a los tramposos de que están siendo detectados y también corre el riesgo de falsos positivos debido a mecanismos de detección no concluyentes. Prohibir demasiado tarde corre el riesgo de arruinar la experiencia del juego para otros. Esta es un área muy gris, y requiere que los desarrolladores hagan la llamada de juicio.
fuente
Asumiendo que todo el trabajo importante en su juego se está produciendo en el lado del servidor, debería haber poca o ninguna trampa posible. Si desea restringir la creación de macros o hacer que sea desagradable para las personas editar paquetes, haga que su programa explore periódicamente los módulos activos en su proceso. Si encuentra, por ejemplo, WpeSpy.dll, sabrá que tienen WPE conectado. Hazlo para las otras herramientas comunes. Esto se puede evitar, y es una carrera armamentista y una causa perdida, pero si su juego es relativamente pequeño, puede reducir fácilmente el número de personas que se divierten en un factor de diez ... y eso puede ser bueno suficiente para ti.
fuente
but also send timestamps, and if you get too much drift, you'll know they are using one. Mark their account, but don't kick them immediately -- immediate feedback is a great way for someone to know what your software detects.
estaba buscando implementar un sello de tiempo y advertir al sistema de los usuarios marcados, actualmente lo que he puesto al jugador en una lista en lo que estoy trabajando ahora es que si algunos tienen un alto uso de abuso, enviarán una alerta a un GM en línea para verificación ...