Block Drop Play
Juego estilo Tetris con motor profesional: SRS completo con wall kicks, T-Spin detection, Perfect Clear, scoring oficial, 5 modos de juego, duelos asincrónicos, misiones por partida y diseño arcade/neon. Parte del ecosistema multi-game compartido.
7
Tetrominós (SRS)
10×20
Tablero
5
Modos de juego
8
Temas visuales
22
Tipos de sonido
v1.0.0
Versión
Características principales
Core Gameplay
Motor Tetris Profesional
Gravedad real-time, spawn en zona oculta, lock delay, ghost piece, T-Spin detection (3-corner rule), Perfect Clear, combo system.
Rotación SRS con Wall Kicks
Super Rotation System completo con tablas diferenciadas para pieza I (4×4) y JLSTZ (3×3). 4 tests de kick por rotación.
Sistema 7-Bag
Cada uno de los 7 tetrominós aparece exactamente una vez cada 7 piezas. Elimina sequías injustas.
Controles Táctiles Optimizados
Zonas de tap para movimiento y rotación, swipe para drops, hold button. DAS configurable en 3 velocidades.
Modos de Juego
Classic
Velocidad incremental por niveles. Cada 10 líneas sube de nivel. Sin límite de tiempo.
Contrarreloj (60s/90s/120s)
3 variantes de tiempo. Mayor puntaje antes de que se acabe el reloj.
Zen (Premium)
Sin game over, velocidad fija baja. Auto-limpieza de fila aleatoria si no se limpia en X turnos.
Daily Challenge + Duelos
Seed determinístico: todos juegan la misma secuencia. Duelos asincrónicos vs amigos con apuestas.
Scoring y Progresión
Scoring Oficial
Single (100×lvl), Double (300×lvl), Triple (500×lvl), Tetris (800×lvl). T-Spin bonus, Back-to-Back ×1.5, Perfect Clear (3000×lvl).
Misiones por Partida
3 misiones aleatorias de un pool de ~10 tipos. +50 coins y +30 XP por completar las 3. Reroll gratis con ad.
Power-ups
Bomba (elimina 3×3), Deshacer (revierte última pieza), Congelar (pausa gravedad 10s). Recargables con ads o coins.
Economía
Coins (score/10), XP por modo, rachas diarias con streak shields, logros desbloqueables.
Social
Sistema de Amigos
Friend code de 8 caracteres, búsqueda por nombre, solicitudes, estado online.
Rankings y Duelos
Leaderboard semanal entre amigos. Duelos con mismo seed, comparación de scores, stakes de coins.
Monetización
AdMob
Banner en Home (nunca en gameplay), interstitial cada 3 partidas, rewarded para power-ups, coins y continue.
Premium
$0.99/mes o $9.99/año: sin ads, ×2 coins, modo Zen, 50% descuento en power-ups, temas exclusivos.
Stack Tecnológico
Frontend / Mobile
React Native 0.81.5
New Architecture (JSI/Fabric)
Expo SDK 54
Build, deploy, OTA updates
TypeScript 5.9 + React 19
Tipado estricto
Zustand 5
7 stores: game, auth, user, theme, premium, friend, duel
Reanimated 4.1
Animaciones hilo nativo, FadeInDown, pulse
Backend
Supabase (compartido)
Auth, DB, Edge Functions, Realtime
PostgreSQL
Schema blockdrop, 11 tablas, 18 funciones RPC
Vistas públicas (bd_*)
Capa de abstracción segura
3 Edge Functions
Completar partida, daily challenge, sync offline
Servicios
Google AdMob
Banner, interstitial, rewarded
Firebase Crashlytics
Crash reporting
Google OAuth + Apple Sign-In
Auth cross-platform
EAS Build + Update + Submit
CI/CD completo
Local
AsyncStorage + Zustand Persist
Cache, stats, preferencias
expo-secure-store
Tokens cifrados
expo-av
22 tipos de efectos de sonido
Librerías principales
Decisiones de Arquitectura
Schema Dedicado Multi-Game
Schema blockdrop aislado en PostgreSQL. Tablas compartidas en global. Cliente accede solo via vistas bd_* y funciones wrapper bd_*(). Aislamiento total entre juegos.
Game Loop Real-Time con Zustand
Gravity tick, lock delay, y DAS en store Zustand con intervalos controlados. 17 selectores para re-renders granulares a 60 FPS.
PRNG Determinístico
Seeds basadas en fecha para Daily Challenge y compartidas para Duelos. Garantiza misma secuencia de piezas entre jugadores.
Wrapper Functions + Vistas
Tablas reales no expuestas al API. Vistas filtran datos, funciones ejecutan lógica server-side. Security-by-obscurity complementa RLS.
Paleta Arcade Hardcodeada
Colores de UI fijos (fondo #0A0A1A, cyan accent, magenta secundario). Solo colores de piezas son temáticos. Identidad visual consistente.
Anti-Cheat Server-Side
Validación de scores máximos por modo, tiempos mínimos, piezas/minuto. Shadow bans. Scoring y rewards ejecutados en servidor.
Local-First con Login Opcional
Juego completo sin cuenta. Al hacer login, datos locales se sincronizan. Maximiza retención eliminando fricción.
Desafíos Técnicos
Motor Tetris con SRS Completo
Problema: Implementar SRS desde cero con wall kicks diferenciados para I vs JLSTZ, T-Spin detection, zona de spawn oculta.
Solución: tetrisEngine.ts con tablas de wall kicks oficiales, 4 tests por rotación, 3-corner rule para T-Spin.
→ Motor 100% funcional que pasa todos los edge cases de rotación.
Controles Táctiles Precisos
Problema: Mapear movimiento, rotación, drops y hold a pantalla táctil sin conflictos. DAS crítico para jugadores experimentados.
Solución: Zonas de tap separadas, swipe down, DAS configurable en 3 velocidades con gesture-handler.
→ Controles responsivos sin interferencia entre acciones.
OAuth Cross-Platform
Problema: Google OAuth diferente en Android vs iOS. Supabase rechazaba tokens iOS con "Unacceptable audience".
Solución: Authorized Client IDs configurados para web + iOS en Supabase Auth. Flujos separados por plataforma.
→ Login funcional en ambas plataformas con sesiones persistentes.
Arquitectura Multi-Game en Supabase
Problema: Compartir una instancia entre 5+ juegos sin mezclar datos, con usuarios y amigos unificados.
Solución: Schemas por juego, vistas con prefijo, funciones wrapper, RLS granular. Schema global para compartidos.
→ Aislamiento completo, zero duplicación de usuarios.
Seeds Determinísticas
Problema: Garantizar misma secuencia de piezas entre jugadores en Daily y Duelos.
Solución: PRNG seedeable que alimenta el 7-bag. Seed = hash(date + "blockdrop") para Daily.
→ Secuencias 100% reproducibles y verificables.
Migración de Naming Legacy
Problema: Código reutilizado contenía keys de storage y SKUs de IAP de otros juegos.
Solución: Auditoría de 7 archivos, renaming sistemático a prefijos blockdrop_*.
→ Eliminación de conflictos de storage entre apps.
Estado del Proyecto
Completado
- Motor Tetris: SRS, wall kicks, T-Spin, gravedad, 7-bag
- Game loop real-time con 17 selectores Zustand
- 12 pantallas + 14 componentes arcade/neon
- Backend: 11 tablas, 18 funciones RPC, 3 Edge Functions
- Auth Google + Apple, AdMob, Crashlytics
- Misiones por partida (10 tipos)
- i18n ES/EN (~180 keys), 22 sonidos
- Publicada en iOS App Store
Pendiente
- Daily Challenge y Duelos end-to-end testing
- Leaderboards y achievements sincronizados
- Publicación final en Google Play
- Tutorial/onboarding interactivo
- Animaciones de limpieza de líneas (polish)
Logros Destacados
Motor Tetris profesional desde cero: SRS, wall kicks, T-Spin, Perfect Clear, scoring oficial
Arquitectura multi-game escalable: 1 backend Supabase para 5+ juegos con schemas aislados
~70% reutilización de código: auth, amigos, ads, IAP, stores base, design system compartido
Cross-platform real: un codebase TypeScript genera builds nativos iOS + Android
12 pantallas + 14 componentes de juego con diseño arcade/neon consistente
Anti-cheat server-side: validación de scores, tiempos y actividad sospechosa en PostgreSQL
Seeds determinísticas para fairness en Daily Challenges y Duelos
Compliance completo: privacy policy, terms, account deletion. Enviado a ambas tiendas
Información adicional
Idiomas
Español + Inglés
Modos
Classic, Timed, Zen, Daily, Duel
Ecosistema
5+ juegos compartidos
Reuso
~70% código base
7 Tetrominós — Super Rotation System
I
O
T
S
Z
L
J
8 Temas de Piezas
Ecosistema Multi-Game
Forma parte de un portfolio de juegos que comparten backend Supabase, sistema de usuarios y autenticación, sistema de amigos, design system arcade/neon, cuenta AdMob e infraestructura de IAP. Otros juegos: Block Puzzle Play, Sudoku Play, Color Sudoku Play, Killer Sudoku Play.