Mobile App — Spin-off de Sudoku Play

Killer Sudoku Play

Sudoku clásico combinado con restricciones aritméticas de "jaulas". Cada jaula agrupa celdas cuya suma debe alcanzar un valor objetivo sin repetir números. Desarrollada reutilizando el 80% de la arquitectura de Sudoku Play en solo ~16 días.

Publicada en App StoreEn preparación para Google Playv1.0.0

6,000

Puzzles

5,900

Niveles Aventura

~80%

Código reutilizado

~940

Líneas nuevas

~16 días

Desarrollo

v1.0.0

Versión

Funcionalidades

Características principales

Gameplay Killer

Tablero con Jaulas

Grilla 9x9 con jaulas coloreadas (6 colores), etiquetas de suma, overlay de líneas 3x3 y resaltado de jaula seleccionada.

Validación Inteligente

Verificación en tiempo real de fila, columna, bloque 3x3 Y jaula. Detecta sumas excedidas y números repetidos en jaula.

Cálculo de Combinaciones

Motor que calcula combinaciones posibles para cada jaula según tamaño, suma objetivo y números ya colocados.

Sistema de Notas + Pistas

Candidatos por celda con auto-remoción configurable. Pistas con límite diario y rewarded ads.

Modos de Juego

Clásico

Partida libre por dificultad (6 niveles). Timer, errores, puntuación basada en dificultad, tiempo y precisión.

Modo Aventura

5,900 niveles en 6 mundos con corazones, estrellas por rendimiento y puertas de desbloqueo.

Desafío Diario

Puzzle diario con recompensas de monedas y XP. Contribuye al sistema de rachas.

Duelos 1v1

Desafíos contra amigos con apuestas de monedas, mismo puzzle, ganador por tiempo + errores.

Social y Progresión

Sistema de Amigos

Códigos únicos, búsqueda por username, solicitudes, leaderboard entre amigos.

XP Compartido

Sistema de experiencia y niveles compartido con Sudoku Play vía global.users en Supabase.

Economía Independiente

Monedas, streaks y shields propios del Killer, separados de Sudoku Play por schema.

Desafíos Semanales

Objetivos variables con recompensas de monedas y XP.

Monetización

AdMob

Intersticiales y rewarded (monedas, pistas, vidas extra). IDs configurados por plataforma.

Suscripción Premium

$0.99/mes o $9.99/año: sin ads, beneficios premium via react-native-iap.

Tecnologías

Stack Tecnológico

Frontend / Mobile

React Native 0.81.5

New Architecture habilitada (JSI/Fabric)

Expo SDK 54

Builds, distribución, OTA updates

React 19.1 + TypeScript 5.9

UI con tipado estático

Zustand 5

killerGameStore, userStore, themeStore, etc.

React Navigation 7 + i18next

Navegación y ES/EN

Backend

Supabase (compartido)

Auth, DB, Edge Functions, Realtime, RLS

Edge Functions (Deno)

validate-completion, sync-events

PostgreSQL

Schema killer_sudoku separado de sudoku

Servicios

Google AdMob

Intersticiales y rewarded

Firebase Crashlytics

Crash reporting en producción

EAS Build + Update

Cloud builds y OTA por canales

Local

SQLite (expo-sqlite)

6,000 puzzles pre-generados offline

AsyncStorage

Preferencias, cola de eventos

expo-secure-store

Tokens y datos cifrados

Librerías principales

react-native-google-mobile-adsreact-native-iapreact-native-gesture-handler@react-native-firebase/crashlyticsexpo-hapticsexpo-avexpo-notificationsexpo-linear-gradientexpo-cryptoexpo-apple-authenticationexpo-background-fetchexpo-batteryreact-native-view-shotjsonwebtoken
Diseño

Decisiones de Arquitectura

App Separada, Backend Compartido

Monetización independiente, branding propio, presencia separada en tiendas. Mismo Supabase: auth unificada, XP compartido, monedas independientes por schema.

Schema Separation

killer_sudoku.* vs sudoku.* — aislamiento completo de datos de juego con RLS independiente, compartiendo infraestructura de auth.

Bridge Pattern

