Cómo se guarda el progreso en las aplicaciones de colorear
La respuesta obvia es guardar la imagen. La respuesta correcta es guardar un byte por región y volver a generar la imagen, y eso cambia lo que cuesta guardar y lo que sobrevive.
Si alguien tuviera que improvisar una respuesta, diría que la aplicación guarda una foto de cómo va el dibujo. Es la solución evidente y es la equivocada. Guardar la imagen significa escribir cientos de kilobytes cada vez que se toca una región, multiplicado por cada dibujo empezado, y significa además que el resultado queda atado a un tamaño de pantalla concreto.
Lo que se guarda en realidad es mucho más pequeño: para cada región, qué color lleva. Un byte basta para representar hasta doscientos cincuenta y cinco entradas de paleta, que es más de lo que ninguna paleta razonable necesita. Con eso, la imagen no se guarda: se vuelve a generar.
Qué hay ya en el dispositivo antes de tocar nada
Un dibujo para colorear no es una sola imagen, sino un pequeño conjunto de datos. Está el trazo de los contornos, que no cambia nunca. Está un mapa de regiones, donde cada píxel indica a qué región pertenece. Está la paleta, que es una lista corta de colores. Y está la posición donde va impreso cada número. Todo eso viene con el dibujo y es idéntico para cualquier persona que lo abra.
La única cosa que distingue el dibujo a medio hacer de una persona del de otra es qué regiones están rellenas y con qué. Eso es exactamente el estado que hay que guardar, y es una lista de números tan larga como el número de regiones. Un dibujo con cinco mil regiones ocupa unos cinco kilobytes de progreso. Un correo electrónico corto ocupa más.
Regenerar en lugar de recordar
Al abrir el dibujo otra vez, el proceso es directo: se carga el mapa de regiones, se carga la lista guardada, y se pinta cada región con el color que le corresponde. La imagen que aparece en pantalla no es la que se guardó, porque no se guardó ninguna. Se ha vuelto a construir a partir de instrucciones.
Esta diferencia parece técnica y no lo es del todo, porque tiene consecuencias visibles. Como la imagen se reconstruye cada vez, se puede reconstruir a cualquier resolución. El mismo progreso se ve nítido en una pantalla de teléfono pequeña y en una tableta grande, y sigue siendo nítido al hacer zoom, porque no hay una foto ampliándose sino un dibujo repintándose. Guardar la imagen habría fijado el resultado al tamaño en que se guardó.
También significa que el progreso es indiferente a los cambios de aspecto. Si en algún momento cambian los grosores de línea, el tratamiento de los contornos o la forma de mostrar los números, el progreso guardado sigue siendo válido, porque no describe píxeles sino pertenencias: la región 412 lleva el color 7. Eso seguirá siendo cierto se dibuje como se dibuje.
Cuándo se escribe
El otro problema es el momento. Escribir en almacenamiento tras cada toque es lo más seguro y lo más costoso; esperar a que la persona cierre el dibujo es lo más barato y lo más frágil, porque una aplicación puede terminar sin previo aviso —el sistema la cierra para recuperar memoria, se agota la batería, alguien la desliza fuera de la pantalla de tareas.
El compromiso habitual en este tipo de programas consiste en mantener el estado en memoria y volcarlo a disco de vez en cuando: cada cierto número de toques, cada pocos segundos de inactividad, y siempre en el momento en que la aplicación pasa a segundo plano, que es el aviso que da el sistema antes de poder cerrarla. Con un archivo de unos pocos kilobytes, ese volcado es lo bastante rápido como para no notarse.
Es también el motivo por el que el progreso rara vez se pierde entero. Aunque algo salga mal, lo peor que suele perderse es lo hecho desde el último volcado, es decir, unos pocos toques.
Lo que sobrevive y lo que no
Un archivo de progreso así sobrevive con facilidad a las actualizaciones del programa, a un cambio de orientación de la pantalla, a que la imagen se muestre en otro tamaño y a que se rediseñe la interfaz alrededor. Es un formato sencillo y estable, y no depende de nada externo.
Hay dos cosas a las que no sobrevive por su propia naturaleza. La primera es la desaparición de los datos locales: si se desinstala el programa o se borran sus datos, se va también el progreso, porque vive en el dispositivo y no en ningún otro sitio. La segunda es más sutil: el archivo de progreso solo tiene sentido junto al mapa de regiones del dibujo al que pertenece. Los números de región son índices, no descripciones. Si el dibujo se regenerara con distinto reparto de regiones, la lista guardada dejaría de significar lo mismo.
Por eso, la pregunta práctica de si el progreso se conserva casi nunca es una pregunta sobre el guardado en sí, que es la parte robusta, sino sobre dónde vive ese archivo y qué pasa con él cuando cambia el dispositivo. Merece la pena tenerlo claro antes y no después.
Preguntas frecuentes
¿Se guarda una imagen del dibujo a medio colorear?
Normalmente no. Lo eficiente es guardar qué color lleva cada región, que ocupa un byte por región, y reconstruir la imagen al abrirla. Así el progreso ocupa unos pocos kilobytes en lugar de cientos, y no queda atado a una resolución concreta.
¿Se pierde el progreso si la aplicación se cierra de golpe?
Como mucho se pierde lo hecho desde el último volcado a disco, que suele ser cuestión de unos pocos toques. Los sistemas móviles avisan a los programas cuando pasan a segundo plano, y ese aviso es el momento habitual para guardar.
¿Por qué el dibujo se ve nítido al ampliarlo si se guardó antes?
Porque no se guardó ninguna imagen. Al abrirlo se vuelve a pintar cada región a la resolución que haga falta a partir del mapa de regiones y de la lista de colores guardada, de modo que la nitidez no depende del momento en que se guardó.
Pruébalo sobre un lienzo de verdad
Numbrush es colorear por números para adultos: mandalas, rosetones y trabajo geométrico, doce colores por lámina, una lupa para lo estrecho y ninguna penalización por tocar donde no era. Gratis, sin conexión, sin anuncios y sin cuenta.