jueves, 12 de febrero de 2015

Head Soccer Network

Luego de danto tiempo, casi 3 años, en los que he realizado muchos proyectos que quedaron por la mitad, finalmente termine una version de un nuevo juego. Es una version del clasico Head Sports Soccer, que se puede jugar el flash, pero con la funcionalidad de funcionar en internet.

Es muy dificil por supuesto hacer todo el recorrido desde el inicio del proyecto explicando el funcionamineto de cada parte, necesite estas librerias

  • pygame, para dibujar en la pantalla
  • pybox2d, con esta libreria pude crear un mundo 2d con ya todos los calculos de colisiones solucionados
  • podsixnet, esta libreria sirvio para realizar las conexiones de internet en el proyecto, aunque no utilize la version original sino una modificacion que yo hice para que soporte el protocolo UDP (en el modo original solo es con TCP), primordial para poder hacer un juego donde es importante que tantolos eventos de cada jugador (estado de las flechitas del teclado) como la visualizacion de cada jugador lleguen velozmente. 

En red local el juego anda perfecto mientras que en internet, con un ping < 200ms (tiempo de respuesta cliente-servidor-cliente) en general también. La unica dificultad que hay es que si el ping se hace alto de a periodos (es decir se pone lento el internet), y salta a valores tales como 2000 ms el juego se hace injugable para el jugador en ese tiempo. En el futuro seria una posibilidad avisar al jugador cuando su internet falla de tal forma y que el servidor pause el juego ese tiempo apra que no sea injusta la partida.

Actualmente el juego posee solo modo amistoso pero planeo en el futuro hacer torneos, usuarios, y hasta hacerle una pagina web!

Voy a analizar en un futuro comprar algun server barato para que cualquier que quiera jugar no tenga que usar su pc de server.

Bueno, imagenes:














Entre hoy y mañana subire los codigos fuente en python, más versiones compiladas ejecutables para windows y linux, fabricadas con pyinstaller, una herramienta sensacional para hacer que un juego en python no necesite nada instalado, ni siquiera python, para ser ejecutado.