Anuncio

miércoles, 3 de octubre de 2012

El desarrollo de un juego para Android

http://unjuegoenandroid.blogspot.com.es/2011/09/que-herramientas-puedo-utilizar.html


¿Qué herramientas puedo utilizar?

          El framework de android es bastante extenso y generalmente puede resultar confuso. Lo positivo de esto es que hay una API para cualquier cosa que se nos ocurra, además podemos usar una serie de SDK’s que están potenciadas para la creación de juegos.

          Lo primero que tenemos que tener en cuenta para la creación del juego es que si este va a ser 2D o 3D, conociendo esto ya recein podemos decidir que SDK es el que nos convendrá usar para que nos brinde los mejores resultados.

          Para desarrollar juegos en android existe un conjunto de herramientas y entonrnos de desarrollo que podemos utilizar para crear juegos en Andorid. Entre los mas conocidos o mas populares están:

Corona SDK: Lo que destaca de este SDK es con la facilidad y rapidez con las que se pueden empezar a crear juegos,  dentro de lo más interesante de este SDK es que tiene un motor de física muy avanzado que permite crear juegos con tan sólo escribir unas pocas líneas de código. Además nos permitirá crear aplicaciones rápidas, poderosas y multiplataforma que tienen acceso a API’s de otros frameworks que nos permitirán manipular componentes de hardware como la cámara, GPS y acelerómetro.

Entre sus características principales cuenta con:

    Integración automática con OpenGL-ES: No habrá necesidad de llamar a un sin número de clases y funciones para crear simples manipulaciones de la pantalla.

    Desarrollo Multiplataforma: Corona nos permite crear aplicaciones tanto para iOS (iPhone, iPad) como para Android.

    Rendimiento: Corona está optimizado para hacer uso de las características de hardware de aceleración, dando como resultado un alto rendimiento en juegos y aplicaciones.

    Características del dispositivo: Posee controles nativos para el acceso al dispositivo y hardware como cámara, acelerómetro, GPS, etc.

    Fácil de aprender: Corona utiliza el lenguaje de programación Lua, que es potente y fácil de aprender.

          Lo interesante de Corona SDK es que podemos utilizarlo totalmente gratis. Basta con llenar un formulario y obtendremos una versión trial que contiene todas las funcionalidades y que podemos usar por tiempo ilimitado para desarrollar nuestros videojuegos. Pero si queremos darle uso comercial, ahí es cuando tendremos que comprar la licencia Indie que cuesta $199 dólares al año y que nos permite desarrollar únicamente para iPhone o para Android y $349 al año en la versión que nos permite trabajar con ambas plataformas.


Dejo un video para que vean lo fácil que es desarrollar con este SDK.




Libgdx: Este es un framework multiplataforma de desarrollo de juegos para Windows, Linux y Android. Está escrito en Java con una mezcla de C/C++ para dar soporte y rendimiento a tareas relacionadas con el uso de la física y procesamiento de audio. De esta forma, sólo hay que preocuparse por la parte de codificar en lenguaje Java mientras el framework se encarga de empaquetar todo el código nativo de la aplicacion.

          Otra de las cosas interesantes de Libgdx es que permite escribir, probar y depurar la aplicación en el PC y utilizar el mismo código para Android. Esto se debe a que uno de los objetivos principales de este framework es brindar una arquitectura unificada para trabajar, garantizando el mismo comportamiento en todas las plataformas para las cuáles se ha creado el juego. Pero aun con esto, hay ciertas cosas que se deben tomar en cuenta cuando se está trabajando un mismo juego para PC y para Android, ya que el rendimiento puede ser muy bueno en PC y muy malo en Android.

          Dentro de las herramientas que nos brinda Libgdx son las siguientes:

    Un framework: Que nos permitirá manejar el ciclo de vida (creación, pausa, reanudación y destrucción) de nuestra aplicación.

    Un módulo de gráficos: Que nos proporciona una forma de dibujar objetos en la pantalla.

    Un módulo de audio: Para reproducir música y efectos de audio.

    Un módulo de entrada: Para recibir toda la información del usuario proveniente del mouse, teclado, pantalla táctil, acelerómetro, etc.

    Un módulo de I/O: Para leer y escribir datos como texturas, mapas o archivos de configuración.


Aca hay un video de un juego creado con este SDK.



 
AndEngine: Este SDK es que es de código abierto y que en sí, se trata de una implementación 2D de OpenGL para Android por lo que se utilizara puramente el lengaue Java, a diferencia de los motores Unity3D y Shiva3D con los que podíamos trabajar con lenguajes como C#, Python, o incluso Javascript.

          En AndEngine se usa una terminología propia, explico aquí los conceptos más básicos:

    BaseGameActivity: El BaseGameActivity es la raiz del juego, que contiene el motor y crea la vista donde se va a dibujar todo. Hay siempre exactamente un solo Engine por cada BaseGameActivity.

    Engine: El Engine es el motor interno del juego, se encarga de ir dibujando en pantalla y actualizando objetos en la escena, que contiene todo el contenido que tu juego lleva. Normalmente hay una escena por por Engine, a menos que vayas a usar un SplitScreenEngines.

    IResolutionPolicy: Una implementacion de IResolutionPolicy interface es parte del EngineOptions. Te hace abstraerte de la resolución del terminal, tú trabajas para una resolución y el AndEngine se encarga del resto.

    Camera: Un objeto Camera define el rectangulo visible actualmente de la escena actual, no tiene porqué ser la escena completa. Normalmente hay una cámara por escena. Hay subclases específicas que permiten hacer zoom y mover la cámara suavemente.

    Scene: La clase Scene es el contenedor para todos los objetos que se van a dibujar en la escena. Una escena puede tener Layers, que son capas para ordenar objetos. Hay subclases de la Scene como CameraScene/HUD/MenuScene que tienen comportamientos específicos.

    Entity: Una entidad es un objeto que puede ser dibujado, como Imagenes, rectángulos, Texto, Líneas. Una entidad tiene posición/rotación/zoom/color...

    Texture: Una textura es una imagen que se guarda en memoria. En Android, las imágenes deben ser una potencia de 2.

    ITextureSource: Una implementacion de ITextureSource-interface se encarga de cargar una imagen en una posición en la textura.

    TextureRegion: Una TextureRegion define un rectangulo en una imagen. Las TextureRegion se usan por Sprites para usar una imagen grande en la que guardamos muchas imagenes.

    PhysicsConnector: Motor de físicas integrado en el Engine.


Aca hay un video de la física de AndEngine.



Unity3D: Con este motor de videojuegos se pueden desarrollar juegos en 3D implementar física avanzada, crear escenarios rápidamente con el editor de terrenos y crear scripts en tres lenguajes de programación distintos, Python, JavaScript y C#. Aunque la versión la gratuita permite publicar los juegos para Windows y para la web, la versión para publicación en Android tiene un costo de $400 dólares.

          Por otro lado, Unity3D soporta una amplia variedad de formatos de diseños 3D como Blender, Cinema 4D, Maya y 3ds Max, por lo que los diseños se pueden importar a un escenario en Unity para luego armar un juego con gráficos de última generación. Lo mejor es que no es necesario escribir código distinto para cada plataforma, si no que una vez desarrollado el juego podemos exportarlo a Xbox360, Playstation 3, Nintendo Wii, MacOS, Windows, iPhone y obviamente juegos web que se reproducen a través de un plugin.


Y  un video de un demo desarrollado con Unity3D.

No hay comentarios:

Publicar un comentario