Confinados.club

Confinados.club es un simulador de cuarentena inspirado en el confinamiento dictado por el Gobierno de España durante la crisis de la COVID-19.

Diseño

Se propone un concepto inspirado en los roguelike (mundo procedimental explorable) donde el jugador elige una acción por turno frente a sus compañeros de piso. Sus compañeros también toman decisiones, y las variables del entorno cambian en cada turno. El objetivo es sobrevivir todos los turnos que dure el confinamiento.

El registro es jocoso y desenfadado, y se invita al jugador a compartir la experiencia humorística con sus conocidos a través de redes sociales.

El backend es Ruby y Sinatra, mientras que el front-end es un juego web accesible desde cualquier dispositivo con navegador.

Para balancear los costes del servidor, se sugiere una donación.

Ejecución

¡Guerrilla! Como de costumbre. No se planea la arquitectura del motor ni el contenido, sino que se parte del archivo ejecutable de raíz que propone Sinatra para construir la experiencia. Esto se apoya en archivos públicos y vistas en .erb que sí van al margen del archivo lógico. Un diccionario generado tras cada ruta /new crea el contenido de la partida para esa sesión del navegador. Es una manera creativa (pero no profesional) de construir un concepto mínimo viable (MVP) en visos de demostrar el concepto.

La mecánica esencial es una ruta /do/:acción que procesa el turno: estados generales, muerte o victoria, decisión del jugador, decisiones de los NPCs, muerte de los NPCs, extras, y preparación del diccionario y el estado del juego para el siguiente turno. La excepción son rutas POST para las acciones en las que el jugador decide mediante un <form>; en este caso, y al estar las acciones encapsuladas en funciones, estas rutas son indiferentes a las acciones de los NPCs (que las llaman como cualquier otra ruta).

El archivo también tiene funciones utilitarias (helpers) que se usan en rutas, acciones, y sucesos ad hoc como la construcción de titulares de noticias.

Se presupone que el código es difícil de mantener, y la factura técnica acarrea algunos problemas (no tanto de escalabilidad, sino de legibilidad). Un fallo relevante fue separar las propiedades de la persona que maneja el jugador de las personas NPC en el diccionario; provoca que cada función tenga duplicidades para las distintas direcciones donde hay que cambiar datos en función de la acción elegida.

Código fuente

Confinados.club v16 Confinados.club v14