domingo, 13 de mayo de 2012

Desarrollando juegos android: libgdx

Desde hace unos dos meses he estado probando libgdx, lo cual se ha he hecho bastante útil a la hora de desarrollar para esta plataforma que es android, hasta el momento he hecho dos juegos completamente en esta plataforma el ultimo implementando box2d , la verdad no sé si libgdx implementa este engine de la forma optima pero hasta ahorita a mi me ha gustado el performance de este, tal vez pera más exigentes no sea optimo como algunos artículos que he  leído pero todo se trata de competencia , algunos dicen que son los mejores y otros dicen lo mismo, igualito como los candidatos de México (al memento de escribir este articulo estábamos en elecciones en México para la presidencia de la república X_X ).

Para implementar libgdx solo tienen que bajarlo desde este link es la última versión, en este zip encontraran los archivos necesarios para implementarlo, ahora se los explico las más importes:

gdx.jar - librerías básicas, estas van en cualquier proyecto de libgdx.
Gdx-backend-jogl.jar    - se usa para las aplicaciones de escritorio.
Gdx-backend-android.jar   - Para android.

Este video que está en  el google code de libgdx lo explica bastante bien:








viernes, 4 de mayo de 2012

Box2d, desarrollando juegos..

http://readthedocs.org/docs/pilas/en/latest/_images/box2d.png 

Cuando estamos desarrollando un juego lo más importante es la física de él, que tu mundo se asemeje  al real en lo mejor posible desde la gravedad de los objetos hasta la reacción de ellos con otros objetos, texturas etc. desarrollar desde cero todo esto conlleva un gran esfuerzo y tiempo, por eso existen herramientas que te ayudan a implementar todo lo anterior de una manera fácil y rápida, en este caso les hablare un  poco de BOX2D.

Box2d es un engine para física 2d, está programada en c++ pero existen diferentes ports, para los diferentes lenguajes como net o java. Muchos juegos en la actualidad lo usan, el más famoso en estos días seria "Angry Birds" toda la física involucrada desde que arrojas el pajarito hasta que pegas con los bloques es obra de Box2d. Algunos frameworks que los soportan son XNA, CORONA, Cocos2d y LIBGDX.


La implementación de box2d es muy sencilla, en java sería algo así:

World world=new World(new Vector2(0, -10), true);

Con esa línea creas el mundo, World es una clase propietaria de box2d en la que obviamente se refiere al mundo en que participaran todos los objetos, el vector que indica en la declaración se refiere a la gravedad del mundo, "X" para simular gravedad en horizontal, "Y" la gravedad en vertical.

Después de crear tu mundo simplemente tienes que agregar tus objetos, existen varios tipos de objetos: dinámicos, estáticos, bullets, kinematics. De esta forma se crearía el mas sencillo de todos que sería el estático ósea que no le afecta la gravedad de tu mundo:

 //  Se crea el cuerpo, agrando posición  y tipo.

              BodyDef bd = new BodyDef();
                bd.position.set(x, y);
                bd.type = BodyType.DynamicBody;
                ground1 = world.createBody(bd);
               
// Se crea la forma que tendrá el cuerpo en este caso un circulo.

                CircleShape shape1 = new CircleShape();
                shape1.setRadius(1f);

//    Se agregan las características del cuerpo, densidad, fricción etc.
        
                FixtureDef  fixtureDef = new FixtureDef();
                fixtureDef.shape = shape1;
                fixtureDef.density = 1.0f;
                fixtureDef.friction=3f;
                fixtureDef.filter.groupIndex=-2;
                fixtureDef.filter.categoryBits=0x0002;

                ground1.createFixture(fixtureDef);


Es algo largo crear un simple objeto, pero puedes ingeniártelas para crear una clase que te ayude a crear objetos con más rapidez. de esta forma es como se crea el mundo y un objeto por default, si agregas mas objetos y estos son dinámicos interactuaran entre ellos sin que tu tengas que programar nada, ósea que las colisiones y física en general funcionan por si solas dentro del mundo creado. Si quieren ejemplos vivos de como implementar esta gran herramienta que es box2d solo digan y los pondré, saludos.