Diferencia entre revisiones de «Bennu (Lenguaje de Programación)»

 
 
(No se muestran 3 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
{{Definición|Nombre=Bennu|imagen=Bennu.jpg|concepto=Sencillo lenguaje de programación libre y multiplataforma (existen versiones oficiales para sistemas Windows, GNU/Linux y OpenWiz) de tipo compilado/interpretado y que está específicamente diseñado para crear y ejecutar cualquier tipo de juego 2D.}} '''Bennu''' es un entorno de desarrollo de [[Desarrollo de Videojuegos|videojuegos]] de "alto nivel" que da especial énfasis a la portabilidad del código, (proporcionando al desarrollador la posibilidad de escribir su programa una sola vez pero pudiéndolo ejecutar en múltiples plataformas sin modificar absolutamente nada), y también a la modularidad, (existiendo múltiples librerías que extienden y complementan la funcionalidad básica de Bennu: librerías de red, librerías 3D, de renderizado de textos, de acceso a bases de datos y archivos XML, etc.). Se puede decir, que con Bennu tanto los programadores noveles como los avanzados encontrarán una inestimable herramienta para lograr hacer realidad sus creaciones.  
+
{{Otros usos|este=Bennu|Bennu (desambiguación)}}
 +
{{Definición|Nombre=Bennu|imagen=Bennu.jpg|concepto=Sencillo lenguaje de programación libre y multiplataforma (existen versiones oficiales para sistemas Windows, GNU/Linux y OpenWiz) de tipo compilado/interpretado y que está específicamente diseñado para crear y ejecutar cualquier tipo de juego 2D.}}'''Bennu'''. Entorno de desarrollo de [[Desarrollo de Videojuegos|videojuegos]] de "alto nivel" que da especial énfasis a la portabilidad del código, (proporcionando al desarrollador la posibilidad de escribir su programa una sola vez pero pudiéndolo ejecutar en múltiples plataformas sin modificar absolutamente nada), y también a la modularidad, (existiendo múltiples librerías que extienden y complementan la funcionalidad básica de Bennu: librerías de red, librerías 3D, de renderizado de textos, de acceso a bases de datos y archivos XML, etc.). Se puede decir, que con Bennu tanto los programadores noveles como los avanzados encontrarán una inestimable herramienta para lograr hacer realidad sus creaciones.  
  
== Características<br> ==
+
== Características  ==
  
El lenguaje está claramente orientado al manejo de gráficos 2D; es decir, que el propio lenguaje se preocupa de dibujar los gráficos en pantalla, ahorrándole al programador el trabajo que eso supone, que es mucho. Bennu incluye de serie un motor de renderizado 2D por software que convierte la programación de juegos en una tarea fácil pero potente. En general, cualquier juego que no emplee objetos 3D real es posible realizarlo con Bennu sin necesidad de ninguna librería extra. Más concretamente, algunas de sus características principales son:<br>
+
El lenguaje está claramente orientado al manejo de gráficos 2D; es decir, que el propio lenguaje se preocupa de dibujar los gráficos en pantalla, ahorrándole al programador el trabajo que eso supone, que es mucho.  
  
<br>
+
Bennu incluye de serie un motor de renderizado 2D por software que convierte la programación de juegos en una tarea fácil pero potente. En general, cualquier juego que no emplee objetos 3D real es posible realizarlo con Bennu sin necesidad de ninguna librería extra. Más concretamente, algunas de sus características principales son:
  
• Dibujo rápido de sprites con rotado, escalado, animación y grados de transparencia.<br>• Detección de colisiones a nivel de píxel.<br>• Procesos (programación multihilo).<br>• Entrada por teclado, ratón y joystick.<br>• Modos de color de 8, 16 y 24/32 bits.<br>• Soporte del formato gráfico Png, entre otros.<br>• Soporte de los formatos de sonido Wav sin compresión y Ogg Vorbis, además de módulos de música It, Mod y Xm.<br>• Rutinas de scroll tipo "parallax".<br>• Múltiples regiones en pantalla con o sin scroll.<br>• Recorrido de caminos inteligente.<br>• Rutinas matemáticas y de ordenación.<br>• Rutinas de acceso y manipulación de directorios y ficheros.<br>• Consola de depuración.<br>• Uso de temporizadores.<br>• Comprobación de expresiones regulares y manejo de cadenas de caracteres complejas.<br>• Manejo dinámico de memoria.<br>• Soporte para Modo 7.<br>• Soporte para el cifrado de recursos mediante criptografía simétrica.<br>• Soporte de librerías externas (en [[Microsoft Windows|Windows]], *.dll; en [[GNU/Linux|GNU/Linux]], *.so). <br>• Multiplataforma: funciona de forma oficial en todos los Windows (incluido [[Windows 7|Windows 7]]), en GNU/Linux sobre chips Intel y en la consola GP2X Wiz (http://www.gp2xwiz.com). Pero es factible portar Bennu a múltiples plataformas más, como por ejemplo [[MacOSX|MacOSX]], [[PSP|PSP]], [[Xbox|Xbox]], [[Wii|Wii]] y [[PlayStation|PlayStation]], gracias a que Bennu está basado a más bajo nivel en la librería gráfica SDL (ver Apéndice A), la cual es portable a todos estas plataformas mencionadas. De hecho, existe un port no oficial de Bennu para la consola Wii, disponible en http://code.google.com/p/bennugd-wii Incluso programadores experimentados encontrarán en Bennu una herramienta útil. El lenguaje en sí soporta muchas de las características comúnmente encontradas en los lenguajes procedurales, tales como múltiples tipos de dato, punteros, tablas multidimensionales, estructuras, y las sentencias habituales de control de flujo. De hecho, Bennu se puede interpretar como un recubrimiento, una capa superior de la librería SDL, que encapsula, que oculta la dificultad intrínseca que tiene a la hora de programar con ella en C.<br>
+
• Dibujo rápido de sprites con rotado, escalado, animación y grados de transparencia.<br>• Detección de colisiones a nivel de píxel.<br>• Procesos (programación multihilo).<br>• Entrada por teclado, ratón y joystick.<br>• Modos de color de 8, 16 y 24/32 bits.<br>• Soporte del formato gráfico Png, entre otros.<br>• Soporte de los formatos de sonido Wav sin compresión y Ogg Vorbis, además de módulos de música It, Mod y Xm.<br>• Rutinas de scroll tipo "parallax".<br>• Múltiples regiones en pantalla con o sin scroll.<br>• Recorrido de caminos inteligente.<br>• Rutinas matemáticas y de ordenación.<br>• Rutinas de acceso y manipulación de directorios y ficheros.<br>• Consola de depuración.<br>• Uso de temporizadores.<br>• Comprobación de expresiones regulares y manejo de cadenas de caracteres complejas.<br>• Manejo dinámico de memoria.<br>• Soporte para Modo 7.<br>• Soporte para el cifrado de recursos mediante criptografía simétrica.<br>• Soporte de librerías externas (en [[Microsoft Windows|Windows]], *.dll; en [[GNU/Linux|GNU/Linux]], *.so). <br>• Multiplataforma: funciona de forma oficial en todos los Windows (incluido [[Windows 7|Windows 7]]), en GNU/Linux sobre chips Intel y en la consola GP2X Wiz (http://www.gp2xwiz.com). Pero es factible portar Bennu a múltiples plataformas más, como por ejemplo [[MacOSX|MacOSX]], [[PSP|PSP]], [[Xbox|Xbox]], [[Wii|Wii]] y [[PlayStation|PlayStation]], gracias a que Bennu está basado a más bajo nivel en la librería gráfica SDL (ver Apéndice A), la cual es portable a todos estas plataformas mencionadas.  
  
Los autores de Bennu creen en la filosofía de la libertad de uso del software y en la distribución del código fuente. El lenguaje Bennu, su compilador y su intérprete se distribuyen gratuitamente bajo los términos de la GNU General Public License, con lo que las fuentes están disponibles y eres libre de extenderlas o hacer tu propia versión, tal como se comenta en el Apéndice A. La distribución de Bennu bajo la licencia [[GNU GPL|GNU GPL]] implica que, si realizas cambios en Bennu, estás obligado a distribuir el código fuente que hayas cambiado junto con tu versión, sin ningún coste, y bajo la misma licencia, permitiendo su redistribución. Eso sí, esto no afecta para nada a los juegos que puedas desarrollar gracias a Bennu. Los juegos realizados con Bennu están libres de cualquier limitación y podrás ponerles la licencia que quieras, así como cualquier librería realizada por ti (si no deriva de terceros) que enlace con dichos juegos.<br>
+
De hecho, existe un port no oficial de Bennu para la consola Wii, disponible en http://code.google.com/p/bennugd-wii Incluso programadores experimentados encontrarán en Bennu una herramienta útil. El lenguaje en sí soporta muchas de las características comúnmente encontradas en los lenguajes procedurales, tales como múltiples tipos de dato, punteros, tablas multidimensionales, estructuras, y las sentencias habituales de control de flujo.  
  
== Historia<br> ==
+
De hecho, Bennu se puede interpretar como un recubrimiento, una capa superior de la librería SDL, que encapsula, que oculta la dificultad intrínseca que tiene a la hora de programar con ella en C.<br>  
  
En la década de los 90 el entonces estudiante Daniel Navarro Medrano creó como proyecto final de carrera una herramienta orientada a la creación de videojuegos de 32 bits bajo [[MS-DOS|MS-DOS]]. El nuevo lenguaje, de nombre DIV Games Studio, combinaba características de C y [[Pascal|Pascal]] con un entorno completo que permitía la creación y edición de todos los aspectos de los proyectos: programación, edición gráfica y sonora y un largo etc.<br>Fénix, inicialmente bajo el nombre DIVC y de naturaleza GNU y gratuita, apareció de la mano de José Luis Cebrián como una herramienta capaz de compilar y ejecutar esos juegos en GNU/Linux. El nombre fue cambiado en la versión 0.6 del compilador, que además introducía otras mejoras, como la aparición de un fichero intermedio entre el entorno de compilación y el entorno de ejecución. Ya no era necesario distribuir el código fuente de un juego para poder jugar a los juegos. La ventaja principal de esa práctica (similar en concepto a Java) era clara, compilar en una plataforma y ejecutar en muchas. En la versión 0.71 el proyecto quedó parado, lo que dio lugar a múltiples versiones derivadas que corregían fallos o añadían nuevas características.<br>La versión oficial de Fénix fue retomada por Slàinte en el año [[2002|2002]], viejo conocido de la comunidad DIV por ser el webmaster de una de las páginas Web más importantes para la comunidad, quien continuó el proyecto bajo el nombre de “Fénix-Proyecto 1.0” al que pronto se reincorporaría su creador y cuyo primer objetivo era limpiar el compilador de errores y estabilizarlo. Desde entonces el compilador ha sufrido numerosos cambios y mejoras, dejando de un lado la compatibilidad con el lenguaje DIV, el desarrollo del cual quedó paralizado hace tiempo en su versión 2 desde la quiebra de la empresa que lo comercializaba, Hammer Technologies. (De hecho, DIV2 sólo es compatible con Ms-Dos y Windows 95/98).<br>Tras un período de relativa inactividad en donde Fénix se había estancado en su versión 0.84/0.84a, a mediados del [[2006|2006]], Juan alias "SplinterGU" retomó con fuerza el desarrollo de nuevas versiones del compilador/intérprete, incorporándole muchas mejoras en rendimiento y velocidad, añadiendo funciones nuevas y corrigiendo bugs crónicos, y modularizando por completo todo el entorno (una demanda mucho tiempo reclamada), hasta llegar a la versión 0.92a. No obstante, ciertas desavenencias con determinados miembros de la comunidad hicieron que Juan se decidiera por abandonar el desarrollo oficial de Fénix y crear un fork (una variante independiente) a partir del código de Fénix llamado Bennu. Bennu es el nombre de un dios egipcio, cuya apariencia física es la de una garza real llevando sobre la cabeza la corona del Alto Egipto. Este dios es el de la regeneración (cómo Fénix), debido al carácter de ave migratoria que reaparece, que renace, que se renueva periódicamente.<br>A partir de [[2007|2007]], poco a poco se ha ido construyendo una nueva comunidad alrededor de este nuevo lenguaje renacido. Hoy en día el foro de Bennu (http://forum.bennugd.org) es un lugar muy activo lleno de gente que intercambia información, trucos y experiencias sobre este lenguaje y que están encantados de echar una mano. Además, la comunidad ofrece muchos otros recursos para el programador: desde a la documentación online del lenguaje, en forma de wiki (http://wiki.bennugd.org) -donde se pretende recoger la descripción de todas las funciones, variables, características sintácticas y entresijos del lenguaje- hasta diferentes proyectos, librerías y aplicaciones software que facilitan mucho el día a día a la hora de programar.<br>
+
Los autores de Bennu creen en la filosofía de la libertad de uso del software y en la distribución del código fuente. El lenguaje Bennu, su compilador y su intérprete se distribuyen gratuitamente bajo los términos de la GNU General Public License, con lo que las fuentes están disponibles y eres libre de extenderlas o hacer tu propia versión, tal como se comenta en el Apéndice A.  
  
== Carencias<br> ==
+
La distribución de Bennu bajo la licencia [[GNU GPL|GNU GPL]] implica que, si realizas cambios en Bennu, estás obligado a distribuir el código fuente que hayas cambiado junto con tu versión, sin ningún coste, y bajo la misma licencia, permitiendo su redistribución. Eso sí, esto no afecta para nada a los juegos que puedas desarrollar gracias a Bennu.
 +
 
 +
Los juegos realizados con Bennu están libres de cualquier limitación y podrás ponerles la licencia que quieras, así como cualquier librería realizada por ti (si no deriva de terceros) que enlace con dichos juegos.
 +
 
 +
== Historia  ==
 +
 
 +
En la década de los 90 el entonces estudiante Daniel Navarro Medrano creó como proyecto final de carrera una herramienta orientada a la creación de videojuegos de 32 bits bajo [[MS-DOS|MS-DOS]]. El nuevo lenguaje, de nombre DIV Games Studio, combinaba características de C y [[Pascal|Pascal]] con un entorno completo que permitía la creación y edición de todos los aspectos de los proyectos: programación, edición gráfica y sonora y un largo etc.
 +
 
 +
Fénix, inicialmente bajo el nombre DIVC y de naturaleza GNU y gratuita, apareció de la mano de José Luis Cebrián como una herramienta capaz de compilar y ejecutar esos juegos en GNU/Linux. El nombre fue cambiado en la versión 0.6 del compilador, que además introducía otras mejoras, como la aparición de un fichero intermedio entre el entorno de compilación y el entorno de ejecución.
 +
 
 +
Ya no era necesario distribuir el código fuente de un juego para poder jugar a los juegos. La ventaja principal de esa práctica (similar en concepto a Java) era clara, compilar en una plataforma y ejecutar en muchas. En la versión 0.71 el proyecto quedó parado, lo que dio lugar a múltiples versiones derivadas que corregían fallos o añadían nuevas características.
 +
 
 +
La versión oficial de Fénix fue retomada por Slàinte en el año [[2002|2002]], viejo conocido de la comunidad DIV por ser el webmaster de una de las páginas Web más importantes para la comunidad, quien continuó el proyecto bajo el nombre de “Fénix-Proyecto 1.0” al que pronto se reincorporaría su creador y cuyo primer objetivo era limpiar el compilador de errores y estabilizarlo.
 +
 
 +
Desde entonces el compilador ha sufrido numerosos cambios y mejoras, dejando de un lado la compatibilidad con el lenguaje DIV, el desarrollo del cual quedó paralizado hace tiempo en su versión 2 desde la quiebra de la empresa que lo comercializaba, Hammer Technologies. (De hecho, DIV2 sólo es compatible con Ms-Dos y Windows 95/98).
 +
 
 +
Tras un período de relativa inactividad en donde Fénix se había estancado en su versión 0.84/0.84a, a mediados del [[2006|2006]], Juan alias "SplinterGU" retomó con fuerza el desarrollo de nuevas versiones del compilador/intérprete, incorporándole muchas mejoras en rendimiento y velocidad, añadiendo funciones nuevas y corrigiendo bugs crónicos, y modularizando por completo todo el entorno (una demanda mucho tiempo reclamada), hasta llegar a la versión 0.92a.
 +
 
 +
No obstante, ciertas desavenencias con determinados miembros de la comunidad hicieron que Juan se decidiera por abandonar el desarrollo oficial de Fénix y crear un fork (una variante independiente) a partir del código de Fénix llamado Bennu. Bennu es el nombre de un dios egipcio, cuya apariencia física es la de una garza real llevando sobre la cabeza la corona del Alto Egipto. Este dios es el de la regeneración (cómo Fénix), debido al carácter de ave migratoria que reaparece, que renace, que se renueva periódicamente.
 +
 
 +
A partir de [[2007|2007]], poco a poco se ha ido construyendo una nueva comunidad alrededor de este nuevo lenguaje renacido. Hoy en día el foro de Bennu (http://forum.bennugd.org) es un lugar muy activo lleno de gente que intercambia información, trucos y experiencias sobre este lenguaje y que están encantados de echar una mano.
 +
 
 +
Además, la comunidad ofrece muchos otros recursos para el programador: desde a la documentación online del lenguaje, en forma de wiki (http://wiki.bennugd.org) -donde se pretende recoger la descripción de todas las funciones, variables, características sintácticas y entresijos del lenguaje- hasta diferentes proyectos, librerías y aplicaciones software que facilitan mucho el día a día a la hora de programar.
 +
 
 +
== Carencias  ==
  
 
Hay algunas carencias de Bennu que a primera vista podrían sorprender al recién llegado. Por ejemplo, la inexistencia de un IDE oficial propio.  
 
Hay algunas carencias de Bennu que a primera vista podrían sorprender al recién llegado. Por ejemplo, la inexistencia de un IDE oficial propio.  
  
Un IDE (Integrated Development Environment, ó “Entorno de Desarrollo Integrado”) no es más que un programa que integra en un solo entorno el editor, el intérprete, el compilador, el depurador si lo hubiera, la ayuda del lenguaje, etc.; de manera que todas las herramientas necesarias para el programador están accesibles inmediatamente dentro de ese entorno de forma coherente, cómoda y sobretodo, visual. Si no se trabaja dentro de un IDE, las diferentes herramientas –que en el caso de Bennu son de consola (es decir, ejecutables vía línea de comandos -la famosa “ventanita negra”-, y por tanto no visuales )- son para el desarrollador programas independientes, inconexos entre sí, con lo que la utilización conjunta de uno u otro es más pesada e incómoda, y no es visual).  
+
Un IDE (Integrated Development Environment, ó “Entorno de Desarrollo Integrado”) no es más que un programa que integra en un solo entorno el editor, el intérprete, el compilador, el depurador si lo hubiera, la ayuda del lenguaje, etc.; de manera que todas las herramientas necesarias para el programador están accesibles inmediatamente dentro de ese entorno de forma coherente, cómoda y sobretodo, visual.  
 +
 
 +
Si no se trabaja dentro de un IDE, las diferentes herramientas –que en el caso de Bennu son de consola (es decir, ejecutables vía línea de comandos -la famosa “ventanita negra”-, y por tanto no visuales )- son para el desarrollador programas independientes, inconexos entre sí, con lo que la utilización conjunta de uno u otro es más pesada e incómoda, y no es visual).
 +
 
 +
La razón de que no haya un IDE oficial que acompañe a las versiones oficiales del lenguaje es porque el compilador y el intérprete Bennu son programas multiplataforma, y su entorno oficial debería obligatoriamente funcionar en cualquier plataforma donde funciona Bennu.
 +
 
 +
El mejor modo de conseguir esto sería programar dicho entorno mediante el propio Bennu, pero todavía no hay ningún resultado en este aspecto. No obstante, sí que existen diversos IDEs no oficiales, que podremos disfrutar sólo en alguna plataforma concreta (sólo en Windows, sólo en GNU/Linux, etc.), los cuales serán comentados más adelante en este capítulo.
 +
 
 +
Otra carencia que puede sorprender es la inexistencia (aparente) de soporte 3D. “Aparente” porque sí que existen librerías (no oficiales) que permiten trabajar en 3D (como la Bennu3D ó la BeOgre, entre otras: ya las comentaremos en posteriores capítulos) con resultados más que satisfactorios. No obstante, Bennu ha sido diseñado de entrada para realizar juegos 2D y un motor 3D es un cambio fundamental que implica cambiar prácticamente todo el intérprete.  
  
<br>La razón de que no haya un IDE oficial que acompañe a las versiones oficiales del lenguaje es porque el compilador y el intérprete Bennu son programas multiplataforma, y su entorno oficial debería obligatoriamente funcionar en cualquier plataforma donde funciona Bennu. El mejor modo de conseguir esto sería programar dicho entorno mediante el propio Bennu, pero todavía no hay ningún resultado en este aspecto. No obstante, sí que existen diversos IDEs no oficiales, que podremos disfrutar sólo en alguna plataforma concreta (sólo en Windows, sólo en GNU/Linux, etc.), los cuales serán comentados más adelante en este capítulo.<br>Otra carencia que puede sorprender es la inexistencia (aparente) de soporte 3D. “Aparente” porque sí que existen librerías (no oficiales) que permiten trabajar en 3D (como la Bennu3D ó la BeOgre, entre otras: ya las comentaremos en posteriores capítulos) con resultados más que satisfactorios. No obstante, Bennu ha sido diseñado de entrada para realizar juegos 2D y un motor 3D es un cambio fundamental que implica cambiar prácticamente todo el intérprete.<br>Otra carencia es la (aparente, otra vez) inexistencia de rutinas de red, para juegos on-line. “Aparente” porque sí que existen librerías (no oficiales) que permiten trabajar en red (como la Fsock ó la Net derivada de la SDL_net, entre otras: ya las comentaremos en posteriores capítulos). Sin embargo, este tipo de librerías requerirán que el programador haga la mayor parte del trabajo enviando y recibiendo paquetes de red, y controlando por su cuenta paquetes perdidos o recibidos fuera de secuencia y demás problemas habituales. Programar un juego en red es un arte complejo.<br>
+
Otra carencia es la (aparente, otra vez) inexistencia de rutinas de red, para juegos on-line. “Aparente” porque sí que existen librerías (no oficiales) que permiten trabajar en red (como la Fsock ó la Net derivada de la SDL_net, entre otras: ya las comentaremos en posteriores capítulos).  
  
== Interesantes Proyectos de la Comunidad<br>  ==
+
Sin embargo, este tipo de librerías requerirán que el programador haga la mayor parte del trabajo enviando y recibiendo paquetes de red, y controlando por su cuenta paquetes perdidos o recibidos fuera de secuencia y demás problemas habituales. Programar un juego en red es un arte complejo.
  
Últimamente han aparecido unos interesantes proyectos desde la comunidad de BennuGD.<br>El primero de ellos es Bennu.NET, por Folken, y su primer juego: "Xibalba: the begining an end of everything...".<br>Bennu.NET es una capa de abstracción sobre BennuGD que permite la comunicación con la plataforma .NET de Microsoft (y, posiblemente, Mono también) y ejecutar juegos en un navegador web.<br>Bennu.NET permite que juegos creados con BennuGD (incluidos aquellos hechos con librerías no oficiales, 3D incluidas) comunicarse con servidores SQL y pueden ser jugados en tu navegador web, traduciendo la información introducida por el usuario al estándar [[HTML|HTML]] y, en general te ofrece la potencia de .NET en BennuGD.<br>
+
== Interesantes Proyectos de la Comunidad  ==
  
== Fuente<br> ==
+
Últimamente han aparecido unos interesantes proyectos desde la comunidad de BennuGD. El primero de ellos es Bennu.NET, por Folken, y su primer juego: "Xibalba: the begining an end of everything...".<br>Bennu.NET es una capa de abstracción sobre BennuGD que permite la comunicación con la plataforma .NET de Microsoft (y, posiblemente, Mono también) y ejecutar juegos en un navegador web.
  
http://www.bennugd.org <br>
+
r&gt;Bennu.NET permite que juegos creados con BennuGD (incluidos aquellos hechos con librerías no oficiales, 3D incluidas) comunicarse con servidores SQL y pueden ser jugados en tu navegador web, traduciendo la información introducida por el usuario al estándar [[HTML|HTML]] y, en general te ofrece la potencia de .NET en BennuGD.  
  
 +
== Fuente  ==
  
 +
*[http://www.bennugd.org  bennugd.org]
  
[[Category:Ciencias_informáticas]][[Category:Software]]
+
[[Category:Software]][[Category:Programación]]

última versión al 12:37 5 ago 2011

Este artículo trata sobre Bennu. Para otros usos de este término, véase Bennu (desambiguación).
Bennu (Lenguaje de Programación)
Información sobre la plantilla
Bennu.jpg
Concepto:Sencillo lenguaje de programación libre y multiplataforma (existen versiones oficiales para sistemas Windows, GNU/Linux y OpenWiz) de tipo compilado/interpretado y que está específicamente diseñado para crear y ejecutar cualquier tipo de juego 2D.

Bennu. Entorno de desarrollo de videojuegos de "alto nivel" que da especial énfasis a la portabilidad del código, (proporcionando al desarrollador la posibilidad de escribir su programa una sola vez pero pudiéndolo ejecutar en múltiples plataformas sin modificar absolutamente nada), y también a la modularidad, (existiendo múltiples librerías que extienden y complementan la funcionalidad básica de Bennu: librerías de red, librerías 3D, de renderizado de textos, de acceso a bases de datos y archivos XML, etc.). Se puede decir, que con Bennu tanto los programadores noveles como los avanzados encontrarán una inestimable herramienta para lograr hacer realidad sus creaciones.

Características

El lenguaje está claramente orientado al manejo de gráficos 2D; es decir, que el propio lenguaje se preocupa de dibujar los gráficos en pantalla, ahorrándole al programador el trabajo que eso supone, que es mucho.

Bennu incluye de serie un motor de renderizado 2D por software que convierte la programación de juegos en una tarea fácil pero potente. En general, cualquier juego que no emplee objetos 3D real es posible realizarlo con Bennu sin necesidad de ninguna librería extra. Más concretamente, algunas de sus características principales son:

• Dibujo rápido de sprites con rotado, escalado, animación y grados de transparencia.
• Detección de colisiones a nivel de píxel.
• Procesos (programación multihilo).
• Entrada por teclado, ratón y joystick.
• Modos de color de 8, 16 y 24/32 bits.
• Soporte del formato gráfico Png, entre otros.
• Soporte de los formatos de sonido Wav sin compresión y Ogg Vorbis, además de módulos de música It, Mod y Xm.
• Rutinas de scroll tipo "parallax".
• Múltiples regiones en pantalla con o sin scroll.
• Recorrido de caminos inteligente.
• Rutinas matemáticas y de ordenación.
• Rutinas de acceso y manipulación de directorios y ficheros.
• Consola de depuración.
• Uso de temporizadores.
• Comprobación de expresiones regulares y manejo de cadenas de caracteres complejas.
• Manejo dinámico de memoria.
• Soporte para Modo 7.
• Soporte para el cifrado de recursos mediante criptografía simétrica.
• Soporte de librerías externas (en Windows, *.dll; en GNU/Linux, *.so).
• Multiplataforma: funciona de forma oficial en todos los Windows (incluido Windows 7), en GNU/Linux sobre chips Intel y en la consola GP2X Wiz (http://www.gp2xwiz.com). Pero es factible portar Bennu a múltiples plataformas más, como por ejemplo MacOSX, PSP, Xbox, Wii y PlayStation, gracias a que Bennu está basado a más bajo nivel en la librería gráfica SDL (ver Apéndice A), la cual es portable a todos estas plataformas mencionadas.

De hecho, existe un port no oficial de Bennu para la consola Wii, disponible en http://code.google.com/p/bennugd-wii Incluso programadores experimentados encontrarán en Bennu una herramienta útil. El lenguaje en sí soporta muchas de las características comúnmente encontradas en los lenguajes procedurales, tales como múltiples tipos de dato, punteros, tablas multidimensionales, estructuras, y las sentencias habituales de control de flujo.

De hecho, Bennu se puede interpretar como un recubrimiento, una capa superior de la librería SDL, que encapsula, que oculta la dificultad intrínseca que tiene a la hora de programar con ella en C.

Los autores de Bennu creen en la filosofía de la libertad de uso del software y en la distribución del código fuente. El lenguaje Bennu, su compilador y su intérprete se distribuyen gratuitamente bajo los términos de la GNU General Public License, con lo que las fuentes están disponibles y eres libre de extenderlas o hacer tu propia versión, tal como se comenta en el Apéndice A.

La distribución de Bennu bajo la licencia GNU GPL implica que, si realizas cambios en Bennu, estás obligado a distribuir el código fuente que hayas cambiado junto con tu versión, sin ningún coste, y bajo la misma licencia, permitiendo su redistribución. Eso sí, esto no afecta para nada a los juegos que puedas desarrollar gracias a Bennu.

Los juegos realizados con Bennu están libres de cualquier limitación y podrás ponerles la licencia que quieras, así como cualquier librería realizada por ti (si no deriva de terceros) que enlace con dichos juegos.

Historia

En la década de los 90 el entonces estudiante Daniel Navarro Medrano creó como proyecto final de carrera una herramienta orientada a la creación de videojuegos de 32 bits bajo MS-DOS. El nuevo lenguaje, de nombre DIV Games Studio, combinaba características de C y Pascal con un entorno completo que permitía la creación y edición de todos los aspectos de los proyectos: programación, edición gráfica y sonora y un largo etc.

Fénix, inicialmente bajo el nombre DIVC y de naturaleza GNU y gratuita, apareció de la mano de José Luis Cebrián como una herramienta capaz de compilar y ejecutar esos juegos en GNU/Linux. El nombre fue cambiado en la versión 0.6 del compilador, que además introducía otras mejoras, como la aparición de un fichero intermedio entre el entorno de compilación y el entorno de ejecución.

Ya no era necesario distribuir el código fuente de un juego para poder jugar a los juegos. La ventaja principal de esa práctica (similar en concepto a Java) era clara, compilar en una plataforma y ejecutar en muchas. En la versión 0.71 el proyecto quedó parado, lo que dio lugar a múltiples versiones derivadas que corregían fallos o añadían nuevas características.

La versión oficial de Fénix fue retomada por Slàinte en el año 2002, viejo conocido de la comunidad DIV por ser el webmaster de una de las páginas Web más importantes para la comunidad, quien continuó el proyecto bajo el nombre de “Fénix-Proyecto 1.0” al que pronto se reincorporaría su creador y cuyo primer objetivo era limpiar el compilador de errores y estabilizarlo.

Desde entonces el compilador ha sufrido numerosos cambios y mejoras, dejando de un lado la compatibilidad con el lenguaje DIV, el desarrollo del cual quedó paralizado hace tiempo en su versión 2 desde la quiebra de la empresa que lo comercializaba, Hammer Technologies. (De hecho, DIV2 sólo es compatible con Ms-Dos y Windows 95/98).

Tras un período de relativa inactividad en donde Fénix se había estancado en su versión 0.84/0.84a, a mediados del 2006, Juan alias "SplinterGU" retomó con fuerza el desarrollo de nuevas versiones del compilador/intérprete, incorporándole muchas mejoras en rendimiento y velocidad, añadiendo funciones nuevas y corrigiendo bugs crónicos, y modularizando por completo todo el entorno (una demanda mucho tiempo reclamada), hasta llegar a la versión 0.92a.

No obstante, ciertas desavenencias con determinados miembros de la comunidad hicieron que Juan se decidiera por abandonar el desarrollo oficial de Fénix y crear un fork (una variante independiente) a partir del código de Fénix llamado Bennu. Bennu es el nombre de un dios egipcio, cuya apariencia física es la de una garza real llevando sobre la cabeza la corona del Alto Egipto. Este dios es el de la regeneración (cómo Fénix), debido al carácter de ave migratoria que reaparece, que renace, que se renueva periódicamente.

A partir de 2007, poco a poco se ha ido construyendo una nueva comunidad alrededor de este nuevo lenguaje renacido. Hoy en día el foro de Bennu (http://forum.bennugd.org) es un lugar muy activo lleno de gente que intercambia información, trucos y experiencias sobre este lenguaje y que están encantados de echar una mano.

Además, la comunidad ofrece muchos otros recursos para el programador: desde a la documentación online del lenguaje, en forma de wiki (http://wiki.bennugd.org) -donde se pretende recoger la descripción de todas las funciones, variables, características sintácticas y entresijos del lenguaje- hasta diferentes proyectos, librerías y aplicaciones software que facilitan mucho el día a día a la hora de programar.

Carencias

Hay algunas carencias de Bennu que a primera vista podrían sorprender al recién llegado. Por ejemplo, la inexistencia de un IDE oficial propio.

Un IDE (Integrated Development Environment, ó “Entorno de Desarrollo Integrado”) no es más que un programa que integra en un solo entorno el editor, el intérprete, el compilador, el depurador si lo hubiera, la ayuda del lenguaje, etc.; de manera que todas las herramientas necesarias para el programador están accesibles inmediatamente dentro de ese entorno de forma coherente, cómoda y sobretodo, visual.

Si no se trabaja dentro de un IDE, las diferentes herramientas –que en el caso de Bennu son de consola (es decir, ejecutables vía línea de comandos -la famosa “ventanita negra”-, y por tanto no visuales )- son para el desarrollador programas independientes, inconexos entre sí, con lo que la utilización conjunta de uno u otro es más pesada e incómoda, y no es visual).

La razón de que no haya un IDE oficial que acompañe a las versiones oficiales del lenguaje es porque el compilador y el intérprete Bennu son programas multiplataforma, y su entorno oficial debería obligatoriamente funcionar en cualquier plataforma donde funciona Bennu.

El mejor modo de conseguir esto sería programar dicho entorno mediante el propio Bennu, pero todavía no hay ningún resultado en este aspecto. No obstante, sí que existen diversos IDEs no oficiales, que podremos disfrutar sólo en alguna plataforma concreta (sólo en Windows, sólo en GNU/Linux, etc.), los cuales serán comentados más adelante en este capítulo.

Otra carencia que puede sorprender es la inexistencia (aparente) de soporte 3D. “Aparente” porque sí que existen librerías (no oficiales) que permiten trabajar en 3D (como la Bennu3D ó la BeOgre, entre otras: ya las comentaremos en posteriores capítulos) con resultados más que satisfactorios. No obstante, Bennu ha sido diseñado de entrada para realizar juegos 2D y un motor 3D es un cambio fundamental que implica cambiar prácticamente todo el intérprete.

Otra carencia es la (aparente, otra vez) inexistencia de rutinas de red, para juegos on-line. “Aparente” porque sí que existen librerías (no oficiales) que permiten trabajar en red (como la Fsock ó la Net derivada de la SDL_net, entre otras: ya las comentaremos en posteriores capítulos).

Sin embargo, este tipo de librerías requerirán que el programador haga la mayor parte del trabajo enviando y recibiendo paquetes de red, y controlando por su cuenta paquetes perdidos o recibidos fuera de secuencia y demás problemas habituales. Programar un juego en red es un arte complejo.

Interesantes Proyectos de la Comunidad

Últimamente han aparecido unos interesantes proyectos desde la comunidad de BennuGD. El primero de ellos es Bennu.NET, por Folken, y su primer juego: "Xibalba: the begining an end of everything...".
Bennu.NET es una capa de abstracción sobre BennuGD que permite la comunicación con la plataforma .NET de Microsoft (y, posiblemente, Mono también) y ejecutar juegos en un navegador web.

r>Bennu.NET permite que juegos creados con BennuGD (incluidos aquellos hechos con librerías no oficiales, 3D incluidas) comunicarse con servidores SQL y pueden ser jugados en tu navegador web, traduciendo la información introducida por el usuario al estándar HTML y, en general te ofrece la potencia de .NET en BennuGD.

Fuente