ES KAsi UN blog

Blog de Unkasoft, donde hablamos de programación de juegos para móviles, advergaming, marketing móvil, la industria de los videojuegos, metodologías ágiles y todos aquellos temas que nos preocupan en nuestro día a día

10 junio 2008

El tamaño importa

En los juegos para móvil el tamaño importa, sobretodo cuando se trabaja con dispositivos como nokia 3220 y familia donde el tamaño máximo de un juego ronda los 128kb como máximo. Los días de cierre de juego nos pasamos sufriendo pensando en si entrará o no en estos dispositivos... :(

Al final hay un montón de artimañas para que en los juegos se pueda meter más con menos, por ejemplo usando pngout para sacar información de los png (hace muchas cosas más que tienen que ver con lo que explicaré ahora), eliminando colores de las imágenes, etc. Al final todo va empaquetado en un jar, que no deja de ser un zip, con lo cual se comprimen los datos y te salva un poco los muebles ya que normalmente las cadenas de texto de somprimem muy bien.

Pero se puede hacer más para conseguir más espacio, y no se trata de quitar contenido, si no de ordenador adecuadamente. Un ejemplo: poganmos que queremos guardar unas paletas de colores en un fichero, lo primero que pensamos es:

- guardo los colores uno tras otro:
si la paleta tiene 200 colores (3 componentes por color r,g,b) finalmente ocupará en "disco" 600 bytes. Aparte luego se puede comprimir, sin embargo puede que no se comprima. Por ejemplo, en un fichero típico no se comprime prácticamente nada.

- Si pensamos que la compresión lo que hace es quitar redundancia, podemos intentar añadir redundancia a los datos. Si echamos un ojo a los datos es fácil que en una paleta el rojo de un color se parezca más a el rojo de otro color que al verde que escribimos justo a su lado.

Esto en "disco" ocupa exactamente lo mismo que el anterior, 600 bytes, pero no hay que pensar en este tamaño si no en el que tendremos cuando esté comprimido. Lo comprimimos usando zip y obtenemos una mejora de un 36% más o menos.

- Pero pensando un poco más, se puede sacar más redundancia aún, si codificamos en deltas, esto es, guardamos la diferencia de un color al siguiente. Con esto se obtiene más o menos una mejora del 57% una vez comprimido.



Está claro que no es mucho ahorro para un solo fichero, pero si juntas todos los pequeños datos que tienes en un juego (tiles, sprites, fuentes...) se sacan esos pocos kb que hacen que el juego termine funcionando. En resumen, no es más que hacer lo mismo que hace el formato PNG para comprimir... quizás estaría bien meter todos los datos en imágenes y comprimirlos en png .... :)

otro cantar es lo que ocupe en la memoria en ejecución, pero eso es para otro post :)

Etiquetas: ,


Comentarios:

puffff que lucha con el tema del peso... cuando le dices a la gente, sobre todo diseñadores graficos al uso, que "x" juego nos ha ocupado 114kb, alucinan. Pero más alucino yo cuando me decís: "bajame 1kb que no entra en la versión pequeña" XD
 


muy interesante, si señor.
Yo colaboro en juegos flash, y aunque no son tan restrictivos en peso, también es una variable que tenemos muy en cuenta.

Nosotros rondamos los 2-3 mb por juego, donde lo mas problemático es el audio. Cuantos mp3 caben en un mega?? es otro mundo por descubrir....

Un saludo!!
 


Muy interesante, gracias!
 


Publicar un comentario



<< Home

This page is powered by Blogger. Isn't yours?