Los 2 problemas más difíciles que hay que resolver para hacer un juego son detectar las colisiones entre todos los objetos y saber cómo arreglar todo en el mapa en memoria, cómo cargar y descargar elementos a medida avanzamos.
Se me ocurre que para detectar colisiones podemos definir un borde de cada objeto y una pantalla puesta a cero. Cada vez que queramos detectar colisiones, dibujamos el borde de cada objeto, cada pixel del borde vale 1. Si al dibujar y verificar cada pixel vemos que hay un pixel que no vale 1, sabemos que hay una colisión en ese punto, y podemos ir en orden recorriendo una segunda vez cada elemento para ver si hay colisión con este y con cuál otro.
Para arreglar el mapa en memoria, simplemente definimos un mapa de tamaño virtual que no necesariamente vamos a llenar, por ejemplo un mapa de 1048576 pixeles en total. Entonces solo definimos un mapa que muestra o indica con un formato dado los elementos EN SECUENCIA, y definimos un límite para cargar y descargar elementos ANTES de que se muestren o se oculten en pantalla dentro del que vamos actualizando los elementos activos que vamos a calcular en el mapa virtual y vamos a mostrar con scrolling en la pantalla.