Eros
Verdad o reto y beber, para adultos
Eros es un juego móvil de verdad o reto y beber para adultos (18+) en Android, construido con .NET MAUI. Evoluciona el concepto clásico con dos diferenciadores: la intensidad no es una etiqueta fija de sesión sino una temperatura que sube y baja durante la partida, y los límites que cada jugador declara en privado se respetan por construcción. Esto último no es un filtro de mejor esfuerzo: el motor de selección nunca propone algo que viole el límite de alguien presente, y esa garantía está verificada con tests. La promesa, en una frase: puedes soltarte porque la app ya sabe dónde está tu línea.
Qué hace
Traslada al código una regla que las apps del género suelen dejar en manos del criterio de quien juega: lo que alguien ha vetado no aparece, y no aparece porque el sistema no puede proponerlo.
- Cada jugador declara en privado qué no quiere, y nadie ve los vetos de nadie ni siquiera en el dispositivo compartido.
- El motor descarta cualquier contenido incompatible con el límite más restrictivo de la mesa: ante la duda no se aproxima.
- La intensidad escala y baja durante la partida en lugar de fijarse al empezar.
- El consentimiento es revocable en caliente: pasar un reto es gratis y siempre visible, y un veto a mitad de partida se aplica al instante.
- Se juega sin registro, sin cuentas y sin permisos: configurar una mesa de cuatro personas cuesta menos de dos minutos y medio, medido.
- La partida es efímera por defecto, sin historial de contenido ni analítica de lo que se jugó.
- Si los límites dejan el catálogo sin opciones, se dice claramente en vez de rellenar con algo que roce la línea.
Arquitectura
La garantía del producto es una propiedad del sistema, no una intención: si el dominio se contamina o una regla de selección se rompe, el build se cae.
- Dominio en .NET puro, sin dependencias de MAUI, entrada/salida ni red, para que el mismo motor pueda ejecutarse en servidor en la versión conectada.
- Tests de arquitectura que rompen la compilación si esa regla se incumple, junto a las reglas del motor de selección.
- Persistencia mínima en SQLite, efímera por defecto.
- Catálogo de retos embebido en la app, con la indirección de packs presente en el modelo desde el primer día y sin infraestructura en la v1.
- Coste de configuración fijado en el código: una pregunta obligatoria nueva rompe el build, lo que impide que el tiempo hasta empezar a jugar crezca en silencio.
- El modo conectado de la v2 usa ASP.NET Core y SignalR con servidor autoritativo, porque el cliente no puede conocer los límites ajenos sin romper su privacidad.
Stack
Cliente .NET MAUI sobre net10.0-android con Android 8.0 como suelo, dominio en .NET puro sin dependencias y persistencia en SQLite. El desarrollo va dirigido por specs en cascada, y la integración continua compila, pasa los tests —incluidas las reglas de arquitectura— y publica el APK.