31/5/13

kaillera abrir los puertos

Hola a tod@s, inauguro este blog con kaillera, no, kaillera no es el nombre de una tia buena o una actriz porno. Kaillera es una arquitectura cliente servidor soportada por varios emuladores como mame. Es una excelente aplicacion que permite que podamos jugar online con mas gente, sin tener que compartir el mismo teclado y estar ahi rozandose las manos. 


Antes de nada, todo el mini tutorial ha sido probado y funcional al 100%, por lo que no voy a hacerte perder el tiempo. Lo que leas aqui, si segis bien los pasos te va a funcionar. 


Se da por echo que si has llegado hasta aqui, es por que ya has montado el servidor, y los jugadores que intentan conectarse se les queda el cliente como esperando un login, o logearse y no entran en la pantalla de chat.


Hay en internet varias soluciones, como usar kaillera p2p o hamachi. No hace falta. Es mucho mas facil. A continuacion voy a explicar los pasos a seguir para asegurarnos que funcione.


Las conexiones de kaillera
Estas conexiones funcionan en udp, un protocolo no orientado a conexion, pero mas rapido que tcp. 


Cliente kaillera
La parte del cliente es la mas sencilla. Para verificar si el problema esta en el cliente, probamos a conectar a un servidor oficial de kaillera. Si no nos deja conectar, es evidente que en el cliente hay alguna aplicacion bloqueando seguramente sus conexiones salientes hacia los puertos altos. Seguramente un antivirus o un cortafuegos. Evidentemente, no podremos conectar al servidor de nuestro amig@ si no podemos conectar a un servidor oficial de kaillera. Para pasar al siguiente paso, es fundamental resolver este paso.


Servidor kaillera
El puerto por defecto de kaillera es 27888 udp. Por lo tanto mapeamos/abrimos/nat/ de ese puerto en nuestro router. 
No basta con eso, kaillera usa ese puerto para negociar una segunda conexion, Por cada conexion, nuestro servidor de kaillera abrira un nuevo puerto udp. Si tenemos 55 jugadores, tendremos 55 puertos udp abiertos (mas el 27888 XDD) y de manera aleatoria. Por estos puertos se sincronizaran los jugadores. Jamas por el puerto 27888. 
Por lo tanto kaillera negocia con el cliente a travez del puerto 27888 el nuevo puerto que le ha asignado kaillera, el cliente intenta conectarse y como en el router no tenemos mapeado el nuevo puerto, al servidor de kaillera no le llegan los mensajes "saludo" del cliente para verificar si el cliente esta conectado en el servidor, y el servidor, cierra esa conexion.


Solucion: mapear del puerto 20000 udp al puerto 65000 udp. Es mas o menos el rango aleatorio que puede usar el cliente. Cuando se haga la negociacion, el cliente conectara al puerto que el servidor le indico y ahora si, le llegan los mensajes al servidor, ahora si tenemos establecida una conexion entre el cliente y servidor y ya podemos jugar online.


Espero que os haya valido la ayuda. Ale al vicio xDD



ERROR 1025 :Error on rename of

ALTER TABLE [tabla] CHANGE [atributo] [atributo] [tipo de dato]
Ejemplo

comentarios blob
ALTER TABLE clientes CHANGE comentarios comentarios varchar(100);

ERROR 1025 <HY000>:Error on rename of
 
Este error se produce cuando intentamos cambiar un atributo o borrar un atributo de una tabla la cual tiene algun error, o alguna clave foranea o indice mal creado, por el diseñador o por el mismo motor de mysql, disculpenme por no haber profundizado mas en este error.

Solucion en este ejemplo:
Destro del promt de mysql escribimos:  
show engine innodb status; //muestra mucha informacion, entre ellas posibles errores.
show create table clientes; //muestra el codigo del create table, de la tabla clientes.
Nos fijamos en los dos comandos, y veremos que en la tabla clientes (en este ejemplo) hay un error en una clave foranea(nuevamente pido disculpar por que no puedo mostrar los resultados para aclarar la informacion que obtendriamos con los dos comandos y compararla).

alter table clientes drop foreign key nombredelaclave; //borramos la clave foranea que encontramos en el error obtenido por el show engine innodb status; donde pone nombredelaclave lo sustituiriamos por el nombre de la clave foranea que sacamos con los dos primeros comandos. Realmente solo necesitariamos usar el primer comando. Pero el segundo va mas directo al grano.

Ahora podemos escribir: ALTER TABLE clientes CHANGE comentarios comentarios varchar(100); satisfactoriamente.