Empezar por el juego, no por la tienda.
La primera referencia mostraba un tablero de seis por seis con regiones pastel, reglas y una pequeña lección. La tomamos como guía visual y de interacción: fondo crema, controles morados, tipografía amplia y respuestas claras. El nombre de trabajo era Queens; el juego público ahora se llama Crowns. El tercero nació como Zip y ahora se llama Path. Wend conservó su nombre.
Antes de montar las pantallas, definimos las condiciones de victoria. Crowns necesita una reina por fila, columna y región de color, sin reinas que se toquen en diagonal. Wend conecta letras vecinas ortogonalmente para formar las palabras previstas, sin entrar en casillas bloqueadas ni reutilizar una letra del mismo camino. Path une los números en orden y visita todas las casillas. Son tres conjuntos de reglas distintos: cada uno necesitaba su motor y sus pruebas.
Una captura define la composición y el tono, pero no los casos límite. Especificamos movimientos inválidos, pistas, deshacer, reiniciar y victoria antes de dar el tablero por terminado.
Construir una base móvil común.
Utilizamos Expo SDK 57, React Native, Expo Router y TypeScript estricto. La portada presenta los tres juegos y una vista previa no jugable de un futuro título. Cada juego tiene explicación, puzle normal y modo diario. Compartimos el selector de juegos, botones, logo, mensajes de victoria y confeti; los colores, espacios y tipografía viven en un tema. En el teléfono domina el tablero y las tarjetas se apilan; en pantallas amplias hay espacio para dos columnas.
src/app/ Pantallas de Expo Router
src/games/queens/ Reglas, puzles y tablero de Crowns
src/games/wend/ Reglas, puzles y tablero de Wend
src/games/zip/ Reglas, puzles y tablero de Path
src/components/ Controles y respuestas compartidos
src/i18n/ Mensajes en inglés y españolLas rutas y claves internas de guardado siguen llamándose queens y zip. Cambiamos los nombres visibles sin cambiar las claves persistidas para conservar el progreso existente. Es una decisión de migración, no un descuido en la interfaz.
Mantener las reglas fuera de React.
Las funciones puras de TypeScript comprueban movimientos, pistas, victoria y guardados. El componente del tablero presenta el resultado, pero no decide qué es válido. Así podemos probar las reglas sin montar una pantalla nativa.
- Crowns: regiones conectadas y número previsto de soluciones. Una diagonal lejana se permite; solo chocan reinas que se tocan. Los toques recorren casilla vacía, X y reina. Deshacer y reiniciar tienen historial explícito.
- Wend: caminos ortogonales, casillas bloqueadas, reutilización y retroceso. Los puzles cambian según el idioma y comprobamos cada camino antes de restaurarlo.
- Path: puntos de control en orden, sin reutilizar casillas, cobertura total y solución única. Un arrastre es una operación que puede deshacerse; validamos la ruta guardada antes de mostrarla.
Los datos de cada puzle viven junto a su motor. Los modos diarios reutilizan las mismas reglas probadas. Esta separación permitió renombrar los juegos sin alterar soluciones ni partidas guardadas.
Coordinar dedos, scroll y navegación.
Un juego puede ser correcto y resultar imposible de usar en el móvil. Al principio, la página de Wend se desplazaba al arrastrar sobre las letras. Ahora bloqueamos el scroll exterior solo mientras hay un toque activo en el tablero y lo restauramos al soltar, cancelar o salir. En iOS, el gesto de volver también interceptaba trazos de Path hacia la derecha. Desactivamos el cierre por deslizamiento del navegador raíz y dejamos los cambios de juego en controles visibles.
El selector pasó a ser un botón elevado que abarca icono, título y flecha, con un área cómoda. Al completar un puzle, la acción para continuar aparece cerca del tablero. La victoria tiene una celebración breve; las piezas de Crowns se vuelven doradas y «Reducir movimiento» evita animaciones innecesarias. Incluimos sonidos opcionales de toque, acierto y victoria; restaurar una partida ya ganada no reproduce sonido.
Guardar una partida fiable.
El progreso invitado se guarda en el dispositivo: puzles normales y diarios, historial para deshacer y contadores necesarios. El cronómetro se pausa al poner la app en segundo plano o cambiar de pantalla. Validamos los datos guardados frente al puzle actual al cargarlos: una ruta antigua o dañada no puede crear una falsa victoria. Reiniciar limpia el tablero y se puede deshacer.
Las cuentas llegaron después y son opcionales. Se puede jugar sin registrarse o entrar con un código por correo, importar explícitamente partidas invitadas y sincronizar entre dispositivos. Una revisión evita que un dispositivo sobrescriba silenciosamente al otro; si hay conflicto, el jugador elige. Los tres juegos comparten la cuenta de Knotivo. Otras futuras apps de SKOA tendrán registros independientes.
Traducir las reglas y el contenido.
La app sigue el idioma preferido del teléfono: inglés o español, con inglés como alternativa. Botones, pistas, etiquetas accesibles y explicaciones se traducen. Crowns y Path mantienen el mismo tablero en ambos idiomas. Wend tiene catálogos de palabras distintos; al cambiar de idioma restaura el puzle y el camino correspondiente en vez de aplicar una respuesta inglesa a letras españolas.
Los motores devuelven resultados semánticos y la interfaz los traduce. Así probamos las reglas una vez y verificamos ambas interfaces. También aplicamos la marca, el icono y las imágenes de producto a la app, la landing de Knotivo, el catálogo de juegos y la web principal de SKOA.
Añadir servicios solo donde aportan.
Las cuentas opcionales utilizan un proyecto propio de Supabase en Irlanda, dentro de SKOA, con perfiles privados y partidas sincronizadas. Resend envía los códigos por correo. La eliminación de cuenta borra los datos asociados y encola una solicitud independiente para borrar la identidad analítica. Un trabajador programado comprueba la solicitud; aceptada no significa completada.
Mixpanel EU recibe únicamente eventos autorizados expresamente, como inicio o final de puzle, pista y reinicio. No enviamos palabras resueltas, coordenadas, correos ni grabación automática de sesiones. Al desactivar la opción cesan los envíos posteriores y se vacía la cola pendiente. Las credenciales privadas del servidor no entran en la app; EAS le proporciona solo configuración pública de cliente.
La app es gratuita hoy. Una posible versión Plus es una decisión de producto y todavía no hay compras integradas. Otros agentes de SKOA trabajan en las finanzas y el plan de negocio; aquí nos centramos en cómo se desarrollaron y probaron los juegos.
Probar donde fallan las cosas.
Ejecutamos la comprobación de tipos, Expo lint y pruebas unitarias de reglas y transiciones visibles. BrowserOS neo prueba controles renderizados en un origen local dedicado: toques, arrastres, deshacer, reiniciar, pistas, persistencia, victorias, tamaños de pantalla y ambos idiomas. En la versión que renombró Crowns y Path, el registro indica 85 pruebas unitarias y 43 escenarios de navegador correctos.
npm ci
npm run check
npm run build:web
npm run e2e:serveEl build web y el navegador detectan fallos de lógica e interfaz compartidas, pero no demuestran que los gestos nativos funcionen. También abrimos un build Release en simuladores iPhone y iPad, revisamos capturas y usamos TestFlight para distribuir iOS firmado. Los recursos JavaScript/Android se exportan, pero aún no hay binario para Google Play ni prueba en dispositivo Android. Son verificaciones diferentes.
Compilar la app y contar su historia.
EAS compiló y firmó la aplicación iOS en la nube. La versión 1.0.0 (11), con los nombres Crowns y Path, superó el procesamiento del binario de Apple y está disponible para el grupo interno de TestFlight. Capturas de un build Release en simulador renovaron las imágenes para iPhone y iPad. La ficha de la app incluye textos bilingües, soporte, privacidad y los datos de cuentas y analítica opcionales.
Apple rechazó el primer intento de revisión pública bajo la norma 2.1, información necesaria. Solicitó más detalles del desarrollador y una grabación en un iPhone físico que muestre la app y las cuentas. La grabación y el nuevo envío aún están pendientes. BETA TESTFLIGHT · SIN PUBLICACIÓN PÚBLICA
Para descubrir el producto publicamos tres sitios de presentación: SKOA → SKOA Games → Knotivo. Presentan la aplicación móvil, pero no distribuyen el build web jugable como juego de escritorio.
Qué repetiremos en el próximo juego.
Definir primero la victoria, mover las transiciones a funciones puras, validar los guardados, probar gestos en el móvil y distinguir una beta de la aprobación pública. La navegación, marca, cuentas e idiomas compartidos facilitarán un cuarto juego; cada nuevo puzle seguirá necesitando reglas y comprobación de soluciones propias.
A 30 de septiembre de 2026, el siguiente paso hacia la publicación de Knotivo es la grabación en un dispositivo físico y la respuesta a Apple. Las pruebas físicas de cuentas y arrastres, la distribución Android y una futura oferta de pago son trabajos separados. Puedes conocer la app en Knotivo ↗ y la colección en SKOA Games ↗.