Bueno, yo cree el segundo motor que no creaba ni destruia ningun proceso, pero a cambio tenías un array de procesos que cubría toda la pantalla (dos arrays si usas dos capas, tres con tres capas...) y a poco que uses una resolución moderada con tiles relativamente normales (32x32) el rendimiento no era muy bueno.
Sin embargo, en el tercero creo una lista con un proceso por tile dentro de la región, cuyo gráfico no sea 0, y se mantienen todos mientras la cámara no "salta" de tile. En ese momento volvemos a mirar los tiles dentro de la región que no son 0, y modifico los procesos QUE YA ESTÁN CREADOS, la única modificación es que si hay un número mayor de tiles no nulos, añado procesos, y si es menor, elimino los que sobran.
Puede parecer que con este tercer método hay peor rendimiento, pero no, va a un 150% de velocidad respecto al segundo, sobre todo porque elimino la carga de muchos procesos (en un plataformas hay muchos huecos vacíos, sobre todo en las capas que van por encima). En la GP2X, el mapa de FenixLand con el motor 2.0 iba a 70fps, con el motor 3.0 (cuando conseguí que funcionase) lograba un tope de 120fps... y esto con Fenix, con Bennu el 3.0 sube a 140fps (aun tengo que comprobar la máxima caida de frames).
El motorcillo creo que ya lo publiqué unas cuantas veces, pero pronto volveré a hacerlo, cuando acabe con la isométrica (que más de uno lo andaba pidiendo). Ya he terminado de codear (sigo con la flojera, apenas 5 líneas por día, hoy me he pegado un atracón) y mañana empiezo el debug, que de momento ya tengo un puntero fuera de zona. Y ya de paso, resuelvo un bug que he detectado de la cámara con los mapas no cíclicos.