Casos Criminales - Juego de detectives en tiempo real
Producto digital de Boardcork: hasta 10 dispositivos resolviendo el mismo caso criminal sobre un tablero compartido. En producción, con cuentas y pagos.
Casos Criminales
El problema que casi hunde el producto
- Delays. Movías una pista en el tablero y el resto del equipo la veía medio segundo tarde. En un juego cooperativo contra reloj, medio segundo se siente como una app rota.
- Conflictos. Dos jugadores tocaban el mismo elemento casi al mismo tiempo y el estado quedaba inconsistente entre dispositivos. Cada uno veía un tablero distinto. En un juego de deducción, eso no es un bug de UI: destruye la partida.
El diagnóstico: el cuello de botella no era Socket.IO
La decisión: sacar la base de datos del camino crítico
- El estado de la partida vive en memoria mientras la sesión está activa. Es la única fuente de verdad durante el juego, y es autoritativa: resuelve el orden de las acciones en un solo lugar, así que dos jugadores tocando lo mismo ya no pueden divergir.
- Los eventos se propagan directo desde ese estado, sin esperar a ningún I/O.
- La escritura a la base de datos ocurre al finalizar la sesión, fuera del bucle de juego, donde una latencia de cientos de milisegundos no le importa a nadie.
El resultado
- Los delays desaparecieron: sin I/O en el camino crítico, el broadcast es inmediato.
- Los conflictos de estado desaparecieron: con una sola fuente de verdad autoritativa por partida, no hay dos escritores compitiendo.
- El sistema sostiene los 10 dispositivos simultáneos por sesión que el producto necesita.