lunes, 26 de octubre de 2015

SnakeTron

SnakeTron

Este es un proyecto que comienza como trabajo para la asignatura de Arquitectura de Redes de Computadores, del grado de informática. Como trabajo se pedía una aplicación distribuida, que utilizara un modelo cliente-servidor, en que el servidor distribuyera a los clientes en grupos, y cada vez que recibiera un paquete de uno de ellos, lo retransmitiera a todo su grupo. Se proporcionaban un par de ejemplos, que básicamente transmitían la posición de diferentes elementos, permitiendo a cada uno conocer la posición del resto de su grupo. Al ver este modelo de red, inmediatamente pensé en este otro proyecto que había realizado hacía tiempo, se trata de una versión multi-jugador del clásico juego arcade snake, que desde hacía tiempo, quería adaptar para que funcionara online. Evidentemente es un proyecto en desarrollo, y con unos cuantos bugs (especialmente remarcables, el que a veces los clientes fallan al arrancar, y que en la versión de windows el modo cliente no funciona en lo absoluto), una vez que el proyecto termine su función como trabajo de clase (en Diciembre), se publicará toda la documentación, sin embargo para simplificar la tarea de testear e ir dando a conocer el proyecto, ya está publicado el código aquí, y los binarios de Linux, Windows, y Android. Están previstos unos cuantos cambios importantes tanto en la interfaz como en la funcionalidad, como parte del proyecto de clase, por lo que no vale la pena hacer manuales de usuario detallados aun, sin embargo de forma general, el programa es ambos servidor y cliente, hace una u otra función dependiendo de la configuración de arranque, de momento establecida en el fichero SETTINGS.conf, que de no existir es creado por el programa con la configuración por defecto, servidor, en el puerto 9999, 3 jugadores por partida, y medio segundo entre movimientos; si se quiere que funcione de cliente en dicho archivo se ha de cambiar la línea 'MODE server' por 'MODE client', y en la línea 'URL snaketron.ddns.net' se ha de cambiar esa url por la ip del servidor.