Hace unos días tuve la tarea de optimizar varios de los juegos que tenemos en Roshka Studios, y uno de los objetivos fue reducir el tamaño de los builds. Por ejemplo, MiniChase es un pequeño juego con un par de objetos 3D, sonidos, de 1 solo nivel y pesa 28mb!.

Primero, tenemos que saber que es lo está ocupando tanto espacio, para saber eso, abrimos la ventana CONSOLE de Unity y hacemos click en el pequeño botón que esta justo debajo de la X y seleccionamos la opción OPEN EDITOR LOG.

openEditorLog

Limpiamos el log de la ventana con Clear Display para evitar perdernos y luego generamos nuestro build ( en el caso de Windows probablemente se abra el bloc de notas asi que probablemente no van a poder seleccionar todo, borrar y guardar mientras este ejecutandose Unity )… una vez listo, scroleamos un poco el log hasta encontrar una información como la imagen de abajo.

editorLogMacOS
Editor Log MacOSX

Ahi podemos darnos cuenta de que es lo que nos ocupa tanto espacio. Tambien pueden pescar por assets que no estan utilizando pero que estan siendo incluidos en el build.

Tips rápidos para reducir el tamaño

  1. Texturas y Sprites: Elegir el formato COMPRESSED y desactivar la opción GENERATE MIPMAPS para las texturas en donde los mipmaps no son tan importantes.
    imageSettings
  2. Sonidos: Elegir el formato VORBIS y reducir la calidad.
    soundsSettings
  3. Android: En vez de utilizar la opción FAT en el BUILD SETTINGS, crear los builds ARMV7 y x86 por separado (para subir ambos builds en el playstore van a necesitar realizar unos pasos adicionales… les muestro en otro post), o crear solo el build ARMV7 y subir solo ese build… los dipositivos x86 pueden correr builds ARMV7.
    deviceFilter
  4. Activar Stripping Level: El mejor sería micro mscorlib pero podría generar problemas, yo normalmente selecciono el intermedio que es byte code, hasta ahora no noto casi ninguna diferencia en el tamaño entre las distintas opciones.
    stripping
  5. iOS: En el build settings, en Script call optimization level seleccionar Fast but no exceptions. 
  6. En API Compatibility Level seleccionar .NET 2.0 subset.
  7. Cuando importen un Mesh activen la opción Compression en el Import Settings del mesh.

Si les interesa saber en cuanto quedo el tamaño del apk de MiniChase gracias a estas optimizaciones les dejo la precisa…

Version ORIGINAL FAT (ARMv7 y x86): 28mb
Version FAT (ARMv7 y x86): 23.6mb (-4.4mb)
Version ARMv7: 14.9mb (-13.1mb)
Version x86: 15.3mb (-12.7mb)

Advertisements