Al-Khwarizmi escribió:
Uto escribió:
Mi idea original fue plantear un servicio online para ngPAWS, pero antes de "montarmelo yo solo", me gustaría que otros autores de parsers me diérais vuestra opinión, o incluso saber si queréis participar en crear un servicio, colaborando en la definición de la parte servidor, y añadiendo el soporte a vuestros parsers. En concreto creo que es fácil de implementar para AGE y fi.js (de hecho este último y ngPAWS podrían usar la misma). Inform, es más complicado, pero se puede pensar como hacerlo para algún intérprete en concreto (Parchment o Quixe)
Me parece una idea genial, y estoy dispuesto a añadir el soporte en AGE y a colaborar en lo que pueda en el tema del servidor (al menos aportando ideas de diseño, porque me imagino que estarás pensando en usar un servidor web y LAMP y yo en todo lo que sea web estoy bastante pez).
Estos días la verdad es que estoy bastante liado, pero a partir de mediados de la semana que viene debería tener más tiempo.
Supongo que un buen equilibrio entre sencillez y generalidad sería que hubiese una web donde los autores de aventuras pudiesen dar de alta sus aventuras y crear, para cada una de ellas, los logros. Esa información se guardaría en el servidor en una base de datos, XML, o similar, y se cotejaría con las peticiones de "logro completado para el jugador X" que llegaran desde los clientes (aventuras).
Sí, más o menos eso había pensado para el lado de servidor, aunque ha que añadir:
- Que el usuario debe poder registrarse y logarse en el momento del logro si es a primera vez, o declinar participar.
- Si declina participar en el sistema online los logros le saldrían en local pero no se enviarían. Ahora bien, como un logro solo puede salir una vez, sería necesario que en caso de que el usuario haya rechazado participar, el intérprete debe guardar la info en local.
Así la petición del programa de procesar un logro sería algo como esto:
1) Consultar si el jugador ya se ha logado alguna vez, y si es así detectar su id de usuario (en un navegador lo guardaríamos en una cookie después de que se logue la primera vez, en otros sistemas supongo que haría falta una especie de fichero global)
2) Si el usuario no estaba logado, lanzar una ventana de login/registr, que trabaja contra un API REST del servidor que permite ambas cosas. Aquí también se da la opción al usuario de no participar, en cuyo caso guardamos algo así como "id de usuario=0" que nos indique en el futuro que los logros van en local.
3) Si el login/registro acaba con un id de usuario válido, se lanza la petición al servidor de apuntar el logro tal, de la aventura tal, del usuario tal. El servidor responde un boolean indicando si lo ha grabado o si no (porque el usuario ya lo tenía). Si es que sí, el interprete debe mostrar el logro en pantalla.
4) Si el login registro acaba con un id =0, el proceso es el mismo pero contra el almacenamiento local.
Uto escribió:
Por otro lado, como sabéis algunos en mis pruebas de betatesting de Colditz para ngPAWS (que saldrá pronto) añadí cierto nivel de tracking de respuestas sin contestación, con el objetivo de poder ver que cosas escriben los jugadores y quedan sin respuesta (es decir con la respuesta "no puedes hacer eso", "no te entiendo", etc.). Para ello utilicé una herramienta open source muy similar a Google Analytics llamada Piwik. Lamentablemente usé una solución muy provisional y me quedé sin los datos (instale el piwik en una raspberry pi en mi casa y la tarjeta SD en cuestión murió sin un triste backup).
Por eso me planteo la posibilidad de que de nuevo nos pongamos de acuerdo con un método de tratar esto entre los autores de parsers, en lugar de acabar con 3 soluciones, y planteemos el uso.
También me parece muy interesante, pero aquí ya no sé si puede encajar AGE al no ser un sistema basado en web (la versión de navegador es un applet de Java). Imagino que Piwik será para web, ¿no?[/quote]
Piwik tiene varios interfaces, uno de ellos es un API REST a la que seguro que puedes llamar desde Java para marcar un evento.