domingo, 7 de octubre de 2012

Minecraft: O como gestionar mal los recursos del PC.

Los PCs que hoy andan por nuestras casas son más que aceptables, con procesadores multi-core, varios GB de memoria RAM y cientos de disco duroGB. Sin embargo, esto de "ir sobrados" de recursos hace que los desarrolladores de software cada vez se esfuercen menos en la eficiencia.

Un ejemplo de ello lo acabo de ver con Minecraft. Para el que no sepa de que va, es un juego de construcción, de gráficos más bien arcaicos pero que le dan un toque retro cachondo, escrito en Java (comentario del autor: ya vamos mal).

Captura de pantalla de Minecraft. En la imagen se ve el interior de una cueva de la que extraer recursos como piedras, carbón o hierro.

¿Cómo es posible que este juego, con el aspecto mostrado arriba, pueda alcanzar hasta un tamaño GB en memoria RAM? Por muy mal que esté desarrollado, la gestión de gráficos, movimientos y etc. no puede alcanzar ese tamaño, a menos que... guarde en RAM directamente el mundo que rodea al personaje. 

Esto quiere decir que cada uno de los bloques que forman el mundo, y en los que está basado el juego, estén mapeados directamente en memoria RAM. ¿Con qué cantidad de memoria? Pues creo que 8 bits por bloque serían suficientes, daría lugar a 256 bloques diferentes, aunque seamos generosos y supongamos que se usan 16 bits, osease, 2 bytes, 65536 bloques diferentes posibles,. Supongamos también, volviendo a ser generosos, que se guardan en memoria un total de 300ancho x 300largo x 300alto bloques, lo que hace un total de 27.000.000 bloques mapeados en memoria, ocupando 54 MB. ¿Alguien tiene explicación al GB en memoria RAM?