Juegos en android

Solo disponible en BuenasTareas
  • Páginas : 41 (10137 palabras )
  • Descarga(s) : 0
  • Publicado : 30 de mayo de 2011
Leer documento completo
Vista previa del texto
La estructura básica de un juego
Para empezar a programar un videojuego necesitas definir una clase que herede de BaseGameActivity.BaseGameActivity es el corazón del juego. Contiene un Engine y se encarga de crear el SurfaceView en el que el contenido del Engine será dibujado. Hay exáctamente un Engine para un BaseGameActivity. Podrás saltar de un BaseGameActivity a otro utilizando losmecanismos de control de Android: Intents.

Veamos un código completamente funcional simplificado al máximo. (Lo único que hace es mostrar la pantalla en color negro)

-------------------------------------------------
public class HelloWorld extends BaseGameActivity {
private static final int CAMERA_WIDTH = 720;
private static final int CAMERA_HEIGHT = 480;

private CameramCamera;

@Override
public Engine onLoadEngine() {
this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera));
}

@Override
public void onLoadResources() {
}

@Override
public Scene onLoadScene() {
final Scene scene = new Scene(1);return scene;
}

@Override
public void onLoadComplete() {
}
}
Por el mero hecho de heredar de BaseGameActivity nos vemos obligados a dar una implementación de:onLoadEngine, onLoadResources, onLoadScene y onLoadComplete.

Veamos qué lógica tenemos que dar a cada método:

* onLoadEngine. 
* Nos encargaremos de inicializar el Engine del juego, ya que lo debemos devolver.* onLoadResources. 
* Aquí cargaremos las imágenes, música, sonidos, fuentes, etc.
* onLoadScene. 
* Aquí prepararemos todos los objetos que entraran en juego.
* onLoadComplete. 
* No he visto ningún ejemplo que lo utilice todavía. Supongo que se ejecutará una vez haya finalizado el método anterior.

Vamos a analizar el código anterior...

Lo primero quedefinimos son dos constantes que contendrán el ancho (CAMERA_WIDTH) y alto (CAMERA_HEIGHT) de la pantalla de nuestro juego, así como la variable de instancia que hará referencia a la cámara. 
-------------------------------------------------
private static final int CAMERA_WIDTH = 720;
private static final int CAMERA_HEIGHT = 480;

private Camera mCamera;
Lo bueno de programar unjuego en OpenGL es que podemos definir el alto y ancho que queramos. Será OpenGL quien lo reescale para que entre en la pantalla de nuestro movil manteniendo las proporciones. Si quieres que tu juego ocupe la pantalla por completo y no aparezcan ningunas bandas negras arriba y abajo, o en los laterales, asegúrate que estás indicando un alto y ancho proporcional a la resolución de tu pantalla.(Podemos complicarlo un poco más, pero ahora no merece la pena.)

Veamos ahora qué se hace en onLoadEngine.
-------------------------------------------------
@Override
public Engine onLoadEngine() {
this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH,CAMERA_HEIGHT), this.mCamera));
}
Creamos la cámara con la resolución que le habíamos dado a la pantalla de juego.
Devolvemos el Engine creado, al cual le hemos indicado que el juego se desarrollará sosteniendo el movil en posición horizontal (ScreenOrientation.LANDSCAPE), además de indicarle que queremos que la pantalla de juego no se deforme si se ejecuta en un terminal con una tasa de aspectodistinta. (Pueden aparecer bandas negras, como muchas películas de cine cuando se visualizan en televisores 4:3)

Si el juego se jugara con la pantalla del movil en posición vertical, indicaríamos ScreenOrientation.PORTRAIT.

Engine hace que el juego se desarrolle en pequeños pasos discretos de tiempo. El Engine se encarga de sincronizar los refrescos en pantalla y de actualizar la escena,...
tracking img