domingo, 11 de septiembre de 2011

APIs Gráficas

 Una API (Application Programming Interface) o Interfaz de Programación de Aplicaciones, es un conjunto de funciones que realizan tareas específicas facilitando la vida al programador. Al hablar de API grafica nos referimos a un set de funciones para inicializar por ejemplo modos gráficos, realizar copiado de datos de la memoria del computador a la tarjeta de video (blitting), etc. Existen APIs especificas para cada tipo de tarea que queramos realizar.
Actualmente las APIs Gráficas más usadas son OpenGL y DirectX.

 OpenGL (Open Graphics Library) es una API multiplataforma creada por Silicon Graphics en 1992, que maneja solo el aspecto gráfico de un sistema, dejando afuera el sonido, música, control de teclado, mouse, joysticks, gamepads, etc., los que deben ser controlados con otras APIs especializadas. Existe una biblioteca multiplataforma para el manejo de audio tridimensional llamada OpenAL (Open Audio Library).


  DirectX es una API multimedia creada por Microsoft en 1995, que consta básicamente de Direct3D para la parte gráfica, DirectSound y DirectMusic para la parte de audio, y DirecInput para el control de teclados, joysticks, etc. También incluye DirectPlay para comunicación de datos en redes.
  El uso de estas dos APIs en un comienzo puede ser un poco complicado y engorroso, especialmente DirectX. Existen algunas alternativas como Allegro o SDL, las que son multiplataforma.
SDL (Simple DirectMedia Layer) es una API gráfica para realizar operaciones de dibujado en 2D, gestionar efectos de sonido y música, y cargar imágenes.

SDL permite básicamente crear aplicaciones en 2D, pero si queremos extender estas capacidades podemos usarla en conjunto con OpenGL, ya sea para crear nuevamente aplicaciones 2D que aprovechen las características de aceleración por hardware, que todas las tarjetas de video poseen hoy en día, como para crear aplicaciones completamente en 3D.
Ya vimos las herramientas y conocimientos necesarios para comenzar en el desarrollo de videojuegos, pero no podemos dejar de mencionar que también existen los Engines o Motores de juego, que están basados en algunas de las APIs ya vistas, OpenGL o DirectX principalmente, que proveen al programador todas las funcionalidades necesarias para el desarrollo de un juego.
Básicamente un Engine esta formado por varios sistemas y subsistemas, por ejemplo un sistema gráfico para manejar objetos 2D o 3D, un sistema de control de entrada (teclado, mouse, etc.), sistema de texto, sistema de red, sistema de scripts, sistema de audio, etc. Todos los conocimientos necesarios que vimos antes ahora están aplicados en un Engine.
Existen Engines gratuitos (algunos bastante buenos y complejos) y otros comerciales, por ejemplo podemos nombrar los siguientes: Irrlicht, Ogre 3D, Crystal Space 3D, PopCap, Torque, etc.
Para comenzar a desarrollar conviene utilizar algo más sencillo (pero no por eso menos potente). Por ejemplo podríamos usar la dupla SDL/OpenGL junto a otras librerías externas para construir nuestro propio Engine.
No solo es necesario disponer de las herramientas y conocimientos que ya vimos para el desarrollo de juegos, aun hay más, pero esto ya no es tarea del programador (aunque conviene también tener estos conocimientos en forma general por lo menos) estamos hablando del Diseño Gráfico de un juego. Alguien debe ser capaz de realizar las imágenes que aparecerán, ya sea en menús, pantallas de configuración y en el juego mismo.
Los típicos conocimientos que debe tener un diseñador grafico, son el uso de alguna herramienta de retoque fotográfico como Photoshop, Paint Shop Pro o Gimp, y herramientas para modelar objetos 3D tales como 3D Studio Max, Maya, Blender, entre otros.
Y no puede quedar afuera tampoco, algun personaje que componga la música o cree y/o edite los sonidos que aparecerán en el juego. Ejemplo de este tipo de software es Adobe Audition, Acid Pro, Reason, Fruity Loops, etc

Roberto Albornoz Figueroa
http://www.blogrcaf.com



No hay comentarios:

Publicar un comentario