Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase 1
El motor AndEngine
Este obra est bajo una Licencia Creative Commons Atribucin-CompartirIgual 4.0 Internacional.
UTN FRA Desarrollo de juegos en Android http://www.lslutnfra.com
Qu es AndEngine.
Creacin de la escena.
tu-proyecto/andengine/src/main/java/org
por
andengine-descargado/src/org
tu-proyecto/andengine/src/main/AndroidManifest.xml
por
andengine-descargado/AndroidManifest.xml
800x560
800x480
1600x900
En las tres figuras se observa este efecto, cuando la relacin de especto es mayor, aparecern
barras laterales, mientras que si la relacin de aspecto es menor, aparecern barras
horizontales. Este efecto es conocido como letterbox.
Por ltimo, el constructor de EngineOptions requiere el objeto Camera creado con anterioridad.
Creacin del engine.
Tambin deberemos reescribir el metodo onCreateEngine, en el cual crearemos un objeto
Engine y lo devolveremos. Existen muchos tipos de objetos Engine que podemos crear, cada
uno con sus caracteristicas:
Engine: No posee limitaciones con respecto a la cantidad de cuadros por segundo que
se dibujarn, de modo que puede variar de un dispositivo a otro.
FixedStepEngine: La pantalla se actualiza a velocidad constante. Deberemos pasarle
la cantidad de cuadros por segundo que deseamos (comnmente 60)
LimitedFPSEngine: Nos permite asignar un lmite a la cantidad de cuadros por
segundo.
Para nuestros ejemplos, crearemos un objeto del tipo LimitedFPSEngine, pasndole un mximo
de 60 cuadros por segundo.
@Override
public Engine onCreateEngine(EngineOptions pEngineOptions) {
return new LimitedFPSEngine(pEngineOptions, 60);
}
Como se observa, al constructor le pasamos un objeto del tipo EngineOptions, el cual viene
como argumento en onCreateEngine.
Ahora sobre escribiremos otro metodo en donde deberemos crear todos los recursos
(imgenes, fuentes,etc) que utiliza nuestro juego:
@Override
public void onCreateResources(OnCreateResourcesCallback
pOnCreateResourcesCallback) {
pOnCreateResourcesCallback.onCreateResourcesFinished();
}
Por ahora nuestro juego no tiene ningn recurso, pero aqu cargaremos en memoria fuentes,
imgenes y texturas que utilizar nuestro juego. Al finalizar la carga (que por ahora no existe)
ejecutamos el mtodo onCreateResourcesFinished para notificar al motor la finalizacin de la
carga.
// Creacin de la escena
//...
Por ahora dejamos el mtodo vaco, y construiremos una clase que hereda de Scene, la cual
ser la escena de nuestro juego. La llamaremos GameScene.
public class GameScene extends Scene {
private Engine mEngine;
public GameScene(Engine mEngine)
{
this.mEngine = mEngine;
}
public void createGameScene()
{
setBackground(new Background(Color.BLUE));
}
En esta clase, recibimos en el constructor el objeto Engine y lo guardamos como un atributo,
ya que lo utilizaremos ms adelante. Por otro lado, escribimos el mtodo createGameScene en
donde crearemos la escena de nuestro juego, por el momento, solo seteamos el fondo de la
pantalla de color azul con el mtodo setBackground.
Ahora estamos en condiciones de volver a nuestra Activity, y escribir el cdigo faltante en el
mtodo onCreateScene:
private GameScene gameScene;
@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) {
gameScene = new GameScene(mEngine);
gameScene.createGameScene();
mEngine.setScene(gameScene);
pOnCreateSceneCallback.onCreateSceneFinished(gameScene);
}
Dentro del mtodo onCreateScene, creamos nuestro objeto GameScene, el cual guardamos
como un atributo de nuestra Activity, y luego llamamos al mtodo createScene de este objeto.
Cabe destacar la utilizacin del objeto mEngine el cual es un atributo de la clase de la que
heredamos y es el objeto Engine creado. A l deberemos indicarle la escena activa (en este
caso el objeto gameScene). Por ltimo, mediante la ejecucin de onCreateSceneFinished
notificamos al Engine que la escena fue creada.
UTN FRA Desarrollo de juegos en Android http://www.lslutnfra.com
myRectangle.setColor(Color.RED);
attachChild(myRectangle);
Para poder construir un Sprite, necesitamos previamente construir una textura la cual
contendr la imagen que posea el Sprite.
Crearemos la carpeta assets haciendo click derecho en app->new->Folder->Assets Folder
Colocaremos la imagen logo.png dentro de assets, previamente creando la carpeta gfx solo
para mantener los archivos ordenados dentro de assets:
logo.png
Modificaremos el constructor de GameScene para que reciba nuestra Activity como argumento:
private Engine mEngine;
private BaseGameActivity activity;
public GameScene(Engine mEngine,BaseGameActivity activity){
this.mEngine = mEngine;
this.activity=activity;
}
Ahora dentro de populateScene, creamos un objeto del tipo BuildeableBitmapTextureAtlas.
Este objeto puede ser pensado como un mapa contenedor de una o muchas texturas.En l
cargaremos todas las texturas de los sprites de nuestro juego (objetos, obstculos,etc).
Debido a sto, es importante declarar un tamao para el mapa que sea capaz de contener
todas las texturas (imgenes) de los archivos que carguemos.
En nuestro caso, el mapa posee un tamao de 70x70 pxeles. Dentro de este rea cargaremos
el archivo logo.png el cual es de 64x64 pxeles.
10
11
logoRegion,
mEngine.getVertexBufferObjectManager());
Al crear el objeto Sprite, pasamos como argumento las coordenadas dentro de la pantalla, la
regin construida anteriormente y que contiene el bitmap tomado del archivo logo.png, y un
objeto VertexBufferObjectManager obtenido desde el objeto Engine.
Al ejecutar nuestro juego, veremos adems del rectngulo, nuestro Sprite:
12