¿Qué es? - Introducción
Es un juego de pizarra electrónica, en el cual un usuario "dibujante" elige una palabra que debe describir con un dibujo, y otros usuarios que tienen tratan de adivinar lo que la persona propuso.
Actualmente el primer usuario en loguearse al soft poseerá el rol de "dibujante" y los siguientes seran los "adivinadores".
La consigna era crear una aplicación innovadora/interesante utilizando la API de Bing Search y/o la plataforma Windows Azure. La app utiliza la API de Bing para realizar una búsqueda en imágenes que pueden servir para modelo o inspiración para el dibujo del "dibujante".
Los requisitos del cliente son:
- Un browser con buen soporte HTML5 para Canvas y WebSockets.
Y en el servidor:
- Un servidor web/PHP 5 con soporte tanto de APC como de OpenSSL (ya que la consulta de imágenes se realiza creando una conexión desde el servidor a BING utilizando SSL).
- Una instalación de Python 2.6 o 2.7, con la versión 2.4.1 de Tornado (www.tornadoweb.org), para el servidor que realiza broadcast de los comandos de la pizarra.
El juego fue programado durante el HackathonPY (
www.hackathonpy.com) el fin de semana del 15 y 16 de Diciembre de 2012, por el equipo compuesto de Daniel Bernal y Camilo Díaz Repka.
Cosas que (se podrían) mejorar
- Prever un tiempo de espera para que se una el o los adivinador(es) antes de que el dibujante pueda empezar el dibujo, o tal vez implementar un mecanismo para copiar el dibujo entero actual a un nuevo adivinador que se una al juego luego de que ya exista parte de un dibujo.
- Hacer que el servidor de pizarra(boardserver.py) sea más "inteligente".
- Una alerta visual mas adecuada al momento de cerrar un juego (no simplemente window.alert)
- Manejo de posibles errores del WebSocket.
- Diseño, y mejores criterios de usabilidad en general.
Ideas para futuras implementaciones
- Un temporizador para la partida.
- Optimizar performance. Enviar comandos de pizarra en bloques/chunks (?) Comprimirlos (?)
- Registro de usuarios y/o utilización de OpenID, FBConnect o similares para autenticación.
- Múltiples salas de juego, grabar históricos y poseer rankings.
- Que se pueda seleccionar un dibujo de los resultados de busqueda, y "calcarlo" estando el dibujo debajo del canvas.
- Implementar mas herramientas de la paleta de dibujo, por ejemplo la funciones "clear", "line". Actualmente sólo están disponibles Pencil, Eraser, y la selección de color. Las demás herramientas del wPaint pueden activarse modificando la configuración `defaultSettings` de la linea 153 de wPaint.js.
- Implementar un algoritmo para fill (rellenar) en el cliente web, y que se propague correctamente por mensajería.
- Que el dibujante reciba las palabras incorrectas que los adivinadores sugieren, y quizá pueda dar "pistas" para ayudarlos a descubrir de qué se trata el dibujo.