Caso de estudio · Producto propio
Emula2
Tus clásicos portátiles, con medallas por lo que logras.
Reto
Los emuladores móviles se quedaron en el pasado.
Muchos emuladores portátiles en las tiendas están abandonados, llenos de anuncios o piden una cuenta y conexión para algo tan simple como registrar un logro. Quienes hacen cacerías de shinies cuentan sus reinicios a mano, en otra app o con una calculadora. Queríamos un emulador moderno, nativo y respetuoso con la privacidad, que además entendiera lo que pasa dentro del juego.
Enfoque
Lógica compartida, interfaz nativa, rendimiento primero.
Compartimos el dominio, los datos y los ViewModels con Kotlin Multiplatform, y construimos la interfaz nativa en cada plataforma: Jetpack Compose con Material 3 en Android y SwiftUI en iOS. El núcleo de emulación corre en C, entrega cada frame con un triple buffer y no asigna memoria por frame. Un motor de medallas lee la memoria emulada para detectar hitos reales del juego. Sus reglas viven como datos y se verifican antes de cada release. Todo se queda en el dispositivo: sin red, sin analíticas y sin cuentas.
Resultado
En pruebas para App Store y Google Play.
Emula2 está en pre-lanzamiento, con builds internos en iOS y Android. La app funciona en inglés y español, es compatible con TalkBack, VoiceOver, texto dinámico y movimiento reducido, y no pide ningún permiso en Android.
Stack
Lo que usamos.
Tecnologías elegidas por encaje, no por moda:
- Kotlin Multiplatform (dominio, datos y ViewModels compartidos, MVI)
- Jetpack Compose + Material 3 en Android, SwiftUI + SKIE en iOS
- Núcleo de emulación en C (MPL-2.0) con Oboe, AVAudioEngine, OpenGL ES y Metal
- SQLDelight + DataStore para persistencia local, sin backend
- Motor de medallas declarativo, con reglas generadas y verificadas antes de cada release
¿Quieres conocer la app?
Mira sus funciones, la política de privacidad y el soporte de Emula2.
Ir a la página del producto