Algoritmos· ▶ Jugable
Indetectable
Un juego diario de navegador: falsifica un trazo que se camufle entre los de la máquina. Un detective algorítmico intenta cazar al intruso humano. Ganas si no lo consigue.
- React
- TypeScript
- Vite
- Canvas 2D
- perfect-freehand
- Zustand
- Tailwind v4
- Vitest
Problema
Construir un juego viral de "uno al día" que funcione sin backend, sin coste recurrente y sin secretos — en un repositorio totalmente público. El reto central es la detección: distinguir un trazo dibujado por una persona de los dibujados por la máquina, en el navegador, al instante, sin dataset de entrenamiento ni modelo que alojar. La habilidad que mide el juego es la imitación, no la pulcritud — dibujar demasiado perfecto te delata tanto como dibujar tembloroso.
Mi rol
Diseñé y construí todo el sistema spec-first: un detector auto-calibrado, sin DOM y sin dependencias, que puntúa cada trazo como un z-score contra el clúster procedural del día — conformidad de forma (normalización tipo $1-recognizer / Procrustes), micro-temblor (residual de Savitzky–Golay), y firmas de velocidad y curvatura. Además: una semilla diaria determinista (xmur3 + mulberry32), un modelo de dificultad de 3 perillas con rotación semanal, captura de puntos crudos vs. de render (Pointer Events + perfect-freehand), rachas en localStorage con el bloqueo de un intento estilo Wordle, i18n es/en/pt y una tarjeta de veredicto compartible.
Tradeoff
Elegí un detective algorítmico en vez de un LLM: corre 100% en el navegador a $0 con inferencia instantánea, pero renuncia al juicio más rico que aportaría un modelo. Sin cuentas ni sincronización — el progreso vive solo en localStorage, así que borrar la caché pierde tu racha. La auto-calibración contra el clúster en pantalla elimina la necesidad de un dataset, a cambio de un ajuste cuidadoso de pesos y umbrales por característica frente a trazos humanos reales.
Métrica
La v1 corre totalmente en el cliente con 71 tests unitariosque cubren separabilidad y determinismo del detector, scoring, escena/PRNG, dificultad, persistencia, i18n, canvas y la tarjeta para compartir. El detector no añade llamadas de red y son ~200 líneas de TS legible. Trabajo pendiente antes del lanzamiento: calibrar pesos y umbrales del detector contra trazos humanos reales (objetivo: alta separabilidad entre trazos falsificados y de máquina sin penalizar buenas imitaciones).