Sobre juegos online,tramposos y codigo cerrado/abierto
|
|
Por very happy
departamento Quisiera estar equivocado , Sección Diarios Puesto a las Thu Oct 12th, 2006 at 03:12:21 PM CET
|
|
Los juegos online tienen una serie de requerimientos que no comparten con el resto de juegos.Uno de ellos,quizas el mas importante,viene dado por un tipo especial de jugador: El jugador tramposo.
Este tipo de jugador usa modificaciones al propio juego o programas ajenos a este para lograr ciertas ventajas con respecto al resto de jugadores.
|
Estas ventajas pueden ser de muy diversos tipos como por ejemplo (basicamente pondre ejemplos de FPSs y MMORPGs):
- Godmodes (invencibilidad o capacidad de no sufrir daños)
- Vaccums (Atraer a todos los monstruos u objetos a un determinado puento del mapa para hacer mas facil su recoleccion o muerte)
- Timers (Programas o modificaciones que avisan cada vez que se produce un determinado evento en el juego,por ejemplo ,el arma mas potente se halla disponible de nuevo,generalmente son cronometros y de ahi el nombre)
- Bots (programas que juegan sin que haya una persona fisica manejando el jugador).De estos hay varios tipos:Aimbots (Ayudan a apuntar.En este tipo de bot si que existe un jugador manejando el personaje) Autolooters (Recogen automaticamente cualquier objeto en el suelo.En estos tambien suele haber un jugador presente)...
- Skin shifting (Cambio de "piel":En los FPSs los colores de un jugador puelen determinar a que equipo se pertenece.Los que usan este tipo de trampa pueden cambiar su color sin cambiar su equipo)
- Otro tipo de trampa muy similar a la anterior es cambiar el color de los enemigos para hacerles mas visibles
- Otras
Ante estos abusos los juegos online necesitan protecciones adicionales.En esta entrada intentare explicar varias de estas protecciones usadas por los juegos de codigo cerrado y porque creo que no se pueden aplicar al software de codigo abierto (se aceptan comentarios al respecto).Algunas de estas protecciones son:
- Seguridad basada en obscuridad: Esta es la primera barrera de proteccion de que disponen los juegos de codigo cerrado.Su funcionamiento es simple: Si el futuro tramposo no sabe como funciona el juego le sera mas dificil hacer trampas porque primero debera comprender como funciona.Esta proteccion solo desanimara a los tramposos con menos perseverancia y habilidad,sin embargo,es una adicion a cualquier otra medida.Un juego de codigo abierto no podra usar esta medida pues el tramposo tendra a su disposicion el codigo fuente y podra estudiarlo a su antojo
- Hacer la mayor parte de las acciones server side,esto es,el servidor es el que se encarga de esas cosas.Esta estrategia no protege ante abusos tales como bots pero al ser el servidor fiable (nadie puede manipularlo) es una buena estrategia.La gran pega aqui,incluso para el software de codigo cerrado es que se necesita una maquina muy potente en cuanto empieza a crecer el numero de usuarios. El software de codigo abierto _si_ podria usar esta estrategia pero pronto surgirian servidores alternativos que podrian no ser fiables
Los juegos de codigo cerrado tambien recurren a programas o libreias de terceros que implementan una serie,normalmente amplia,de medidas para evitar estos abusos.Estas librerias/programas suelen tener licencias muy restrictivas debidas a los trucos que usan para evitar a los tramposos y que hacen imposible su uso en juegos de software libre(a veces,tanto por la licencia como por los trucos).Alguno de estos trucos son (sacados de punkbuster que es uno de los programas mejor considerados para esta tarea):
- Escaneos de memoria en busca de trampas conocidas.Esta proteccion no puede ser ejecutada en software de codigo abierto pues el tramposo podria eliminarla facilmente o reemplazarla por una rutina que le declarase limpio de trampas siempre
- Envio frecuentes de estado de cada jugador (encriptados) al servidor anti-trampas,pudiendo este tomar medidas si detecta alguna comportamiento extraño.En codigo abierto este truco podria ser evitado de la misma forma que el anterior
- El servidor puede pedir al cliente el calculo de MD5 de alguna parte de los ficheros del juego del cliente para comprobar que no se efectuaron modificaciones de estos.Esta comprobacion,en codigo abierto, podria ser evitada muy facilmente con solo calcular el MD5 del fichero real y no del modificado
- El servidor puede requerir screenshots (capturas de pantalla) actuales de cualquier jugador aleatoriamente o a peticion del dueño del servidor.Esta si podria ser usada en juegos de codigo abierto :D)
- Funciones de busqueda para detectar combinaciones de teclas o scripts (guiones con codigo del juego) que pudieran aprovecharse de algun fallo del juego.El jugador tramposo podria sustituir la rutina que realiza la busqueda con mucha facilidad si estuviera implementado en codigo abierto
- Busqueda de APIs desconocidas en software sensible a ser manipula con objeto de hacer trampas (como por ejemplo las librerias graficas).Esta comprobacion tambien puede ser evadida muy facilmente si se dispone del codigo fuente
|
|
|