Olá Broks,
Para desenvolver aplicativos como esse que você mostrou, basta um software que seja capaz de exibir gráficos 2D e 3D em tempo real. Ao que me parece, pelas imagens e pelo vídeo demonstrativo do aplicativo, os planetas e os asteróides maiores são geometrias 3D (dá para notar a segmentação poligonal) enquanto as estrelas e os cinturões de pequenos asteróides são sprites 2D. Quanto a interatividade do aplicativo com o giroscópio (dispositivo eletrônico que permite definir em que ângulo o tablet/smartphone está em relação ao plano), existem funções específicas na biblioteca do sistema Android que permitem controlar isso de maneira bem simples.
Algumas opções de softwares e frameworks para desenvolver aplicativos desse tipo:
- Unity. Esse software/engine é capaz de criar desde wallpapers animados até jogos de alta qualidade para PC, consoles, dispositivos móveis e até para browsers de Internet. É um software de interface amigável mas ao mesmo tempo é complexo em recursos, e que requer estudo como qualquer outro software complexo. Possui versão gratuita para que se possa testar, estudar e até publicar aplicativos gratuitamente. Para desenvolver aplicativos para iOS ou Android, é necessário adquirir uma licença específica de extensão. Mais detalhes em https://store.unity3d.com/
- min3d e jPCT. Esses são dois frameworks para Android que fazem uso da linguagem Java e da biblioteca gráfica OpenGL ES. Ambos possuem um conjunto de funções avançadas prontas, que permitem facilitar o desenvolvimento de games e outros aplicativos que requerem gráficos 3D em tempo real. Mais sobre min3d em http://code.google.com/p/min3d/ e sobre jPCT em http://www.jpct.net/jpct-ae/
- OpenGL ES. Essa é uma biblioteca de funções, derivada da biblioteca OpenGL, capaz de exibir gráficos 2D e 3D em tempo real para dispositivos móveis. Mais sobre OpenGL ES para sistema Android em http://developer.android.com/guide/topics/graphics/opengl.html
Dessa forma, foram apresentadas 3 opções, da mais intuitiva a menos intuitiva. Todas requerem estudo e esforço por parte do usuário. A diferença entre elas é a quantidade de recursos prontos para serem usados. Enquanto que no Unity é possível encontrar vários recursos prontos, na OpenGL ES é necessário implementar muitos desses recursos. A vantagem de pegar vários recursos já prontos (por ex., usando Unity) é poder concentrar o tempo de desenvolvimento disponível no design em si. Por outro lado, a vantagem de implementar seus próprios recursos (por ex., usando OpenGL ES diretamente) é o maior controle e possibilidade de customização dos mesmos.
Abraços e feliz 2013!!!