Hola chicos,
He desarrollado un pequeño motor gráfico 2D para juegos en Android. Es algo bastante sencillo pues no incluyo físicas, ni gráficos avanzados (OpenGL). Utilizo un Canvas en un RenderView directamente para pintar.
Ya he realizado dos juegos utilizando este motor, uno de plataformas (con físicas de palo) y otro de cartas, en concreto "la brisca" multijugador a traves de bluetooth.
Los juegos funcionan perfectamente, y fluidos (probados en un Galaxy S2 y Galaxy Ace 2). Lo que me mosquea es el recolector de basura. El logcat no deja de mostrarme mensajes de que se ha liberado memoria congelando la aplicación entre 3 y 15 ms.
Se que en Java hay que joderse porque el recolector pasa cuando le da la gana, e incluso intento programar de forma que no deje referencias muertas, utilizando variables globales, y cuando tengo que eliminar objetos trato de quitarlos todos de una vez, para que libere la memoria en una pasada.
Aun con todo eso me parece que el recolector pasa de manera excesiva, por eso pregunto, ¿Qué mecanismos utilizais para controlar el recolector y por tanto aumentar el rendimiento de la aplicación?
OpenGL, me imagino que estará mucho más optimizado para el 2D que pintar en un Canvas, así que creo que será lo próximo que introduciré en el framework.