En este capítulo vamos a ver las librerías gráficas y de sonido más populares para poder realizar nuestro juego, asi como también abarcaremos un poco en el tema de motores gráficos ya que nos pueden ser muy útiles por que nos pueden simplificar un poco las funciones de las librerías y depende como este programada nos puede ofrecer ser multiplataforma, migrar el código, programar para consolas de juegos, e.t.c.
Allegro es más que una librería gráfica,ademas de gráficos tiene funciones de control del teclado,el ratón, mandos de juego, sonido,midi,incluso renderización de poligonos en goraud con zbuffer y temporizadores.
También tiene funciones matemáticas en punto fijo y coma flotante, funciones 3d, funciones para manejar ficheros, ficheros de datos comprimidos y una interfaz gráfica.
Aunque está escrita en lenguaje C, actualmente existen envolventes y bibliotecas adicionales que permiten utilizarla en otros lenguajes como Python, D, Lua y Pascal.
Además es extensible como por ejemplo allegroGL que permite usar OPENGL o jgmod para reproducir mods,xm,s3m. Es multiplataforma, se puede crear binarios para DOS,BEOS,UNIX,LINUX y QNX.
En síntesis una potente librería.
libSDL es el acrónimo de library Simple Directmedia Layer. LibSDL fue creada por Sam Lantinga y su grupo, programadores de Loki Entertaiment Software, para portar juegos a Linux principalmente. Sam Lantinga es un programador de amplia experiencia en el mundo de videojuegos lo que le ha permitido tener una visión específica de las necesidades de los creadores de videojuegos.
SDL es una librería multimedia multiplataforma, es decir, todas las aplicaciones que desarrollemos con esta librería pueden ser compiladas, sin cambiar nada en el código, en varios sistemas diferentes como Windows, Linux, BeOS... Está diseñada para proporcionar acceso de bajo nivel al audio, teclado, ratón, joystick y a los dispositivos de video 2D. Es una librería muy utilizada en diferentes tipos de aplicaciones entre ellas se encuentra software para reproducir video MPG, emuladores y un gran número juegos y adaptaciones de juegos entre plataformas. SDL soporta Linux, Windows, Windows CE, BeOS, MacOS, MacOS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX y QNX. El código de la librería nos permite trabajar en aplicaciones para AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS y OS/2 pero estos sistemas no son sosportados oficialmente.
SDL está escrita en C pero trabaja nativamente con C++. Se puede utilizar en otros muchos lenguajes ya que existen adaptaciones que permiten hacerlo. Alguno de los lenguajes en los que se puede utilizar son Ada, C#, Eiffel, ERlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objetive C, Pascal, Perl, PHP, Pije, Pliant, Python, Ruby y Smalltalk.
Es importante conocer que SDL es distribuido bajo licencia GNU LGPL en su versión 2. Esta licencia permite usar SDL libremente, en programas comerciales, siempre que utilicemos un enlace dinámico a esta librería y cumplamos todos los requisitos de dicha licencia.
¿Qué nos proporciona SDL?
Por último vamos a destacar que con SDL se pueden hacer juegos 2D y no 3D.
DirectX es una colección de API creadas y recreadas para facilitar las complejas tareas relacionadas con multimedia, especialmente programación de juegos y vídeo en la plataforma Microsoft Windows.
DirectX consta de los siguientes APIs:
* Direct3D: utilizado para el procesado y la programación de gráficos en tres dimensiones (una de las características más usadas de DirectX).
* Direct Graphics: para dibujar imágenes en dos dimensiones (planas), y para representación de imágenes en tres dimensiones.
* DirectInput: utilizado para procesar datos del teclado, mouse, joystick y otros controles para juegos.
* DirectPlay: para comunicaciones en red.
* DirectSound: para la reproducción y grabación de sonidos de ondas.
* DirectMusic: para la reproducción de pistas musicales compuestas con DirectMusic Producer.
* DirectShow: para reproducir audio y vídeo con transparencia de red.
* DirectSetup: para la instalación de componentes DirectX.
* DirectCompute: Lenguaje e instrucciones especiales para manejo de cientos o miles de hilos de procesamiento, especial para procesadores de nucleos masivos.
A pesar de ser desarrollado exclusivamente para la plataforma Windows, una implementación open source de su API se encuentra en progreso para sistemas Unix (en particular Linux) y X Window System por el proyecto WineHQ, del cual existe fork propietario, Cedega, desarrollada por la empresa de software Transgaming y orientada a la ejecución de juegos desarrollados para Windows bajo sistemas Unix.
Open Graphics Library. Conjunto de especificaciones estándar que definen una API multilenguaje y multiplataforma para escribir aplicaciones o juegos que producen gráficos en 3D. Fue desarrollada originalmente por Silicon Graphics Incorporated (SGI).
Ofrece al programador un API sencilla y estable para que pueda generar gráficos en 2D y 3D por hardware. Consiste en más de 250 funciones diferentes que pueden ser usadas para graficar complejos escenarios tridimensionales usando simples primitivas.
Es muy popular en la industria de los videojuegos y es competencia directa (en plataformas Windows) del Direct3D desarrollado por Microsoft.
OpenGL es compatible para múltiples plataformas como ser Windows, Unix (Linux, MacOS), Playstation 3, etc.
Se han programado varias bibliotecas externas que añaden características no disponibles en el propio OpenGL. Algunas de ellas son:
* GLU: Ofrece funciones de dibujo de alto nivel basadas en primitivas de OpenGL. Las funciones de GLU se reconocen fácilmente pues todas empiezan con el prefijo glu.
* GLUT: API multiplataforma que facilita una rudimentaria funcionalidad para el manejo de ventanas e interacción por medio de teclado y ratón.
* GLUI: Interfaz de usuario basada en GLUT; proporciona elementos de control tales como botones, cajas de selección y spinners. Es independiente del sistema operativo, sustentándose en GLUT para manejar los elementos dependientes del sistema.
XNA es una API desarrollada por Microsoft para el desarrollo de videojuegos para las plataformas Xbox 360 , Windows y Zune. Técnicamente es un Marco de Trabajo (Framework), basado en .NET Framework 2.0 y al igual el .NET Framework 2.0, éste corre sobre el CLR, aunque en una implementación que provee un manejo optimizado para la ejecución de videojuegos.
(Capas de XNA) - Las diferentes capas de XNA, vistas de arriba a abajo, el XNA game studio utiliza la funcionalidad del xna framework, y éste a su vez se basa en el .net framework. Por último están las plataformas a las que van destinadas nuestras aplicaciones, windows, Xbox 360 o zune.
En otras palabras, XNA es una plataforma de desarrollo de videojuegos sobre DirectX, en la cual disponemos de cierta funcionalidad ya integrada lo que nos permite centrarnos en la parte de qué queremos hacer en nuestro juego y no en el cómo hacerlo.
Framework de XNA - Los recuadros verdes se corresponde con la funcionalidad que ya viene de "serie" con el framework.
OGRE 3D (acrónimo del inglés Object-Oriented Graphics Rendering Engine) es un motor de renderizado 3D orientado a escenas, escrito en el lenguaje de programación C++.
Sus bibliotecas evitan la dificultad de la utilización de capas inferiores de librerías gráficas como OpenGL y Direct3D, y además, proveen una interfaz basada en objetos del mundo y otras clases de alto nivel.
El motor es software libre, licenciado bajo LGPL y con una comunidad muy activa. Incluso ha sido utilizado en algunos videojuegos comerciales, como por ejemplo Ankh y Earth Eternal.
Crystal Space es un framework para el desarrollo de aplicaciones 3D escrito en C++ por Jorrit Tyberghein. Fue fundado el 26 de agosto del 1997. Crystal Space se usa típicamente como motor de juego pero el framework es más general y puede ser usado para cualquier tipo de visualización 3D. Crystal Space es muy portable y se ejecuta en Microsoft Windows, Linux, UNIX, y Mac OS X. Crystal Space es software de código abierto, licenciado bajo LGPL.
Puede usar opcionalmente OpenGL (en todas las plataformas), SDL (en todas las plataformas), X11 (Unix o GNU/Linux) y SVGALib (GNU/Linux). También puede usar rutinas de ensamblador usando NASM y MMX.
Bueno para el próximo capítulo voy a explicar un poco por que la industria argentina esta comenzando a destacarse en el mundo de los videojuegos. ¿Porqué ahora y no antes?
Leer entrada
Allegro es más que una librería gráfica,ademas de gráficos tiene funciones de control del teclado,el ratón, mandos de juego, sonido,midi,incluso renderización de poligonos en goraud con zbuffer y temporizadores.
También tiene funciones matemáticas en punto fijo y coma flotante, funciones 3d, funciones para manejar ficheros, ficheros de datos comprimidos y una interfaz gráfica.
Aunque está escrita en lenguaje C, actualmente existen envolventes y bibliotecas adicionales que permiten utilizarla en otros lenguajes como Python, D, Lua y Pascal.
Además es extensible como por ejemplo allegroGL que permite usar OPENGL o jgmod para reproducir mods,xm,s3m. Es multiplataforma, se puede crear binarios para DOS,BEOS,UNIX,LINUX y QNX.
En síntesis una potente librería.
libSDL es el acrónimo de library Simple Directmedia Layer. LibSDL fue creada por Sam Lantinga y su grupo, programadores de Loki Entertaiment Software, para portar juegos a Linux principalmente. Sam Lantinga es un programador de amplia experiencia en el mundo de videojuegos lo que le ha permitido tener una visión específica de las necesidades de los creadores de videojuegos.
SDL es una librería multimedia multiplataforma, es decir, todas las aplicaciones que desarrollemos con esta librería pueden ser compiladas, sin cambiar nada en el código, en varios sistemas diferentes como Windows, Linux, BeOS... Está diseñada para proporcionar acceso de bajo nivel al audio, teclado, ratón, joystick y a los dispositivos de video 2D. Es una librería muy utilizada en diferentes tipos de aplicaciones entre ellas se encuentra software para reproducir video MPG, emuladores y un gran número juegos y adaptaciones de juegos entre plataformas. SDL soporta Linux, Windows, Windows CE, BeOS, MacOS, MacOS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX y QNX. El código de la librería nos permite trabajar en aplicaciones para AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS y OS/2 pero estos sistemas no son sosportados oficialmente.
SDL está escrita en C pero trabaja nativamente con C++. Se puede utilizar en otros muchos lenguajes ya que existen adaptaciones que permiten hacerlo. Alguno de los lenguajes en los que se puede utilizar son Ada, C#, Eiffel, ERlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objetive C, Pascal, Perl, PHP, Pije, Pliant, Python, Ruby y Smalltalk.
Es importante conocer que SDL es distribuido bajo licencia GNU LGPL en su versión 2. Esta licencia permite usar SDL libremente, en programas comerciales, siempre que utilicemos un enlace dinámico a esta librería y cumplamos todos los requisitos de dicha licencia.
¿Qué nos proporciona SDL?
Por último vamos a destacar que con SDL se pueden hacer juegos 2D y no 3D.
DirectX es una colección de API creadas y recreadas para facilitar las complejas tareas relacionadas con multimedia, especialmente programación de juegos y vídeo en la plataforma Microsoft Windows.
DirectX consta de los siguientes APIs:
* Direct3D: utilizado para el procesado y la programación de gráficos en tres dimensiones (una de las características más usadas de DirectX).
* Direct Graphics: para dibujar imágenes en dos dimensiones (planas), y para representación de imágenes en tres dimensiones.
* DirectInput: utilizado para procesar datos del teclado, mouse, joystick y otros controles para juegos.
* DirectPlay: para comunicaciones en red.
* DirectSound: para la reproducción y grabación de sonidos de ondas.
* DirectMusic: para la reproducción de pistas musicales compuestas con DirectMusic Producer.
* DirectShow: para reproducir audio y vídeo con transparencia de red.
* DirectSetup: para la instalación de componentes DirectX.
* DirectCompute: Lenguaje e instrucciones especiales para manejo de cientos o miles de hilos de procesamiento, especial para procesadores de nucleos masivos.
A pesar de ser desarrollado exclusivamente para la plataforma Windows, una implementación open source de su API se encuentra en progreso para sistemas Unix (en particular Linux) y X Window System por el proyecto WineHQ, del cual existe fork propietario, Cedega, desarrollada por la empresa de software Transgaming y orientada a la ejecución de juegos desarrollados para Windows bajo sistemas Unix.
Open Graphics Library. Conjunto de especificaciones estándar que definen una API multilenguaje y multiplataforma para escribir aplicaciones o juegos que producen gráficos en 3D. Fue desarrollada originalmente por Silicon Graphics Incorporated (SGI).
Ofrece al programador un API sencilla y estable para que pueda generar gráficos en 2D y 3D por hardware. Consiste en más de 250 funciones diferentes que pueden ser usadas para graficar complejos escenarios tridimensionales usando simples primitivas.
Es muy popular en la industria de los videojuegos y es competencia directa (en plataformas Windows) del Direct3D desarrollado por Microsoft.
OpenGL es compatible para múltiples plataformas como ser Windows, Unix (Linux, MacOS), Playstation 3, etc.
Se han programado varias bibliotecas externas que añaden características no disponibles en el propio OpenGL. Algunas de ellas son:
* GLU: Ofrece funciones de dibujo de alto nivel basadas en primitivas de OpenGL. Las funciones de GLU se reconocen fácilmente pues todas empiezan con el prefijo glu.
* GLUT: API multiplataforma que facilita una rudimentaria funcionalidad para el manejo de ventanas e interacción por medio de teclado y ratón.
* GLUI: Interfaz de usuario basada en GLUT; proporciona elementos de control tales como botones, cajas de selección y spinners. Es independiente del sistema operativo, sustentándose en GLUT para manejar los elementos dependientes del sistema.
XNA es una API desarrollada por Microsoft para el desarrollo de videojuegos para las plataformas Xbox 360 , Windows y Zune. Técnicamente es un Marco de Trabajo (Framework), basado en .NET Framework 2.0 y al igual el .NET Framework 2.0, éste corre sobre el CLR, aunque en una implementación que provee un manejo optimizado para la ejecución de videojuegos.
(Capas de XNA) - Las diferentes capas de XNA, vistas de arriba a abajo, el XNA game studio utiliza la funcionalidad del xna framework, y éste a su vez se basa en el .net framework. Por último están las plataformas a las que van destinadas nuestras aplicaciones, windows, Xbox 360 o zune.
En otras palabras, XNA es una plataforma de desarrollo de videojuegos sobre DirectX, en la cual disponemos de cierta funcionalidad ya integrada lo que nos permite centrarnos en la parte de qué queremos hacer en nuestro juego y no en el cómo hacerlo.
Framework de XNA - Los recuadros verdes se corresponde con la funcionalidad que ya viene de "serie" con el framework.
OGRE 3D (acrónimo del inglés Object-Oriented Graphics Rendering Engine) es un motor de renderizado 3D orientado a escenas, escrito en el lenguaje de programación C++.
Sus bibliotecas evitan la dificultad de la utilización de capas inferiores de librerías gráficas como OpenGL y Direct3D, y además, proveen una interfaz basada en objetos del mundo y otras clases de alto nivel.
El motor es software libre, licenciado bajo LGPL y con una comunidad muy activa. Incluso ha sido utilizado en algunos videojuegos comerciales, como por ejemplo Ankh y Earth Eternal.
Crystal Space es un framework para el desarrollo de aplicaciones 3D escrito en C++ por Jorrit Tyberghein. Fue fundado el 26 de agosto del 1997. Crystal Space se usa típicamente como motor de juego pero el framework es más general y puede ser usado para cualquier tipo de visualización 3D. Crystal Space es muy portable y se ejecuta en Microsoft Windows, Linux, UNIX, y Mac OS X. Crystal Space es software de código abierto, licenciado bajo LGPL.
Puede usar opcionalmente OpenGL (en todas las plataformas), SDL (en todas las plataformas), X11 (Unix o GNU/Linux) y SVGALib (GNU/Linux). También puede usar rutinas de ensamblador usando NASM y MMX.
Bueno para el próximo capítulo voy a explicar un poco por que la industria argentina esta comenzando a destacarse en el mundo de los videojuegos. ¿Porqué ahora y no antes?