1. Overview & Specifications
2048-Infinity is an original, production-grade native Android puzzle game developed by StrangeInfinity. Built from the ground up with Kotlin 2.0.21 and Jetpack Compose Material 3, it delivers high-performance sliding-tile mechanics elevated with an infinite 64-bit numerical engine, hardware-accelerated animations running at 60/120Hz display refresh rates, persistent local state, rich player statistics, deterministic challenge seeds, and complete offline privacy.
The game declares zero internet permissions (android.permission.INTERNET is completely omitted), ensuring that zero bytes of player gameplay or analytics ever leave the device.
2. Clean Architecture & MVVM Pattern
The codebase strictly follows Android recommended architecture patterns: Clean Architecture, Model-View-ViewModel (MVVM), and Unidirectional Data Flow (UDF). The core deterministic puzzle engine is decoupled from Android platform dependencies, enabling instant headless unit testing without emulators.
3. Mathematical Game Engine Rules
The GameEngine enforces classic mathematical 2048 rules with deterministic invariants:
Single-Merge Guarantee
During any single directional swipe, a newly merged tile cannot merge again in the same move.
Tile Spawn Probability
A new tile is spawned only if the move altered the board configuration. The new tile is placed randomly in an unoccupied cell with exact probability distribution:
- Tile Value 2: 90% probability (
0.90) - Tile Value 4: 10% probability (
0.10)
64-Bit Infinite Integer Engine
Unlike legacy 2048 implementations that store tile values in 32-bit signed integers (capping or overflowing around 2 billion), 2048-Infinity stores values as Kotlin 64-bit Long integers. This allows unbounded cosmic growth:
Victory & Defeat Criteria
- Victory: Unlocked when any cell achieves a value of
2048. Players can select Keep Going to continue into infinite puzzle depth. - Game Over: Triggered if all grid cells are occupied and no two horizontally or vertically adjacent cells contain equal values.
4. Jetpack Compose UI & Animation System
Traditional Android Views suffer from layout hierarchy recalculations during rapid gesture movements. 2048-Infinity achieves native 60 FPS and 120 FPS high-refresh rate animations using Jetpack Compose's direct lambda-offset modifier:
Dynamic Tile Typography
As numbers grow from 2 to 16384 and beyond, tile text automatically scales dynamically to ensure numbers fit crisply within tile boundaries without ellipsis or text truncation:
- 1–2 digits (2, 64):
32.spfont size, Bold weight - 3 digits (128, 512):
26.spfont size - 4 digits (1024, 8192):
20.spfont size - 5+ digits (16384, 65536):
15.spfont size
5. Zero-Latency Audio Synthesis & Haptics
Standard Android sound playback via MediaPlayer incurs noticeable 50ms–150ms decoding latency. 2048-Infinity solves this using hardware synthesized tones:
- Move Tone: High-frequency short chirp (
ToneGenerator.TONE_PROP_BEEP) - Merge Chime: Pleasant dual-frequency resonance (
ToneGenerator.TONE_PROP_ACK) - Victory Fanfare: Celebratory multi-note prompt tone
- Defeat Tone: Low-frequency minor resolution tone
Tactile vibrations are powered by Android's modern VibratorManager (API 31+) with fallback to classic Vibrator. Merge events trigger VibrationEffect.createOneShot(25, 120) for crisp haptic feedback.
6. Jetpack DataStore Persistence
Game state is managed reactively via GamePreferencesRepository backed by Jetpack DataStore. Unlike legacy SharedPreferences, DataStore performs all disk I/O asynchronously off the main thread:
7. APK Installation & Verification
Download the signed release APK directly to your device:
Verify APK Signature
You can inspect and verify the APK signature using the official Android SDK apksigner tool:
Output confirms valid v1, v2, v3, and v4 signing schemas matching the StrangeInfinity release certificate.
8. Building from Source
To build 2048-Infinity from source code:
The output APK is generated at app/build/outputs/apk/release/app-release.apk.
9. Permissions & Privacy Statement
2048-Infinity is built on complete transparency and user respect:
- android.permission.VIBRATE: Used solely to generate tactile haptic feedback during moves and merges. Can be disabled at any time in Settings.
- Zero Network Declarations: The app does not declare
android.permission.INTERNETorandroid.permission.ACCESS_NETWORK_STATE. The Android OS prevents the app from making network connections at the kernel sandbox level. - Zero Tracking SDKs: No Google Play Services, Firebase, ad frameworks, or telemetry collectors are linked into the binary.