Juego de iPhone
El Corre Corre
Recorre el Malecón de Santo Domingo en motor en este juego arcade para iPhone. Esquiva el tráfico o ve en contravía para duplicar los puntos.
- Rol
- Período
- Stack
- Enlaces
En números
108
pruebas unitarias en 11 archivos
0
archivos de audio; toda la música y los efectos se sintetizan con Web Audio
16
capturas del App Store a 1320 x 2868, 8 por idioma, generadas sin interfaz gráfica
12
llamadas a getParameters de three.js por cuadro, reducidas de 156 tras corregir el render
-
Sale el vehículo
Añadir el vehículo deja un camino libre de al menos 1.7 veces el ancho del jugador.
-
No sale el vehículo
Añadir el vehículo dejaría todos los espacios por debajo de 1.7 veces el ancho del jugador. Se rechaza para evitar una barrera imposible de esquivar.
La verificación abarca toda la carretera, incluidos los paseos. Una prueba unitaria comprueba que no haya barreras imposibles de esquivar a velocidad de crucero ni a fondo, en ambos lados de la vía.
La idea
El corre corre es el apuro de todos los días en Santo Domingo. Aquí vas en motor por el Malecón entre guaguas y motoconchos, tiras un caballito y decides si los puntos dobles valen el riesgo de ir en contravía.
Lo que construí
Construí el juego con TypeScript y three.js, sin framework ni motor de física, y lo empaqueté para iOS con Capacitor. La carretera pasa por tres tramos: el Malecón, la Zona Colonial con la Puerta del Conde y El Campo. Un solo archivo de configuración reúne los valores que definen cómo se siente manejar, con comentarios que explican cada uno.
Web Audio sintetiza toda la música y los efectos mientras juegas. El repositorio no contiene archivos de audio. Una herramienta sin interfaz gráfica genera escenas identificadas por nombre, con las dimensiones del App Store y en ambos idiomas. De ahí salieron las 16 capturas de la tienda. Las compilaciones de desarrollo incluyen acceso de prueba para inspeccionar el juego y fijar apariciones; la versión de publicación lo excluye.
Retos técnicos
-
Tráfico que siempre deja por dónde pasar
Los vehículos que llegan juntos pueden bloquear la carretera. Antes de agregar uno, el sistema de tráfico mide el espacio libre más ancho entre los vehículos que llegarán al mismo tiempo. Rechaza la aparición si el espacio es menor que el múltiplo configurado del ancho del jugador. Una prueba unitaria verifica que no haya paredes a velocidad normal, a todo gas y en ambos lados de la vía.
-
Proteger el progreso en iOS
iOS puede vaciar el almacenamiento de una vista web cuando el teléfono necesita espacio. Copio las partidas de localStorage al almacenamiento nativo con Capacitor Preferences, para conservar el progreso si eso ocurre.
-
Sonido sin archivos de audio
Osciladores, nodos de ganancia, filtros, búferes de ruido y un compresor generan la música y los efectos mientras juegas. La app no necesita incluir archivos de audio.
Antes y después
| Antes | Después | Fuente | |
|---|---|---|---|
| Trabajo de three.js por cuadro | 156 llamadas a getParameters por cuadro; renderer.render tardaba 0.43 ms en Chrome de escritorio. | 12 llamadas por cuadro; renderer.render tarda 0.24 ms. | Reportado en el commit 5b5bc39; no lo he vuelto a medir. |
Lo próximo
Publicar la 1.0 en el App Store.
Pruébalo
Enfoques compartidos
Probar con entornos y datos reales
Proteger el progreso guardado
Conuco, Coherente, SWARMGEDDON, Invicto