Una forma es tener varias capas en tu mapa, cada capa puede ser básicamente de dos tipos:
1. Cada casilla contiene directamente la información del mapa:
Cada número indica características del mapa. Puedes tener una enumeracion o banderas de estado para describir cada posición. Esto sólo es recomendable para detalles muy abundantes en tu mapa y que ocupan muy poco espacio en memoria, generalmente no más de 4 bytes aprovechando al máximo cada bit.
2. Cada casilla sólo contiene un indice a una lista de objetos:
Cada número es un indice a una tabla de objetos, al acceder a cada objeto podrías obtener su tipo y a partir de ello saber como manejarlo. Esto es más adecuado para detalles no tan frecuentes en el mapa y que además cuya información ocupa una cantidad razonable de memoria. Esta es una buena forma de economizar memoria, por ejemplo puedes utilizar solo 2 bytes para el indice de la tabla de objetos y tener más de 60000 objetos por mapa lo que es más que suficiente para un mapa de un tamaño razonable. Al final de tu archivo de mapa tendrías que guardar la información de cada objeto, indicando el número de objetos, luego (por objeto) cuanto espacio ocupa la información del objeto en cuestión.
3. Sin casillas, acceso directo a la lista de objetos:
Otra forma es prescindir de la tabla de indices y trabajar directamente con la lista de objetos que conforman tu mapa. Es mucho más económico en memoria para mapas muy grandes que no son muy densos en detalles. La desventaja es perder el acceso directo a cada objeto simplemente conociendo su posición. Al momento de desplegar en pantalla estos mapas o al trabajar la lógica del juego tendrás que recorrer esa lista de objetos muy a menudo con mucho impacto en rendimiento en tiempo de CPU, asi que es prácticamente necesario tener la lista de objetos del mapa en una estructura de datos a manera de tabla hash bidimensional. Lo que sería a la vez una optimización del caso 2 que sólo permite un objeto por "casilla". En este caso tendrías una lista de objetos por cada casilla y el numero de casillas debería ser mucho menor para economizar memoria. De todos modos la clave es saber cuanta memoria puedes sacrificar para reducir el consumo de tiempo de CPU.