Block Drop Merge
Classic Tetris fused with 2048-style merge: tetromino pieces fall with SRS, where each cell has a numeric value that merges with equal adjacent cells on landing, creating chain reactions. Dual scoring, prestige system, 8 modes, and Target Mode with 30 levels.
25.6K+
Lines of code
8
Game modes
11
Merge tiers (2→2048)
30
Target Mode levels
5
Power-ups
v1.0.2
Version
Key Features
Core — Tetris × 2048
Merge Engine with Chain Reactions
Custom engine: bottom-up scanning, adjacent same-value merging, individual gravity, unlimited chains with sequential animations.
Freeze Merge Preview
On landing, cells to merge blink 500ms before executing. Window to activate power-ups strategically.
Prestige System
Creating a 2048: clears entire board, point bonus and scalable permanent multiplier with each prestige.
Dual Scoring
Merge points (value × 10) + line clears (× level). Chain multipliers up to ×4.0, combos and prestige bonus.
Game Modes
Classic Merge
Incremental speed by level. Game over when reaching the top. Combines Tetris strategy with 2048 merge.
Target Mode (30 levels)
Specific objectives: "Reach 512", "3 ×3 chains", "5 lines with piece limit". 1-3 star system.
Timed (60s/90s/120s)
3 time variants. Maximum score combining drops and merges before the timer.
Daily Challenge + Duels
Deterministic seed for fairness. Daily with global ranking. Duels with coin stakes (10% commission).
Power-ups
Multiplier Bomb
Doubles the value of a selected block.
Color Merge
Merges all blocks of the same value on the board.
Row Shuffle + Downgrade
Rearranges a row or lowers a tier. Tactical tools to unlock situations.
Wildcard
Wildcard piece that merges with any adjacent number.
Social & Monetization
Cross-App Friends
Friends list shared with Block Drop Play via global table. 8-char friend codes.
AdMob + Premium
Banner/interstitial/rewarded with ATT compliance. Premium $0.99/mo: no ads, ×2 coins, Zen, discounts.
Tech Stack
Frontend / Mobile
React Native 0.81
Cross-platform mobile framework
Expo SDK 54
Build, deploy, OTA updates
TypeScript 5.9 (strict)
25,600+ typed lines
Zustand 5
9 stores: game, auth, user, premium, friend, duel, target, theme, localStats
Reanimated 4
Merge, chain, prestige animations at 60fps
Backend
Supabase (shared)
Auth, DB, RPC functions, Realtime
PostgreSQL
Schema blockmerge, 10+ tables, bm_* views, RLS
Deterministic PRNG
Seeds for Daily + Duels with same pieces and values
Services
Google AdMob + ATT
Banner, interstitial, rewarded. iOS ATT compliance
react-native-iap
Monthly + annual subscriptions
Firebase Crashlytics
Production crash reporting
EAS Build + Update
CI/CD with OTA for urgent fixes
Testing
Jest + jest-expo
Unit tests: merge engine, score calculator, board engine
Main Libraries
Technical Challenges
App Store Rejection (4.3a — Spam)
Problem: v1.0.1 rejected: AdMob IDs copied from Block Drop Play, USE_TEST_ADS=true in production, storage keys and IAP SKUs from another app, generic icon.
Solution: Complete audit with grep. Fixed all IDs, icon redesign (numbered blocks in L shape), new screenshots, formal response to Apple.
→ Audit protocol documented for future derivative launches. v1.0.2 submitted.
Chain Reaction Engine
Problem: Merge engine with arbitrarily long chains: merge → gravity → re-merge. Each cell must participate in only one merge per round.
Solution: Iterative bottom-up, left-to-right algorithm. Set of merged cells per round. Individual post-merge gravity. Re-scan until stable. 300ms animated pause per step.
→ 5+ round chains with scaled multipliers. Satisfying gameplay moments.
OTA Update Channel Mismatch
Problem: Updates sent to --branch preview never reached production builds.
Solution: Production builds use channel production. All eas update go to --branch production.
→ Functional OTA updates. Urgent fixes without going through store review.
Safe Area + Fixed Height
Problem: Content overlapped with notch/dynamic island. paddingBottom didn't work in fixed-height containers.
Solution: Consistent SafeAreaView, edges configured per screen type, paddingBottom instead of fixed height.
→ UI without overlaps on all iOS and Android devices.
Readable Board Numbers
Problem: Standard 10×20 (Tetris) board made numbers unreadable on mobile.
Solution: Board reduced to 8×16. responsive.ts with wp()/hp() for proportional scaling. Monospace font.
→ 1-4 digit numbers (2→2048) readable on any device.
Project Status
Completed
- Merge engine: chain reactions, gravity, freeze merge
- Score calculator: chains, combos, prestige
- 9 Zustand stores, 13 screens, specialized components
- Backend: schema blockmerge, bm_* views, RLS
- AdMob with ATT compliance + IAP subscriptions
- 30 Target Mode levels with varied objectives
- Daily challenge + async duels (PRNG)
- i18n ES/EN, Crashlytics, onboarding
- Unit tests: merge engine, score, board
- iOS + Android builds submitted to stores
Pending
- Apple review result v1.0.2
- Target Mode rewards calibration
- Merge sounds with scalable pitch
- Expansion to 100+ Target levels
- Multi-user duel testing in production
Key Achievements
Custom merge engine from scratch: adjacencies, priority merging, individual gravity, unlimited 60fps chains
Original game mechanic: Tetris + 2048 that doesn't exist as an established genre
Deterministic PRNG for fair competitions in Daily and Duels
Multi-app on shared infrastructure: single Supabase with isolated schemas and global social layer
App Store rejection 4.3a resolved: systematic audit and documented protocol
~25,600 lines of strict TypeScript, 9 stores, 13 screens, unit tests
Full-stack indie: mechanic design, frontend, SQL backend with RLS, ads, IAP, store submission
30 Target Mode levels with varied objectives and star system
Additional Information
Merge Evolution — 11 Tiers
From blue (2) to golden with pulsing glow (2048)
Languages
Spanish + English
Modes
8 (Classic, Timed×3, Zen, Daily, Target, Duel)
Board
8×16 + 4 hidden rows
Ecosystem
Shares backend with Block Drop Play
4 Visual Themes
Retro Game Boy
Dark green with colorful blocks
Arcade Neon
Dark background, cyan/magenta
Ocean Deep
Deep blue tones
Sunset Fire
Warm oranges and reds
Original Mechanic
Block Drop Merge combines two genres in a mechanic that doesn't exist as an established category. Tetromino pieces fall and rotate with professional SRS, but each cell has a numeric value that merges with equal adjacent cells on landing, creating cascading chain reactions. The result is a game that requires thinking about both spatial placement (Tetris) and numerical optimization (2048).