Block Drop Play
Tetris-style game with professional engine: full SRS with wall kicks, T-Spin detection, Perfect Clear, official scoring, 5 game modes, async duels, per-game missions, and arcade/neon design. Part of the shared multi-game ecosystem.
7
Tetrominoes (SRS)
10×20
Board
5
Game modes
8
Visual themes
22
Sound types
v1.0.0
Version
Key Features
Core Gameplay
Professional Tetris Engine
Real-time gravity, hidden spawn zone, lock delay, ghost piece, T-Spin detection (3-corner rule), Perfect Clear, combo system.
SRS Rotation with Wall Kicks
Complete Super Rotation System with differentiated tables for I piece (4×4) and JLSTZ (3×3). 4 kick tests per rotation.
7-Bag System
Each of the 7 tetrominoes appears exactly once every 7 pieces. Eliminates unfair droughts.
Optimized Touch Controls
Tap zones for movement and rotation, swipe for drops, hold button. Configurable DAS in 3 speeds.
Game Modes
Classic
Incremental speed by levels. Every 10 lines levels up. No time limit.
Timed (60s/90s/120s)
3 time variants. Highest score before the clock runs out.
Zen (Premium)
No game over, fixed low speed. Auto-clears random row if no lines cleared in X turns.
Daily Challenge + Duels
Deterministic seed: everyone plays the same sequence. Async duels vs friends with bets.
Scoring & Progression
Official Scoring
Single (100×lvl), Double (300×lvl), Triple (500×lvl), Tetris (800×lvl). T-Spin bonus, Back-to-Back ×1.5, Perfect Clear (3000×lvl).
Per-Game Missions
3 random missions from a pool of ~10 types. +50 coins and +30 XP for completing all 3. Free reroll with ad.
Power-ups
Bomb (clears 3×3), Undo (reverts last piece), Freeze (pauses gravity 10s). Rechargeable with ads or coins.
Economy
Coins (score/10), XP by mode, daily streaks with streak shields, unlockable achievements.
Social
Friends System
8-character friend code, name search, requests, online status.
Rankings & Duels
Weekly leaderboard among friends. Duels with same seed, score comparison, coin stakes.
Monetization
AdMob
Banner on Home (never in gameplay), interstitial every 3 games, rewarded for power-ups, coins, and continue.
Premium
$0.99/mo or $9.99/yr: no ads, ×2 coins, Zen mode, 50% discount on power-ups, exclusive themes.
Tech Stack
Frontend / Mobile
React Native 0.81.5
New Architecture (JSI/Fabric)
Expo SDK 54
Build, deploy, OTA updates
TypeScript 5.9 + React 19
Strict typing
Zustand 5
7 stores: game, auth, user, theme, premium, friend, duel
Reanimated 4.1
Native thread animations, FadeInDown, pulse
Backend
Supabase (shared)
Auth, DB, Edge Functions, Realtime
PostgreSQL
Schema blockdrop, 11 tables, 18 RPC functions
Public views (bd_*)
Secure abstraction layer
3 Edge Functions
Complete game, daily challenge, offline sync
Services
Google AdMob
Banner, interstitial, rewarded
Firebase Crashlytics
Crash reporting
Google OAuth + Apple Sign-In
Auth cross-platform
EAS Build + Update + Submit
Complete CI/CD
Local
AsyncStorage + Zustand Persist
Cache, stats, preferences
expo-secure-store
Encrypted tokens
expo-av
22 sound effect types
Main Libraries
Architecture Decisions
Dedicated Multi-Game Schema
Isolated blockdrop schema in PostgreSQL. Shared tables in global. Client accesses only via bd_* views and wrapper functions bd_*(). Total isolation between games.
Real-Time Game Loop with Zustand
Gravity tick, lock delay, and DAS in Zustand store with controlled intervals. 17 selectors for granular 60 FPS re-renders.
Deterministic PRNG
Date-based seeds for Daily Challenge, shared for Duels. Guarantees same piece sequence between players.
Wrapper Functions + Views
Real tables not exposed to API. Views filter data, functions execute server-side logic. Security-by-obscurity complements RLS.
Hardcoded Arcade Palette
Fixed UI colors (bg #0A0A1A, cyan accent, magenta secondary). Only piece colors are themed. Consistent visual identity.
Server-Side Anti-Cheat
Max score validation per mode, minimum times, pieces/minute. Shadow bans. Scoring and rewards executed on server.
Local-First with Optional Login
Full game without an account. On login, local data syncs. Maximizes retention by eliminating friction.
Technical Challenges
Tetris Engine with Full SRS
Problem: Implement SRS from scratch with differentiated wall kicks for I vs JLSTZ, T-Spin detection, hidden spawn zone.
Solution: tetrisEngine.ts with official wall kick tables, 4 tests per rotation, 3-corner rule for T-Spin.
→ 100% functional engine that passes all rotation edge cases.
Precise Touch Controls
Problem: Map movement, rotation, drops, and hold to touch screen without conflicts. DAS critical for experienced players.
Solution: Separated tap zones, swipe down, configurable DAS in 3 speeds with gesture-handler.
→ Responsive controls without action interference.
OAuth Cross-Platform
Problem: Google OAuth different on Android vs iOS. Supabase rejected iOS tokens with "Unacceptable audience".
Solution: Authorized Client IDs configured for web + iOS in Supabase Auth. Separate flows per platform.
→ Functional login on both platforms with persistent sessions.
Multi-Game Supabase Architecture
Problem: Share one instance between 5+ games without mixing data, with unified users and friends.
Solution: Schemas per game, prefixed views, wrapper functions, granular RLS. Global schema for shared data.
→ Complete isolation, zero user duplication.
Deterministic Seeds
Problem: Guarantee same piece sequence between players in Daily and Duels.
Solution: Seedable PRNG that feeds the 7-bag. Seed = hash(date + "blockdrop") for Daily.
→ 100% reproducible and verifiable sequences.
Legacy Naming Migration
Problem: Reused code contained storage keys and IAP SKUs from other games.
Solution: Audit of 7 files, systematic renaming to blockdrop_* prefixes.
→ Eliminated storage conflicts between apps.
Project Status
Completed
- Tetris engine: SRS, wall kicks, T-Spin, gravity, 7-bag
- Real-time game loop with 17 Zustand selectors
- 12 screens + 14 arcade/neon components
- Backend: 11 tables, 18 RPC functions, 3 Edge Functions
- Auth Google + Apple, AdMob, Crashlytics
- Per-game missions (10 types)
- i18n ES/EN (~180 keys), 22 sounds
- Published on iOS App Store
Pending
- Daily Challenge and Duels end-to-end testing
- Synced leaderboards and achievements
- Final Google Play publication
- Interactive tutorial/onboarding
- Line clearing animations (polish)
Key Achievements
Professional Tetris engine from scratch: SRS, wall kicks, T-Spin, Perfect Clear, official scoring
Scalable multi-game architecture: 1 Supabase backend for 5+ games with isolated schemas
~70% code reuse: auth, friends, ads, IAP, base stores, shared design system
Real cross-platform: one TypeScript codebase generates native iOS + Android builds
12 screens + 14 game components with consistent arcade/neon design
Server-side anti-cheat: score, time, and suspicious activity validation in PostgreSQL
Deterministic seeds for fairness in Daily Challenges and Duels
Full compliance: privacy policy, terms, account deletion. Submitted to both stores
Additional Information
Languages
Spanish + English
Modes
Classic, Timed, Zen, Daily, Duel
Ecosystem
5+ shared games
Reuse
~70% base code
7 Tetrominoes — Super Rotation System
I
O
T
S
Z
L
J
8 Piece Themes
Multi-Game Ecosystem
Part of a game portfolio sharing Supabase backend, user system and authentication, friends system, arcade/neon design system, AdMob account, and IAP infrastructure. Other games: Block Puzzle Play, Sudoku Play, Color Sudoku Play, Killer Sudoku Play.