gameStoreBridge.ts y puzzleServiceBridge.ts adaptan interfaces Killer al formato de componentes compartidos, sin modificar los originales. ~8,000 líneas reutilizadas.

Puzzles desde Soluciones Existentes

Script Python genera jaulas sobre 6,000 soluciones verificadas de Sudoku Play. Clasificación automática de dificultad por cantidad de jaulas, tamaño y singles.

Event Sourcing + Offline-First

Eventos inmutables con UUID, procesamiento server-side idempotente. SQLite local con 6,000 puzzles. Funciona 100% offline.

Anti-Cheat Server-Side

Validación de solución, recalculación de score, análisis de varianza de movimientos, detección de bots. Shadow ban sin bloqueo directo.

Ingeniería

Desafíos Técnicos

Renderizado de Jaulas sobre Grilla

Problema: Bordes punteados entre celdas de misma jaula, 6 colores diferenciados, etiquetas de suma, superpuesto sobre grilla 9x9 con líneas 3x3.

Solución: KillerBoard.tsx con bordes dashed calculados dinámicamente, colores alternados con opacidad 0.15, overlay 3x3 separado, React.memo.

→ Tablero visualmente claro y performante.

Reutilización sin Romper Interfaces

Problema: 80% del código viene de Sudoku Play, pero componentes esperan interfaces específicas que difieren de Killer.

Solución: Bridge Pattern: archivos bridge adaptan interfaces nuevas al formato esperado sin modificar componentes originales.

→ ~8,000 líneas reutilizadas, solo ~940 nuevas.

Generación de 6,000 Puzzles Killer

Problema: Generar puzzles Killer con solución única es computacionalmente costoso.

Solución: Script Python que genera jaulas sobre soluciones existentes verificadas. Clasificación automática de dificultad.

→ 6,000 puzzles en 6 niveles, exportados a SQLite.

Crash por Board Undefined

Problema: App crasheaba al abrir GameScreen porque board era undefined durante carga async de SQLite.

Solución: Guard en KillerBoard: si board es undefined, muestra ActivityIndicator en vez de intentar renderizar.

→ Eliminación completa del crash, UX fluida.

Firebase Crashlytics + Expo iOS

Problema: Conflictos con static libraries y modular headers en builds iOS.

Solución: Config plugin personalizado (withFirebaseModularHeaders.js) que inyecta headers en Podfile automáticamente.

→ Builds iOS exitosos con Crashlytics funcional.

Estado

Estado del Proyecto

Completado

  • Core de juego: tipos, validación, store, 6,000 puzzles
  • UI completa: KillerBoard con jaulas, todas las pantallas
  • Schema killer_sudoku con RLS, triggers, índices
  • Publicada en App Store
  • Auth, temas, sonidos, haptics, scoring, notificaciones
  • Modo Aventura con 5,900 niveles
  • Duelos 1v1 y sistema de amigos

Pendiente

  • Publicación en Google Play Store
  • Integración final de AdMob con IDs de producción
  • Configuración de IAP con product IDs específicos
Resultados

Logros Destacados

80% de reutilización de código — arquitectura modular que permite crear producto nuevo en fracción del tiempo

De 0 a App Store en ~16 días — planificación, desarrollo, puzzles, testing y publicación

6,000 puzzles generados programáticamente con clasificación automática de dificultad

Arquitectura production-ready: event sourcing, anti-cheat, offline-first, RLS, crashlytics, OTA

Backend compartido inteligente: 2 apps sobre mismo Supabase con schemas separados y auth unificada

Bridge Pattern para reutilizar ~8,000 líneas de componentes sin modificarlos

Detalles

Información adicional

Idiomas

Español + Inglés

Modos

Clásico, Aventura, Daily, Duelos

Basada en

Sudoku Play (~80% reuso)

Desarrollo

~16 días de 0 a App Store

Schema killer_sudoku

puzzle_catalog (cages JSONB), user_profiles, user_stats, user_completions, daily_challenges, duels, event_counters, adventure_progress, adventure_gates.

Infraestructura compartida

Mismo proyecto Supabase que Sudoku Play y Color Sudoku. Auth unificada, XP compartido vía global.users, economías independientes por schema.