Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Sobre juegos online,tramposos y codigo cerrado/abierto

very happy's Diary
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
< Proyecto de futuro para la tira ecol (8 comments) | Java libre (11 comments) >
Enlaces Relacionados
· FPSs
· MMORPGs
· punkbuster
· More on very happy's Diary
· Also by very happy

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Sobre juegos online,tramposos y codigo cerrado/abierto | 3 comentarios (3 temáticos, editoriales, 0 ocultos)
Por extenderme un poco más (3.00 / 1) (#3)
por jcantero (jcantero@agujero-negro.escomposlinux.org) a las Sat Oct 14th, 2006 at 11:28:25 AM CET
(Información Usuario) http://www.escomposlinux.org/jcantero/

Si alguien quiere profundizar en el asunto, puede echarle un vistazo a lo que cuentan aquí (punto cinco) y, si tiene más tiempo, a los cinco artículos de Eternal Lands' MMORPG Postmortem: Mistakes and Lessons. Es una experiencia real de alguien que ha programado y gestionado un MMORPG.

El cliente tiene una licencia de desarrollo open source (no así el servidor), lo que no significa que le haya supuesto más o menos dolores de cabeza que a los que usan clientes privados (todos los protocolos terminan rompiendose). Si acaso ha servido para que desde el primer momento todo se diseñe suponiendo que puede haber clientes modificados, lo que favorece el buen hábito de la "programación defensiva", que es a lo que se debe aspirar en estos casos.

El resultado es que el sistema en general es bastante menos fragil que otros con cliente cerrado (y disculpas por citarme a mi mismo).

--
"Papá, ¡Internet es más que una red pornográfica global!" -- Lisa Simpson


 
Comentario editorial y tematico (none / 0) (#1)
por jcantero (jcantero@agujero-negro.escomposlinux.org) a las Thu Oct 12th, 2006 at 05:37:50 PM CET
(Información Usuario) http://www.escomposlinux.org/jcantero/

Comentario editorial: te he puesto unas etiquetas ul para que las listas de items sean mas legibles. También estaría bien poner un espacio despues de cada punto, por eso de la legibilidad, pero no me he puesto a ello.

Comentario temático: todo juego multijugador que se precie debe guardar toda la información pertinente en el servidor. Es la única manera de evitar los cheats y trampas. Esto es como la programación de aplicaciones web: nunca fiarse de los datos enviados por el cliente y siempre comprobarlos. Y por supuesto, nunca suministrar más información de la necesaria.

Ejemplos de no seguir estos consejos: jugadores "onminscientes" (enviar información fuera del rango de vision), con supervelocidad (no limitar el numero de operaciones de movimiento por segundo) o con capacidad para viajar instantáneamente a cualquier lugar (posicion guardada en el cliente o fiarse de la suministrada por éste).

En cuanto a las soluciones que dices que el código cerrado tiene, todas ellas son esquivables (incluso la de los screenshots), ya que todas se basan en que se confía en parte del código del cliente, y eso es falso. Todo lo que hay en el cliente debe ser, por definición, no confiable.

--
"Papá, ¡Internet es más que una red pornográfica global!" -- Lisa Simpson


Gracias por arreglarlo un poquito (none / 0) (#2)
por very happy (very_happy_yoNomegusta@elspaMlatinmail.com) a las Fri Oct 13th, 2006 at 10:46:23 AM CET
(Información Usuario)

Lo copie y cambie alguna cosita sin importancia de mi bitacora de barrapunto y creo que en el proceso quedo un poquito contrahecho
Las posibilidades de una entre un millon salen bien nueve de cada diez veces
[ Padre ]


 
Sobre juegos online,tramposos y codigo cerrado/abierto | 3 comentarios (3 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda