JoeQuiz
Quiz multijugador para el salón: los móviles como pulsadores, una TV como pantalla común, catorce minijuegos. Se comporta como si fuera en tiempo real en cualquier alojamiento compartido.
El problema
La idea era una noche al estilo Buzz! de PlayStation, no una carrera de reflejos: diez personas en la misma sala, cada una con su móvil. La limitación era el alojamiento: sin WebSocket, sin procesos siempre encendidos, un servidor compartido normal junto a otros sitios.
Las plataformas existentes o piden una infraestructura dedicada o lo reducen todo a quién pulsa primero. JoeQuiz tenía que ser justo con los tiempos incluso con las oscilaciones de un WiFi doméstico.
Cómo funciona
Estructura
Tres pantallas, una por papel: control para quien conduce, juego para quien tiene el móvil, escenario para la TV. Cada una recibe una vista del estado construida a propósito, y la de los jugadores ni siquiera contiene la respuesta correcta. Un único motor de rondas, catorce configuraciones.
Flujo de uso
Se abre una sala desde el ordenador y los demás entran desde el móvil con un código de seis letras, sin app ni registro. Un jugador elige tema y dificultad, el sistema sortea el minijuego. Las rondas deciden el tiempo de salida de la final, que se juega hasta que queda uno.
Decisiones técnicas
Polling HTTP cada medio segundo con el estado en MySQL, una sincronización de relojes al estilo NTP para saber quién pulsó de verdad primero, preguntas entregadas tapadas y reveladas a todos en el mismo instante. El juego avanza con las propias peticiones de los jugadores; un cron cubre el caso en que ya nadie pregunta.
Límites conocidos
Las puntuaciones están en la configuración y hay que ajustarlas en noches reales: el valor más delicado es el tiempo mínimo de la final. El banco de preguntas cubre cinco temas; música, series, deporte y videojuegos siguen en borrador.
Números
| Preguntas en el banco, más de | 6.400 |
|---|---|
| Minijuegos, más la ronda final | 14 |
| Comprobaciones automáticas, más de | 850 |
| Tablas del esquema | 35 |
| Líneas de código de la aplicación, aprox. | 30.000 |
Stack
- PHP 8
- MariaDB
- JoeCMS
- JavaScript
- Polling HTTP
- Python