viernes, 6 de marzo de 2015

In Memoriam - 5 - Reconstruyendo el servidor del juego

Funcionamiento

Tal y como se apuntó en la primera entrada de esta serie,  la función principal del servidor es remitirle a cada jugador los correos que genera el juego conforme el desarrollo la partida va avanzando.

En una primera fase, el jugador debe crearse una cuenta en el juego, introduciendo su nick y la dirección de correo electrónico que desea utilizar. Al crear la cuenta, el juego genera una contraseña aleatoria en forma de letras mayúsculas, coincidiendo la longitud del nick seleccionado por el usuario con el de la contraseña que genera el juego.

Registro In Memoriam
Registro In Memoriam

El juego envía al servidor esta información para crear la nueva cuenta. El servidor comprobará si existe alguna otra cuenta con la misma dirección de correo electrónico, que es la única limitación.

Registro rechazado por correo duplicado.

En caso de que no exista otra cuenta con la misma dirección de correo electrónico, el servidor crea temporalmente la cuenta e informa al juego que acepta la creación de la cuenta. En ese momento el juego solicita al servidor que envíe un primer mensaje a la cuenta de correo del jugador. En ese primer correo se envía la información relativa a la creación de la cuenta, contraseña incluida.

Registro pendiente de confirmación

Si todo va bien, el jugador recibirá un correo electrónico con el nick, correo electrónico y contraseña de la cuenta del juego. El juego queda a la espera de que el jugador valide la creación de la cuenta, introduciendo la contraseña de la misma.

Confirmación del registro

En caso de introducir la contraseña correctamente el juego confirma al servidor definitivamente la creación de la cuenta, y comienza el juego mostrando el inquietante vídeo introductorio.

A partir de ahí, la comunicación entre el juego y el servidor se reduce a peticiones de envío de correos que el juego transmite al servidor. Cada transacción de envío de correo incluye un parámetro adicional que permite retrasar el envío de dicho correo hacia la cuenta de correo del jugador. Este parámetro permite retrasar el envío minutos, horas o incluso días, logrando así que el momento de la recepción de los mensajes no guarde relación con el hecho de que estemos jugando o no al juego. Así, es posible recibir uno de estos correos sin haber iniciado el juego durante un par de días.

Mensajes opcionales

El contenido de estos correos puede ser más o menos importante. Algunos son completamente necesarios, otros intentan aumentar la inmersión en el juego aunque no lleven información imprescindible, y otros llevan pistas optativas destinados a ayudarnos en determinadas fases del juego si nos quedamos atascados demasiado tiempo.

La mecánica de retrasar el envío de los mensajes a la cuenta de los usuarios es la que permite al juego conseguir esta funcionalidad por la que podemos empezar a recibir pistas si nos quedamos atascados en alguna fase. Al iniciar una fase para la que el juego tiene programado mensajes con pistas opcionales, se lanzan contra el servidor el envío de estos mensajes introduciendo retardos que pueden ser de varios días. Estos mensajes quedan almacenados en el servidor a la espera de que se cumpla el plazo estipulado para cursarlos. Si nos atascamos en esa fase, y se cumplen los retrasos definidos, el servidor nos envía cada uno de esos correos en el momento programado.

Independientemente de que dichos correos opcionales se hayan enviado o no, una vez que se finalice esa fase de la partida, el juego lanza una o varias transacciones especiales hacia el servidor para borrar selectivamente algunos de estos correos con pistas opcionales. En caso de que hayamos finalizado la fase antes de que se cumpla el plazo para el envío alguno de esos correos,  el juego los borra del servidor y nunca los recibiremos.

Por ello, la secuencia de mensajes recibidos durante una partida por un jugador, puede ser distinta de la secuencia recibida por otro jugador. Así, además de que en cada fase cada una de las partes de la misma pueden resolverse en cualquier orden, la velocidad con la que resolvamos cada una de las partes puede hacer que recibamos o no recibamos algunos correos adicionales.

Funciones adicionales

Aparte del registro de cuentas y el envío de mensajes de correo, el juego precisa del servidor otras funcionalidades, como la modificación del correo electrónico de una cuenta existente y el borrado de cuentas.

Modificación de la cuenta de correo

Estas funciones adicionales, aunque no son necesarias para disfrutar del juego, han sido igualmente implementadas en el servidor.

Mejoras

Hasta aquí el funcionamiento original del malogrado servidor de Lexis Numérique. En el nuevo servidor desplegado finalmente, se han introducido algunas modificaciones y funcionalidades adicionales.

La primera relativa al borrado de cuentas. El juego, cuando registra una nueva cuenta de un jugador, recibe del servidor un identificador numérico que identifica la cuenta. Cuando el jugador quiere borrar su cuenta, el juego envía al servidor una transacción especial con el identificador numérico de la cuenta a eliminar.

Desde el punto de vista de seguridad de la transacción, sería muy fácil para un tercero lanzar de manera automatizada contra el servidor la transacción de borrado, cambiando el identificador de la cuenta a borrar, y con muchas posibilidades de borrar una gran cantidad de cuentas que no le pertenecen.

Por ello, cuando el juego borra una cuenta, el nuevo servidor da la misma respuesta que el servidor original, haciendo creer al juego que la cuenta se ha eliminado sin errores, pero en realidad no se borra nada. Para borrar una cuenta definitivamente, en la web del proyecto se ha desplegado un formulario en el que el jugador debe introducir la cuenta de correo electrónico y la contraseña de la cuenta a borrar.
 
Formulario de borrado de cuentas

La otra mejora de importancia es proporcionar un cliente de correo web para poder acceder a los mensajes enviados por el juego. Una de las quejas más frecuentes que se podía encontrar en foros sobre el juego, era la no recepción de correos importantes que dejaban al jugador bloqueado en su partida sin poder avanzar.

Los correos que envía el servidor tienen como remitente cuentas de correo de distintos dominios, como por ejemplo info@skl-network.com o julie_massenet@hotmail.com. Muchos proveedores de correo actuales toman medidas contra el spam, y para clasificar un correo como spam usan varios criterios. Uno de ellos es la relación entre el servidor que envía el correo y el dominio del supuesto remitente. Obviamente, enviar un correo con un remitente de Hotmail desde un servidor que no tiene nada que ver con Hotmail.com tiene todas las papeletas de ser clasificado como spam.

Dependiendo de las políticas del proveedor de correo electrónico que reciba este mensaje sospechoso, el mensaje puede ser alojado en una carpeta de spam permitiendo al receptor acceder al mismo y decidir si es spam o no, o bien el mensaje puede ser directamente descartado.

Para salvar este escollo, el nuevo servidor para el juego dispone de un rudimentario cliente de correo web. Introduciendo la dirección de correo registrada en el juego junto con la contraseña asignada, se da acceso a todos los mensajes que ha enviado el juego al usuario.

Cliente de correo web
Obviamente el cliente de correo web desplegado no permite enviar correos. Tan solo permite leer mensajes enviados por el juego al jugador. Aquellos mensajes que aún no se hayan enviado porque el juego los haya creado con un retardo de envío, no se mostrarán hasta el momento adecuado.

No hay comentarios:

Publicar un comentario