Una biblioteca de videojuegos multiplataforma
Desarrollo de una plataforma de escritorio y móvil a la medida para una experiencia de juego multiplataforma sin fricciones
En Lambda nos aliamos con Emira para llevar su biblioteca de juegos basada en navegador a dispositivos móviles y de escritorio, y convertirla en una plataforma multijugador en tiempo real. Así es como lo abordamos.
Objetivos
Emira llegó con tres objetivos principales:
- Portar su biblioteca de juegos para navegador a escritorio y móvil sin reconstruirla desde cero
- Incorporar multijugador en tiempo real con una latencia menor a 100 ms en todas las plataformas
- Implementar un backend unificado para gestionar la experiencia de usuario multiplataforma y la sincronización del estado de juego
Desafío
El principal reto estaba en la complejidad de la infraestructura existente de Emira. Con más de 60 juegos para navegador, cada uno construido con tecnologías y niveles de optimización distintos, necesitábamos una solución capaz de:
- Mantener un rendimiento consistente en equipos con especificaciones muy variadas
- Sincronizar en tiempo real el estado de juego en partidas multijugador con una latencia mínima
- Ofrecer funcionalidades sin conexión para los usuarios móviles
- Sincronizar el progreso del usuario y el estado multijugador entre plataformas
graph TB
A[Juegos existentes para navegador] --> B{Retos de integración}
B --> C[Multijugador en tiempo real]
B --> D[Compatibilidad multiplataforma]
B --> E[Sincronización de datos de usuario]
C --> F[Diseño de la solución]
D --> F
E --> F
F --> G[Plataforma de escritorio]
F --> H[Plataforma móvil]
style A fill:#f9f,stroke:#333
style F fill:#bbf,stroke:#333
Solución
Nuestro enfoque se centró en construir una plataforma escalable y de baja latencia que sirviera a usuarios de escritorio y móvil, y que habilitara el multijugador en tiempo real entre todos los clientes.
Plataforma de escritorio
Desarrollamos una aplicación basada en Electron que crea un entorno de ejecución optimizado para los juegos. La plataforma incluye:
- Sistema de gestión de memoria a la medida
- Caché de recursos avanzado
- Integración nativa con el sistema para un mejor rendimiento
- Monitoreo y optimización del rendimiento en tiempo real
Solución móvil
Para los usuarios móviles, creamos una aplicación en React Native que incluye:
- Contenedor WebView a la medida, optimizado para videojuegos
- Sistema inteligente de controles táctiles
- Modo sin conexión para juegos seleccionados
- Interfaz adaptable a distintos tamaños de pantalla
Multijugador e infraestructura de backend
Para impulsar el multijugador en tiempo real en todas las plataformas, implementamos:
- Arquitectura basada en WebSockets con predicción del lado del cliente y reconciliación en el servidor
- Redis para la gestión del estado de las sesiones, con operaciones por debajo de 80 ms
- Infraestructura en la nube sobre AWS (ECS, S3, CloudFront)
- Autenticación de usuarios y sincronización del progreso entre plataformas
Resultados
Resultados en las métricas clave:
Rendimiento
- <80 ms de latencia multijugador promedio de punta a punta en todas las plataformas soportadas
- Más de 10 000 jugadores simultáneos soportados en pruebas de carga
- 99,9 % de disponibilidad de la plataforma
- Tiempos de carga de los juegos un 40 % más rápidos
Plataforma
- 100 % de paridad de funcionalidades entre escritorio (Electron), web, iOS y Android
- Descarga móvil un 60 % más liviana que la versión de escritorio
- Aumento del 85 % en la duración de las sesiones tras el lanzamiento del multijugador
En resumen
Tamaño de la empresa
- Emira: entre 150 y 200 colaboradores
- Equipo del proyecto: 12 ingenieros de Lambda
- Duración del desarrollo: 6 meses
Industria
- Videojuegos
- Desarrollo de software
- Entretenimiento digital
Stack tecnológico
#### Frontend
- Electron
- React Native
- TypeScript
- WebGL
- Redux
- Node.js
- WebSockets
- AWS (ECS, S3, CloudFront)
- Redis
- Docker
- Kubernetes
- Jenkins
- Terraform
_Este caso de estudio fue escrito por el CEO de Lambda y publicado el 19 de noviembre de 2024._


