Mantener el paquete de un juego por debajo de 10 MB
· 3 min de lectura
La mayoría de portales curados de juegos web limitan la subida a algo entre 5 MB y 20 MB, y varios rechazan cualquier cosa que pase de la raya sin mirarla dos veces. El límite existe porque el portal sirve el juego a un móvil con datos móviles, y una primera carga lenta es un jugador que se fue antes de que empezara el juego. El límite de tamaño es una forma indirecta de preguntar «¿esto va a abrir?».
Nuestros nueve juegos propios van de 63 KB a 2,49 MB. Aquí está dónde se concentra de verdad el peso, por orden de importancia.
1. Arte sin comprimir
Casi siempre es todo el problema. Una carpeta de PNG exportados directamente desde un programa de dibujo es, con diferencia, la partida más grande del paquete de un juego: un orden de magnitud por encima del resto.
Cuando nuestro script de sincronización recodifica el arte fuente a WebP, la carpeta de arte de uno de los juegos pasó de unos 25 MB de PNG a 1,4 MB, sin diferencia visible. WebP ya funciona en todos los sitios que importan, y para arte de juego (color plano, bordes duros, pocos degradados) sale prácticamente gratis.
Si solo haces una cosa, haz esta.
2. Un motor del que usas una décima parte
Un motor de propósito general trae un solucionador de física, un sistema de partículas, un runtime de animación Spine, un cargador de tilemaps y una docena de subsistemas más, los use tu juego o no. El tree-shaking ayuda menos de lo que te gustaría, porque buena parte está conectada por dentro.
Nuestros tres juegos en Phaser pesan 1,33, 2,09 y 2,49 MB. Nuestros seis juegos sin motor, de 63 KB a 390 KB. Esa diferencia es casi entera el motor. Puede ser el trato correcto (mira el artículo sobre construir sin motor), pero conviene que sepas que lo estás pagando.
3. Audio
Los bucles en WAV sin comprimir pesan mucho. Pasa la música a un formato de bitrate bajo y mantén cortos los efectos de sonido. Un minuto de bucle ambiental no tiene por qué pesar más que el resto del juego.
4. Todo lo demás
El código casi nunca es el problema. Toda la lógica de un juego se queda en decenas de kilobytes una vez minificada. Si estás minificando JavaScript para entrar en un límite de tamaño, estás optimizando el fichero equivocado.
Atlas de texturas, y el único compromiso real
Meter cuarenta imágenes pequeñas en una sola lámina convierte cuarenta peticiones HTTP en una, y permite al motor subir una única textura a la GPU en lugar de docenas. El coste es un paso de build y un poco de herramientas. A partir de un puñado de sprites merece la pena; por debajo es pura ceremonia.
Lo que no hay que hacer
No quites funciones para llegar a una cifra. Un límite de tamaño es una restricción de entrega, no de alcance. Si el juego pesa 12 MB y el tope es 10, la respuesta está en los puntos 1 a 3 de arriba; nunca es «quitar el tercer mundo». Los jugadores no pidieron un juego más pequeño; el portal pidió uno más rápido.
Mide, no adivines
Compila el juego, mira el directorio de salida, ordena por tamaño. El culpable siempre salta a la vista en cuanto miras de verdad, y casi nunca está donde suponías. Publicamos las cifras de cada juego en la página de licencias justo por eso: un número que puedes comprobar vale más que un número que alguien tecleó.
