653
CURSO DE INICIACIÓN A LA PROGRAMACIÓN DE VIDEOJUEGOS CON EL LENGUAJE BENNU v1.0 (en Windows y GNU/Linux) Oscar Torrente Artero

CURSO DE INICIACIÓN A LA PROGRAMACIÓN DE

Embed Size (px)

Citation preview

  • CURSODE INICIACIN

    A LA PROGRAMACINDE VIDEOJUEGOS

    CON EL LENGUAJE BENNU v1.0

    (en Windows y GNU/Linux)

    Oscar Torrente Artero

  • Esta obra est bajo una licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 Espaa de Creative Commons.

    Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-nc-sa/3.0/es/ o envie una carta a Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

    http://creativecommons.org/licenses/by-nc-sa/2.5/es/

  • AgradecimientosQuiero agradecer este texto a todas las personas que, gracias al empeo y las ganas que demuestran y transmiten diariamente, tiran para adelante este proyecto tan fantstico que es Bennu, y a toda la gente que participa en el foro aportando toda la ayuda que est en su mano. Gran parte de los cdigos de ejemplo presentes en esta gua han sido extraidos de all. Gracias por todo.

    A quin est dirigido este texto

    Este curso est pensado para usuarios con conocimientos medios de informtica (p. ej: que saben qu es la memoria RAM o la extensin de un archivo, que saben crear un acceso directo, que han utilizado alguna vez algn gestor de paquetes ,o que han oido hablar alguna vez de la linea de comandos...), ya sea en Windows como en cualquier distribucin GNU/Linux, pero que no hayan programado nunca, y que quieran aprender utilizando para ello el lenguaje Bennu. Por lo tanto, est pensado para gente que se quiera iniciar en el mundo de la programacin a travs de la excusa de la creacin videojuegos, objetivo ste apasionante y realmente reconfortante.Y finalmente, est pensado para gente con ilusin para ilusionar (valga la redundancia) a los dems creando mundos y experiencias mgicas y nicas.

    El objetivo de este texto es ser para el futuro programador una introduccin elemental en el fascinante mundo de la algoritmia y del desarrollo de sotware mediante un lenguaje potente y flexible como Bennu, asumiendo que el lector parte de un nivel de conocimiento escaso en lo que se refiere a los conceptos bsicos de programacin. Por tanto, la intencin de este libro es ensear a programar a aquellos que lo intentan por primera vez y facilitar la adquisicin de los procedimientos bsicos necesarios para el desempeo en esta actividad, utilizando como excusa los videojuegos y como medio el lenguaje Bennu. Por eso no se han incluido temas avanzados que sobrepasaran el objetivo inicial planteado.

    As mismo, este curso no es una referencia o compendio exhaustivo de las funciones y comandos que Bennu aporta. El lector experimentado notar que en las pginas siguientes faltarn por mencionar y explicar multitud de funciones interesantes ( en concreto, las de manejo del CD y del joystick, las funciones de encriptacin,, las de control de animaciones FLI/FLC, todas las funciones relacionadas con la manipulacin de paletas de color y todas las funciones pertenecientes a mdulos no oficiales como la Fsock la Bennu3D, etc).No se ha pretendido nunca que este texto albergara toda la informacin sobre Bennu, y slo se ha incidido en aquellos aspectos del lenguaje que han sido considerados ms relevantes, importantes o tiles en el da a da de un programador de este lenguaje.

    Cmo leer este texto

    La presente gua se ha escrito teniendo en mente varios aspectos. Se ha procurado en la medida de lo posible escribir un manual que sea autocontenido y progresivo. Es decir, que no sea necesario recurrir a fuentes de informacin externas para comprender todo lo que se explica, sino que el propio texto sea autoexplicativo en s mismo, y que toda la informacin expuesta sea mostrada de forma ordenada y graduada, sin introducir conceptos o procedimientos sin haberlos explicado con anterioridad.

    La metodologa utilizada en este texto se basa fundamentalmente en la exposicin y explicacin pormenorizada de multitud de ejemplos de cdigo cortos y concisos: se ha intentado evitar cdigos largos y complejos, que aunque interesantes y vistosos, pueden distraer y desorientar al lector al ser demasiado inabarcables.

    La estructura de los captulos es la siguiente: podemos considerar una primera parte del manual integrada por los captulos 1,2,3,4 y 5 que consiste en la exposicin progresiva de la instalacin y configuracin del entorno Bennu y de toda la sintaxis y elementos gramaticales del propio lenguaje Bennu (variables, estructuras de control, estructuras de datos,manejo de grficos, etc) a modo de un tpico manual de programacin al uso. Posteriormente, podemos considerar una segunda parte del manual, integrada por los captulos 6 y 7, que consiste en la aplicacin prctica de los conocimientos aprendidos en los captulos anteriores a tutoriales de videojuegos concretos. Seguidamente, el captulo 8 recoge una gran variedad de informacin sobre diferentes comandos del lenguaje Bennu, logrando un exhaustivo repaso de la mayora de funcionalidades del lenguaje, obteniendo con su lectura un conocimiento ya bastante avanzado de las posibilidades que depara Bennu. El captulo 9 vuelve a ser un tutorial al estilo de los captulos 6 y 7, pero incluyendo gran parte de lo explicado en el captulo 8. El captulo 10 se compone de una miscelnea de aspectos del lenguaje Bennu que bien por su complejidad o por su especificidad no se han tratado anteriormente. El captulo 11 rene un conjunto de cdigos variados (algunos ms curiosos, otros ms tiles, pero siempre cortos) como muestra de diferentes ideas que se pueden realizar con Bennu. Finalmente, se han incluido dos apndices: el primero es una introduccin a los conceptos bsicos de la programacin, especialmente recomendable para los lectores que no han programado nunca antes y ni siquiera saben lo que es un lenguaje de programacin; el segundo es una introduccin a los conceptos bsicos de multimedia (video, audio, 3D, grficos), imprescindibles de conocer para poder afrontar la programacin de un videojuego (al fin y al cabo, una aplicacin multimedia) con plenas garantas.

  • INDICE

    CAPITULO 1: PRIMER CONTACTO CON BENNU

    Qu es Bennu? Propsito y caractersticas...................................................................1Historia de Bennu...........................................................................................................2Carencias de Bennu v1.0................................................................................................3Instalacin de Bennu en Windows.................................................................................3Instalacin de Bennu en GNU/Linux.............................................................................5Instalacin de Bennu a partir del cdigo fuente (nivel avanzado).................................7Funcionamiento bsico de Bennu...................................................................................8Mi primer programa en Bennu.......................................................................................9Programas de soporte al desarrollador de Bennu..........................................................11Recursos web sobre Bennu...........................................................................................14La distribucin de tus programas..................................................................................16Stubs y otras opciones del compilador de Bennu..........................................................19Mi segundo programa en Bennu....................................................................................21

    CAPITULO 2: EMPEZANDO A PROGRAMAR CON BENNU

    Explicacin paso a paso de Mi 1r programa en BennuPrimera lnea: sobre la importacin de mdulos. Utilidad moddesc...22La lnea Process Main().......................................................................24Comentarios............................................................................................24Bloque Private/End..............................................................................25Lnea int mivar1;. Tipos de datos en Bennu........................................25Bloque Begin/End...............................................................................28Lnea mivar1=10;................................................................................28Bloque While/End...............................................................................29Orden Delete_text().Parmetros de un comando................................30Lnea mivar1=mivar1+2;.Asignaciones, igualdades e incrementos....31Orden Write()......................................................................................32Orden Frame........................................................................................33Funcionamiento global del programa......................................................34Notas finales............................................................................................36

    Explicacin paso a paso de Mi 2 programa en BennuBloque Loop/End.Sentencias Break y Continue.

    Orden Write_var().........................................................37mivar1=rand(1,10);.Valores de retorno de las funciones....................40Bloque If/Elif/Else/End. Condiciones posibles...................................42Funcionamiento global del programa......................................................44

    Otros bloques de control de flujo: Switch, For, From, RepeatBloque Switch/End...............................................................................45Bloque For/End. Parmetro de la orden Frame

    Diferencias entre Write() y Write_var().....................46Bloque Repeat/Until.............................................................................50Bloque From/End..................................................................................51

    Profundizando en la escritura de textos en pantallaMove_text(), Text_height(),Text_width() y TEXT_Z.............52

    Sntesis del captulo: algunos ejemplos ms de cdigos fuente................................55

    Gua de Estilo del programador Bennu.....................................................................60

  • CAPITULO 3: GRFICOS

    Los modos de pantalla. Orden Set_mode().................................................................64Configuracin de los frames per second (FPS). Orden Set_fps()...............................67Concepto de FPG. Editores de FPGs..............................................................................70Carga de la imagen de fondo. rdenes Load_png(), Load_fpg().

    rdenes Put_screen() y Clear_screen().............................................71Descarga de imgenes. rdenes Unload_map() y Unload_fpg(). Orden Key()..73Mapas..............................................................................................................................77Iconos.rdenes Set_icon() y Set_title(). Editores de recursos................................77Componentes de color en el modo de vdeo de 32 bits.

    rdenes Rgba() y Rgba). Orden Set_text_color().........................79Transparencias en el modo de vdeo de 32 bits...............................................................81Sobre el uso de paletas de colores en el modo de vdeo de 8 bits...................................82Trabajar con grficos generados dinmicamente en memoria........................................83Dibujar primitivas grficas............................................................................................105Crear, editar y grabar FPGs dinmicamente desde cdigo Bennu................................115

    CAPITULO 4: DATOS Y PROCESOS

    Concepto de proceso.....................................................................................................122Las variables locales predefinidas FILE,GRAPH,X e Y..............................................123Creacin de un proceso.................................................................................................124Alcance de las variables (datos globales, locales y privados).......................................128mbito de las variables.................................................................................................130Constantes.....................................................................................................................135Parmetros de un proceso.............................................................................................135Cdigo identificador de un proceso.

    La variable local predefinida. ID y la orden Get_id()........................137rboles de procesos......................................................................................................141Seales entre procesos. Orden Signal().....................................................................143Posibilidad de no acatar seales. Orden Signal_action()..........................................150Variables pblicas y sentencia Declare.....................................................................150Las rdenes Let_me_alone() y Exit()....................................................................154La orden Exists().......................................................................................................155La clusula OnExit....................................................................................................156La clusula Clone......................................................................................................158Sobre la ejecucin paralela de los procesos. La variable local predef. PRIORITY.....160El parmetro de la orden Frame....................................................................................163Concepto y creacin de una funcin.............................................................................164La sentencia #DEFINE............................................................................................... .169

    CAPITULO 5: ESTRUCTURAS DE DATOS

    Tablas.............................................................................................................................172Estructuras y tablas de estructuras.................................................................................177La orden Sizeof()........................................................................................................179Los tipos definidos por el usuario.Clusula Type.......................................................181Copia y comparacin entre 2 tablas o estructuras.Gestin bsica de memoria..............183Pasar un vector o un TDU como parmetro de un proceso/funcin...............................187Ordenar los elementos de un vector................................................................................190

  • CAPITULO 6: TUTORIALES BSICOS: EL JUEGO DEL LABERINTO Y UN PING-PONG

    Imgenes para el juego del laberinto...............................................................................199El juego del laberinto bsico. La orden Collision().....................................................199Aadir giros al movimiento del personaje La orden Advance() y ANGLE................202Incluir mltiples enemigos diferentes. La variable predefinida local SIZE....................202Aadir explosiones..........................................................................................................205ANGLE,SIZE y otras var. locales predef.:SIZE_X,SIZE_Y,ALPHA y FLAGS...........206Tutorial de un ping-pong.................................................................................................214Variante del ping-pong: el juego del Picaladrillos.......................................................225La variable local predefinida RESOLUTION.................................................................228

    CAPITULO 7: TUTORIAL PARA UN MATAMARCIANOS

    Punto de partida...............................................................................................................230Aadiendo los disparos de nuestra nave.La variable local predefinida Z........................231Aadiendo los enemigos..................................................................................................235Eliminando procesos (matando enemigos)......................................................................237Aadiendo explosiones....................................................................................................242Aadiendo energa enemiga.............................................................................................243Aadiendo energa nuestra y su correspondiente barra grfica. Uso de regiones............243Disparo mejorado y disparo ms retardado......................................................................247Aadiendo los disparos de los enemigos..........................................................................248Aadiendo los puntos. Introduccin al uso de fuentes FNT.............................................249Introduccin al uso del ratn.............................................................................................250Introduccin al uso de scrolls de fondo............................................................................251Introduccin al uso de bandas sonoras y efectos de sonido..............................................252

    CAPITULO 8: RDENES Y ESTRUCTURAS BSICAS DE BENNU

    Trabajar con la consola de depuracin. Orden Say()......................................................253Trabajar con cadenas..........................................................................................................258Trabajar con ficheros y directorios.....................................................................................266Trabajar con temporizadores..............................................................................................285Trabajar con fechas.............................................................................................................292Trabajar con las matemticas .............................................................................................293Trabajar con el ratn...........................................................................................................306Trabajar con el teclado (aceptar cadenas de caracteres).....................................................318Trabajar con ngulos y distancias.......................................................................................324Trabajar con fades y efectos de color.................................................................................346Trabajar con fuentes FNT...................................................................................................355Trabajar con regiones..........................................................................................................363Trabajar con scrolls.............................................................................................................366Trabajar con puntos de control............................................................................................386Trabajar con sonido.............................................................................................................394Trabajar con msica.............................................................................................................401Trabajar con ventanas..........................................................................................................404Trabajar con el sistema: introducir parmetros a nuestro programa via

    intrprete de comandos. rdenes GetEnv() y Exec().............................408Trabajar con caminos (o sobre cmo lograr que los procesos realicen

    trayectorias inteligentes.................................................................................414Trabajar con el Modo7.........................................................................................................420

  • CAPITULO 9:TUTORIAL PARA UN RPG ELEMENTAL

    La pantalla de inicio.............................................................................................................426Creando el mundo y nuestro protagonista movindose en l..............................................430El mapa de durezas..............................................................................................................432Entrar y salir de la casa........................................................................................................436Conversaciones entre personajes.........................................................................................440Entrar y salir de la segunda casa..........................................................................................446La pantalla del inventario....................................................................................................448Guardar partidas en el disco duro y cargarlas posteriormente.............................................455Aadiendo enemigos, medida de vida y GameOver............................................................458Concepto y utilidad de los tiles.........................................................................................461Includes................................................................................................................................462

    CAPITULO 10:RDENES Y ESTRUCTURAS AVANZADAS DE BENNU

    Operadores avanzados del lenguaje: el operador ? y los operadores bitwise...................465Configuracin de la orientacin de un grfico de un proceso mediante XGRAPH.............468La estructura local predefinida RESERVED........................................................................471Configuracin del escalado con SCALE_MODE y SCALE_RESOLUTION.

    Orden Get_modes() ...................................................................................472Las variables globales predefinidas DUMP_TYPE y RESTORE_TYPE............................475Trabajar de forma bsica con punteros y con gestin dinmica de memoria.......................476Trabajar con tablas blendop..............................................................................................487Trabajar con tiles..................................................................................................................500Conceptos de fsica newtoniana............................................................................................515Uso de mdulos no oficiales.................................................................................................522Programacin (en lenguaje C) de mdulos para Bennu........................................................523Utilizar Bennu como lenguaje de script embebido en cdigo C...........................................532Y ahora qu?. Recursos para seguir aprendiendo................................................................535

    CAPITULO 11: CODIGOS Y TRUCOS VARIADOS

    Creacin de combos de teclas................................................................................................537Cmo redefinir el teclado ......................................................................................................539Cmo hacer que nuestro videojuego (programado en PC) pueda ejecutarse

    en la consola Wiz usando sus mandos.............................................................541Cmo desarrollar un formato propio de imagen, de uso exclusivo en nuestros programas...544Cmo cargar imgenes en formato BMP...............................................................................547Cmo grabar partidas y reproducirlas posteriormente...........................................................548Cmo controlar muchos individuos........................................................................................552Cmo crear mens de opciones..............................................................................................554Tutorial para dar los primeros pasos en el desarrollo de un juego de plataformas.................559Cdigos gestores de FPGs......................................................................................................574Cdigos de un picaladrillos, un ping-pong y un matamarcianos

    sin usar ninguna imagen externa......................................................................576Cdigo para crear explosiones un poco ms espectaculares...................................................584Cdigo para efecto de cada de objetos...................................................................................585Cdigo que simula la cada de nieve.......................................................................................586Cdigos que ondulan una imagen...........................................................................................587Cdigo que provoca temblores en una imagen.......................................................................589Realizacin de diferentes transiciones entre imgenes...........................................................590Simulacin de la escritura de una antigua mquina de escribir..............................................595El juego del disparaletras.....................................................................................................596El juego de disparar a la lata bailarina....................................................................................600El juego de las lonas rebota-pelotas....................................................................................601

    EPILOGO.................................................................................................................605

  • APNDICE A: CONCEPTOS BSICOS DE PROGRAMACIN

    Qu es programar?................................................................................................................606Los lenguajes de programacin..............................................................................................606Editores, intrpretes y compiladores......................................................................................608Las libreras............................................................................................................................609Las libreras grficas: Allegro, SDL, OpenGL, DirectX........................................................610Otras libreras tiles para programar videojuegos en C/C++.................................................613Lenguajes de programacin de videojuegos..........................................................................618Algunos recursos web ms sobre programacin de videojuegos..........................................620Sobre el software libre............................................................................................................621

    APNDICE B: CONCEPTOS BSICOS DE MULTIMEDIA

    Grficos (2D).........................................................................................................................6233D..........................................................................................................................................627Vdeo.....................................................................................................................................630Sonido...................................................................................................................................633Algunos programas tiles y recursos multimedia.................................................................637

  • CAPITULO 1

    Primer contacto con Bennu

    *Qu es Bennu? Propsito y caractersticas

    Bennu es un sencillo lenguaje de programacin libre y multiplataforma (existen versiones oficiales para sistemas Windows, GNU/Linux y OpenWiz) de tipo compilado/interpretado y que est especficamente diseado para crear y ejecutar cualquier tipo de juego 2D. Tal como dice su pgina web oficial: http://www.bennugd.org , Bennu es un entorno de desarrollo de videojuegos de "alto nivel" que da especial nfasis a la portabilidad del cdigo, (proporcionando al desarrollador la posibilidad de escribir su programa una sola vez pero pudindolo ejecutar en mltiples plataformas sin modificar absolutamente nada), y tambin a la modularidad, (existiendo mltiples libreras que extienden y complementan la funcionalidad bsica de Bennu: libreras de red, libreras 3D, de renderizado de textos, de acceso a bases de datos y archivos XML, etc). Podemos decir, pues, que con Bennu tanto los programadores noveles como los avanzados encontrarn una inestimable herramienta para sus lograr hacer realidad sus creaciones.

    El lenguaje est claramente orientado al manejo de grficos 2D; es decir, que el propio lenguaje se preocupa de dibujar los grficos en pantalla, ahorrndole al programador el trabajo que eso supone, que es mucho. Bennu incluye de serie un motor de renderizado 2D por software que convierte la programacin de juegos en una tarea fcil pero potente. En general, cualquier juego que no emplee objetos 3D real es posible realizarlo con Bennu sin necesidad de ninguna librera extra. Ms concretamente, algunas de sus caractersticas principales son:

    *Dibujo rpido de sprites con rotado, escalado, animacin y grados de transparencia. *Deteccin de colisiones a nivel de pxel *Procesos (programacin multihilo)*Entrada por teclado, ratn y joystick *Modos de color de 8, 16 y 24/32 bits*Soporte del formato grfico Png, entre otros.*Soporte de los formatos de sonido Wav sin compresin y Ogg Vorbis,adems de mdulos de msica It,Mod y Xm*Rutinas de scroll tipo "parallax" *Mltiples regiones en pantalla con o sin scroll *Recorrido de caminos inteligente*Rutinas matemticas y de ordenacin*Rutinas de acceso y manipulacin de directorios y ficheros*Consola de depuracin*Uso de temporizadores*Comprobacin de expresiones regulares y manejo de cadenas de caracteres complejas*Manejo dinmico de memoria*Soporte para Modo 7*Soporte para el cifrado de recursos mediante criptografa simtrica*Soporte de libreras 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 mltiples plataformas ms, como por ejemplo MacOSX, PSP, Xbox, Wii y PlayStation, gracias a que Bennu est basado a ms bajo nivel en la librera grfica SDL (ver Apndice 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 encontrarn en Bennu una herramienta til. El lenguaje en s soporta muchas de las caractersticas comnmente encontradas en los lenguajes procedurales, tales como mltiples 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 librera SDL, que encapsula, que oculta la dificultad intrnseca que tiene a la hora de programar con ella en C.

    1

    http://www.bennugd.org/http://code.google.com/p/bennugd-wiihttp://www.openwiz.org/

  • Los autores de Bennu creen en la filosofa de la libertad de uso del software y en la distribucin del cdigo fuente. El lenguaje Bennu, su compilador y su intrprete se distribuyen gratuitamente bajo los trminos de la GNU General Public License, con lo que las fuentes estn disponibles y eres libre de extenderlas o hacer tu propia versin, tal como se comenta en el Apndice A. La distribucin de Bennu bajo la licencia GNU GPL implica que, si realizas cambios en Bennu, ests obligado a distribuir el cdigo fuente que hayas cambiado junto con tu versin, sin ningn coste, y bajo la misma licencia, permitiendo su redistribucin. Eso s, esto no afecta para nada a los juegos que puedas desarrollar gracias a Bennu. los juegos realizados con Bennu estn libres de cualquier limitacin y podrs ponerles la licencia que quieras, as como cualquier librera realizada por ti (si no deriva de terceros) que enlace con dichos juegos.

    *Historia de Bennu

    En la dcada de los 90 el entonces estudiante Daniel Navarro Medrano cre como proyecto final de carrera una herramienta orientada a la creacin de videojuegos de 32 bits bajo MS-DOS. El nuevo lenguaje, de nombre DIV Games Studio, combinaba caractersticas de C y Pascal con un entorno completo que permita la creacin y edicin de todos los aspectos de los proyectos: programacin, edicin grfica y sonora y un largo etc.

    Fnix, inicialmente bajo el nombre DIVC y de naturaleza GNU y gratuita, apareci de la mano de Jose Luis Cebrin como una herramienta capaz de compilar y ejecutar esos juegos en GNU/Linux. El nombre fue cambiado en la versin 0.6 del compilador, que adems introduca otras mejoras, como la aparicin de un fichero intermedio entre el entorno de compilacin y el entorno de ejecucin. Ya no era necesario distribuir el cdigo fuente de un juego para poder jugar a los juegos. La ventaja principal de esa prctica (similar en concepto a Java) era clara, compilar en una plataforma y ejecutar en muchas. En la versin 0.71 el proyecto qued parado, lo que dio lugar a mltiples versiones derivadas que corregan fallos o aadan nuevas caractersticas.

    La versin oficial de Fnix fue retomada por Slinte en el ao 2002, viejo conocido de la comunidad DIV por ser el webmaster de una de las pginas web ms importantes para la comunidad, quien continu el proyecto bajo el nombre de Fnix-Proyecto 1.0 al que pronto se reincorporara 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 versin 2 desde la quiebra de la empresa que lo comercializaba, Hammer Technologies. (De hecho, DIV2 slo es compatible con Ms-Dos y Windows 95/98).

    Tras un periodo de relativa inactividad en donde Fnix se haba estancado en su versin 0.84/0.84a, a mediados del 2006, Juan alias "SplinterGU" retom con fuerza el desarrollo de nuevas versiones del compilador/intrprete, incorporndole muchas mejoras en rendimiento y velocidad, aadiendo funciones nuevas y corrigiendo bugs crnicos, y modularizando por completo todo el entorno (una demanda mucho tiempo reclamada), hasta llegar a la versin 0.92a. No obstante, ciertas desaveniencias con determinados miembros de la comunidad hicieron que Juan se decidiera por abandonar el desarrollo oficial de Fnix y crear un fork (una variante independiente) a partir del cdigo de Fnix llamado Bennu. Bennu es el nombre de un dios egipcio, cuya apariencia fsica es la de una garza real llevando sobre la cabeza la corona del Alto Egipto. Este dios es el de la regeneracin (cmo Fnix), debido al carcter de ave migratoria que reaparece, que renace, que se renueva peridicamente.

    A partir de 2007, poco a poco se ha ido construyendo una nueva comunidad alrededor de este nuevo lenguaje renacido. Hoy en da el foro de Bennu (http://forum.bennugd.org) es un lugar muy activo lleno de gente que intercambia informacin, trucos y experiencias sobre este lenguaje y que estn encantados de echar una mano. Adems, la comunidad ofrece muchos otros recursos para el programador: desde a la documentacin online del lenguaje, en forma de wiki (http://wiki.bennugd.org) -donde se pretende recoger la descripcin de todas las funciones, variables, caractersticas sintcticas y entresijos del lenguaje- hasta diferentes proyectos, libreras y aplicaciones software que facilitan mucho el da a da a la hora de programar, y las cuales iremos estudiando en este captulo.

    2

    http://wiki.bennugd.org/http://forum.divsite.net/

  • *Carencias de Bennu v1.0

    Hay algunas carencias de Bennu que a primera vista podran sorprender al recin llegado. Por ejemplo, la inexistencia de un IDE oficial propio.

    Un IDE (Integrated Development Environment, Entorno de Desarrollo Integrado) no es ms que un programa que integra en un solo entorno el editor, el intrprete, el compilador, el depurador si lo hubiera, la ayuda del lenguaje, etc; de manera que todas las herramientas necesarias para el programador estn accesibles inmediatamente dentro de ese entorno de forma coherente,cmoda 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 va lnea de comandos -la famosa ventanita negra-, y por tanto no visuales )- son para el desarrollador programas independientes, inconexos entre s, con lo que la utilizacin conjunta de uno u otro es ms pesada e incmoda, y no es visual).

    La razn de que no haya un IDE oficial que acompae a las versiones oficiales del lenguaje es porque el compilador y el intrprete Bennu son programas multiplataforma, y su entorno oficial debera obligatoriamente funcionar en cualquier plataforma donde funciona Bennu. El mejor modo de conseguir esto sera programar dicho entorno mediante el propio Bennu, pero todava no hay ningn resultado en este aspecto. No obstante, s que existen diversos IDEs no oficiales, que podremos disfrutar slo en alguna plataforma concreta (slo en Windows, slo en GNU/Linux, etc), los cuales sern comentados ms adelante en este captulo.

    Otra carencia que puede sorprender es la inexistencia (aparente) de soporte 3D. Aparente porque s que existen libreras (no oficiales) que permiten trabajar en 3D (como la Bennu3D la BeOgre, entre otras: ya las comentaremos en posteriores captulos) con resultados ms que satisfactorios. No obstante, Bennu ha sido diseado de entrada para realizar juegos 2D y un motor 3D es un cambio fundamental que implica cambiar prcticamente todo el intrprete.

    Otra carencia es la (aparente, otra vez) inexistencia de rutinas de red, para juegos on-line. Aparente porque s que existen libreras (no oficiales) que permiten trabajar en red (como la Fsock la Net derivada de la SDL_net, entre otras: ya las comentaremos en posteriores captulos). Sin embargo, este tipo de libreras requerirn 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 dems problemas habituales. Programar un juego en red es un arte complejo.

    *Instalacin de Bennu en Windows

    Para descargar Bennu, tendrs que ir a la seccin de Downloads de la pgina oficial: http://www.bennugd.org . All vers que tienes varias opciones a elegir, pero la que ahora nos interesa seleccionar a nosotros es, obviamente, el instalador para Windows. Como curiosidad, es interesante saber que este instalador ha sido sido programado usando el propio lenguaje Bennu, con lo que queda demostrada la capacidad y versatilidad de dicho entorno para realizar mltiples y avanzadas tareas. Bien, una vez descargado este ejecutable (que ocupa tan slo 2 MB), si lo pones en marcha vers cmo aparece una ventana que simula la apariencia de una especie de consola porttil, donde se pueden apreciar a la izquierda varios botones que realizan diferentes tareas y un panel central que lista las carpetas de nuestro disco.

    Lo que tienes que hacer para instalar Bennu es elegir la carpeta de tu disco duro donde copiars todos los archivos que lo componen. Para ello simplemente has de clicar una vez sobre la carpeta elegida (vers que se marca de color azul). Puedes asegurarte de que efectivamente Bennu se instalar bajo la carpeta que has dicho si observas el mensaje deslizante que aparece en la parte inferior de la ventana, el cual muestra precisamente la ruta de instalacin elegida. Si lo deseas,puedes moverte por el rbol de carpetas hacia adelante y hacia atrs sin ms que clicar dos veces sobre la carpeta a la que quieres entrar (recuerda, por si no lo sabas, que para volver a la carpeta anterior tendras que clicar en la carpeta especial ..). Tambin existe la posibilidad de crear una nueva carpeta all donde ests en ese momento, pulsando el botn adecuado; si quieres cambiar el nombre de esta nueva carpeta lo puedes hacer clicando con el botn derecho sobre ella (vers que queda marcada en rojo) y finalizando el cambio pulsando la tecla Enter.

    Una vez elegida la carpeta base de la instalacin de Bennu, tan slo queda pulsar en el botn de Install.

    3

    http://www.bennugd.org/

  • El proceso de instalacin de Bennu en realidad es muy sencillo. Lo nico que hace son bsicamente dos cosas: 1) copiar todos los ficheros que componen Bennu a la carpeta elegida, y 2) incluir las rutas necesarias en el PATH del sistema. Y ya est. Pero expliqumoslo ms detenidamente.

    Respecto el primer punto, suponiendo que por ejemplo la carpeta que hemos elegido para la instalacin de Bennu hayamos dicho que es C:\BennuGD, el instalador copiar all cuatro subcarpetas:

    C:\BennuGD\bin Contiene (tal como su nombre indica: bin de binario) los ejecutables que utilizar el programador: el compilador (bgdc.exe), el intrprete (bgdi.exe) -ver Apndice A- y otra utilidad de consola de la que hablaremos ms tarde: moddesc.exe.

    C:\BennuGD\modules Contiene todos los mdulos oficiales que componen el entorno Bennu y que estn a disposicin del programador. Un mdulo es una librera separada del resto que contiene cierta funcionalidad especfica muy concreta. Podemos encontrar el mdulo Bennu para el manejo del teclado, el mdulo Bennu que se encarga del dibujado de sprites, el mdulo Bennu encargado de la gestin del sonido, etc. Dicho de otra forma, los comandos del lenguaje Bennu estn organizados y separados por mdulos, de manera que un comando concreto est ubicado dentro de un mdulo concreto. Esto implica que para hacer uso de un comando particular, deberemos incluir el mdulo que lo contiene, porque de lo contrario Bennu no sabr qu significa ese comando.

    Esta manera de separar la funcionalidad de Bennu (de modularizarlo) tiene varias ventajas: -Es ms fcil solucionar errores y ampliar funcionalidad del propio Bennu si se mantiene una estructura separada y lo ms independiente posible entre los diferentes componentes, ya que as se puede localizar mejor la fuente de los posibles errores y se pueden mejorar de manera mucho ms sencilla las diferentes caractersticas pendientes. -Permite al desarrollador de Bennu elegir exactamente qu mdulos quiere incluir en su proyecto y qu mdulos no les es necesario. Con esto se consigue que los proyectos sean mucho ms ligeros y optimizados porque slo incluyen exclusivamente los mdulos que aportan los comandos que han sido utilizados en el cdigo. -Permite al desarrollador de Bennu elegir entre varios mdulos disponibles para realizar una misma accin. La estructura modular permite que, por ejemplo, si hubiera la posibilidad de elegir entre dos mdulos de gestin de sonido, al ser completamente independientes del resto de mdulos del entorno, se podra elegir el que ms conviniera sin alterar para nada el resto de mdulos a utilizar, permitiendo as una mayor libertad para incluir (o excluir) diferentes componentes a nuestro proyecto.

    C:\BennuGD\libs Los mdulos para poder funcionar correctamente necesitan de la existencia de las libreras incluidas en esta carpeta, las cuales el programador de Bennu nunca utilizar directamente nunca, pero que son imprescindibles para el entorno Bennu . Estas libreras son internas de Bennu, desarrolladas por y para Bennu. De hecho, muchos mdulos distintos comparten cdigo alojado en estas libreras, de manera que una misma rutina utilizada por varios mdulos aparece centralizada en una sola librera, de la cual stos, por lo tanto, dependen.

    C:\BennuGD\externals Tal como se comenta en el Apndice A, el propio Bennu est escrito en C ms SDL; es decir, se basa en la librera SDL, por lo que depende de ella para poder funcionar correctamente. Asimismo, tambin depende de unas pocas libreras ms (SDL_Mixer, LibPng, Zlib, LigOgg y LibVorbis, etc). Todas estas libreras externas (externas porque no han sido desarrolladas por el equipo de Bennu, son libreras de terceros de las cuales Bennu depende debido a su estructura interna) son las que aparecen en esta carpeta. Al igual que con la carpeta libs, el desarrollador de Bennu no ha de hacer nada con el contenido de esta carpeta. Esta carpeta slo se genera en la instalacin de Bennu en Windows, ya que en GNU/Linux las dependencias externas han de haber sido resueltas mediante la instalacin de los paquetes pertinentes, de forma previa e independiente a la ejecucin del instalador.

    Respecto el segundo punto, incluir una ruta en el PATH del sistema significa que se le dice al sistema operativo (Windows, en este caso) en qu carpetas se han instalado los diferentes componentes de Bennu, para que as Windows pueda encontrar sin problemas todos los ficheros que forman Bennu, sin que haya errores precisamente por no encontrar un determinado mdulo o una librera concreta. Puedes comprobar que en el PATH se incluyen las cuatro rutas de la tabla anterior si vas, por ejemplo,al componente Sistema del Panel de Control de Windows, en concreto en

    4

  • la pestaa Opciones avanzadas, botn Variables de entorno: vers en el apartado Variables del sistema una llamada Path. Si pulsas en el botn de Modificar, vers su valor actual, el cual estar compuesto por una serie de rutas (las que precisamente estn incluidas en el PATH), entre las cuales tendran que estar (si no estn, malo; habra que aadirlas) las carpetas bin, modules, libs y externals copiadas bajo la carpeta de instalacin de Bennu.

    *Instalacin de Bennu en GNU/Linux

    A diferencia del instalador de Bennu para Windows, el instalador de Bennu para GNU/Linux no incorpora de serie las libreras de las cuales depende (las externals de la tabla que comentamos en el apartado anterior), por lo que antes de proceder a cualquier instalacin de Bennu, hay que procurar tener resueltas previamente todas estas dependencias. SI NO HACEMOS ESTO, A PESAR DE QUE EL INSTALADOR FUNCIONE CORRECTAMENTE, BENNU NO FUNCIONAR.

    Concretamente, las dependencias de Bennu son las siguientes (ver Apndice A para ms informacin):

    SDL (http://www.libsdl.org) Esta librera no depende de ninguna otra explcitamente. Claro est, no obstante, que al ser una librera grfica, requerir algn sistema de dibujado en pantalla previamente configurado, tal como un servidor X (http://www.x.org, presente de serie en la inmensa mayora de sistemas PC) , en dispositivos empotrados, un servidor DirectFB mnimo (http://www.directfb.org).

    SDL_Mixer ((http://www.libsdl.org/projects/SDL_mixer) Esta librera a su vez tiene una serie de dependencias que se han de cumplir, como son las libreras LibOgg, LibVorbis y LibVorbisfile (http://www.xiph.org/downloads) para la reproducin de audio Ogg, LibSmpeg (http://www.icculus.org/smpeg) para la reproduccin de audio Mp3 (aunque Bennu no tiene soporte para este formato) y LibMikMod (http://mikmod.raphnet.net) para la reproduccin de mdulos de sonido.

    LibPng (http://www.libpng.org) Esta librera a su vez tiene una dependencia que se ha de cumplir, que es la librera Zlib (http://zlib.net) , la cual se encarga de comprimir y descomprimir datos al vuelo, y es usada por Bennu en otros mbitos tambin, fuera del tratamiento de imgenes (as que se podra considerar como otra dependencia ms independiente).

    Deberemos, pues, antes de nada, ejecutar nuestro gestor de paquetes preferido y buscar y seleccionar los paquetes anteriores. Posiblemente sus nombres puedan ser ligeramente dispares a los mostrados aqu (cada distribucin tiene su propio convenio de nomenclatura) e incluso puede que dependiendo de la distribucin la versin de algunas dependencias vare; por eso recomiendo leer la descripcin de cada paquete que muestre el gestor de instalacin antes de proceder. A pesar de esta pequea dificultad, es seguro que todas estas libreras se encuentran muy fcilmente en los repositorios oficiales de las distribuciones ms importantes, porque son libreras muy bsicas y extendidas y son utilizadas por multitud de software. En cualquier caso, para instrucciones ms detalladas sobre este tema, puedes consultar la wiki.

    En el caso, por ejemplo, de Ubuntu, en el momento de la redaccin de este manual, si quisiramos instalar las libreras anteriores por el intrprete de comandos, sera as (es preferible respetar el orden descrito).

    Para instalar la librera SDL:

    sudo aptitude install libsdl1.2debian-allPara instalar la librera SDL_Mixer (automticamente se instalarn como dependencias las libreras: libogg0,

    5

    http://zlib.net/http://www.libpng.org/http://mikmod.raphnet.net/http://www.icculus.org/smpeghttp://www.xiph.org/downloadshttp://www.libsdl.org/projects/SDL_mixer/http://www.directfb.org/http://www.x.org/http://www.libsdl.org/

  • libvorbis0a, libvorbisfile3, libsmpeg0 y libmikmod2):

    sudo aptitude install libsdl-mixer1.2Para instalar la librera Zlib:

    sudo aptitude install zlib1gPara instalar la librera LibPng:

    sudo aptitude install libpng3Una vez instaladas las dependencias necesarias, ya podemos proceder a la instalacin de Bennu

    propiamente.Para descargar Bennu, tendrs que ir a la seccin de Downloads de la pgina oficial: http://www.bennugd.org . All vers que tienes varias opciones a elegir, pero la que ahora nos interesa seleccionar a nosotros es, obviamente, el instalador para GNU/Linux. Si lo descargas e intentas por curiosidad abrir su contenido con un editor de texto plano, vers que no es ms que un Bash shell script, seguido al final por un conjunto de datos binarios que son precisamente todos los ficheros que forman Bennu comprimidos y compactados dentro del propio shell script. A diferencia del instalador de Windows, que estaba hecho en Bennu y era visual, ste no lo es: lo tendremos que ejecutar desde un intrprete de comandos. As:

    Primero hacemos que el shell script descargado tenga permisos de ejecucin, para que pueda ejecutarse, precisamente:

    chmod 755 bgd-1.0.0-linux-installer.shY seguidamente lo ejecutamos (debemos hacerlo como usuario root,as que escribimos el comando sudo al principio):

    sudo bash ./bgd-1.0.0-linux-installer.shImportante no olvidarse del ./ justo antes del nombre del shell script.

    Una vez escrita la lnea anterior, automticamente comenzar a ejecutarse el shell script, procediendo a la instalacin del entorno Bennu. Podrs comprobar que, a diferencia del instalador de Windows, no pregunta en qu carpeta se desean copiar los ficheros que componen Bennu: esto es as porque el instalador de Linux siempre copiar los ficheros a una misma carpeta predefinida, sin posibilidad de elegir.

    El mismo shell script que funciona de instalador tambin puede utilizarse para desinstalar completamente el entorno Bennu (esta opcin en Windows no existe). Simplemente hay que invocarlo pasndole el parmetro adecuado:

    sudo bash ./bgd-1.0.0-linux-installer.sh --removeLa lnea anterior borrar por completo todo rastro de instalacin anterior de Bennu (realizada por el mismo shell script).

    Si deseas saber qu es lo que hace exactamente el shell script de (des)instalacin de Bennu y conoces mnimamente los comandos bsicos de cualquier shell de GNU/Linux, puedes intentar leer el cdigo del instalador y ver cul es el proceso que ha seguido. Bsicamente, persigue los mismos objetivos que el instalador de Windows: copiar los ficheros que componen el entorno Bennu a una serie de carpetas concretas, y registrar su ubicacin en el sistema de manera que el sistema operativo sepa dnde encontrar los distintos ficheros cada vez que requiera su uso.

    Ms concretamente, el compilador (bgdc) y el intrprete (bgdi) de Bennu son copiados en la carpeta /usr/bin y las libreras y los mdulos son copiados a las carpetas /usr/lib/bgd/lib y /usr/lib/bgd/module, respectivamente, crendose en /etc/ld.so.conf.d/bgd.conf un registro de dichas libreras para que (tras ejecutar /sbin/ldconfig) el sistema las reconozca y las pueda utilizar. Remito a la tabla del apartado anterior para conocer qu funcin tienen cada uno de estos componentes dentro de Bennu (compilador, intrprete, mdulos y libreras).

    Si por alguna razn deseas obtener un simple paquete tgz que incluya todos los ficheros que componen el entorno Bennu sin ms, lo puedes obtener a partir del propio instalador, ejecutando en el terminal el siguiente comando:

    tail -n +61 bgd-1.0.0-linux-installer.sh > bennu.tgz

    6

    http://www.bennugd.org/

  • donde el nmero 61 es el valor de la variable data_start definida al principio del shell script instalador (este valor podra cambiar en futuras versiones de ste) y bennu.tgz es el paquete generado.

    *Instalacin de Bennu a partir del cdigo fuente (nivel avanzado)

    Desde la misma pgina de descargas de la web oficial de Bennu se puede conseguir el cdigo fuente ms reciente de Bennu: es el paquete tar.gz (por si no lo sabes, estos paquetes son similares a los zip o los rar) llamado, muy apropiadamente, TAR with latest source.

    Obtener el cdigo fuente nos puede interesar para dos cosas: o bien para observar el funcionamiento interno de Bennu y mejorar alguna de sus caractersticas (aspecto ste muy avanzado y que requiere altos conocimientos de lenguaje C y de la librera SDL), o bien para (sin obligacin de hacer ninguna modificacin en el cdigo) compilar Bennu a nuestro gusto y obtener nuestra copia del entorno totalmente personalizada, es decir, a la carta:con opciones (des)habilitadas bajo demanda, con (ex)inclusin de funcionalidades concretas, con optimizaciones para nuestra arquitectura hardware concreta, con instalacin en rutas no estndar, etc, lista para instalar. Para ms informacin, consulta el Apndice A.

    No obstante, hay que indicar que esta manera de proceder no debera ser la estndar: para un usuario normal y corriente, ya que los instaladores comentados en los apartados anteriores son las herramientas recomendadas para realizar una instalacin limpia, rpida y fcil: compilar Bennu para instalarlo se puede considerar sobretodo un ejercicio pedaggico avanzado para aprender sobretodo lenguaje C y las herramientas de compilacin y sistema asociadas. Slo habra un motivo realmente razonable para preferir la compilacin a la instalacin estndar, que es en el posible supuesto que se haya incorporado al cdigo fuente alguna mejora o correccin que no se haya trasladado todava al instalador oficial y que haya por tanto un desfase de versiones, pero esta circunstancia, si se llegara a producirse, sera muy puntual y espordica.

    Para poder compilar Bennu, obviamente necesitars primero de todo un compilador de C. En GNU/Linux existe un programa que es EL compilador de C por excelencia, base de muchsimos otros proyectos y referencia para los programadores de C de todo el mundo: el Gnu GCC (http://gcc.gnu.org) . Para instalarlo bastar con que lo busques en tu gestor de paquetes preferido. No obstante, esta herramienta funciona por lnea de comandos -la ventanita negra-, con lo que su uso y configuracin puede llegar a ser farragoso e incluso complicado. Para facilitar la vida a los programadores de C, existen varios IDEs para programar en C de forma cmoda. Uno de ellos es CodeBlocks (http://www.codeblocks.org) , el cual se puede descargar con Gnu GCC incorporado o sin l (si ya estaba instalado previamente), descargndose entonces slo lo que sera el IDE propiamente dicho. Otro IDE libre, algo ms pesado, sera Eclipse (http://www.eclipse.org). En Windows disponemos de un port (es decir, una versin) no oficial de GCC llamado MinGW (http://www.mingw.org), que al igual que ste, funciona por lnea de comandos. Si queremos IDEs de C para Windows, podemos volver a recurrir a CodeBlocks, ya que es multiplataforma, y podremos volver a elegir cuando lo descarguemos si deseamos slo el IDE o bien el IDE ms el compilador incorporado (que en Windows ser MinGW). Tambin podramos elegir Eclipse, ya que tambin es multiplataforma, o tambin el IDE libre Dev-Cpp (http://www.bloodshed.net) .Hay que decir tambin que Microsoft ofrece un entorno de programacin en C/C++ llamado "Visual C++Express Edition",que aunque no es libre, se puede descargar gratuitamente desde http://msdn.microsoft.com/vstudio/express/downloads/

    Las instrucciones de compilacin vienen especificadas en el archivo README presente en el interior del paquete tar.gz. Tal como se explica all, para poder compilar Bennu se necesitan tener previamente instaladas las dependencias del entorno que ya conocemos (SDL, SDL_Mixer -y las que sta arrastra: Smpeg, Ogg, etc...-, LibPng y Zlib), lo cual, en Linux es tan fcil como tirar del gestor de paquetes pero que en Windows hay que ir a las diferentes webs de las diferentes libreras y descargarse una a una su versin compilada para Win32. Adems, evidentemente, para poder compilar Bennu se deber disponer de un compilador de C, elemento que ya hemos comentado que en Linux ser el Gnu GCC y en sistemas Windows el MinGW (ms el entorno de consola MSYS para poder introducir los comandos de compilacin, ya que el intrprete de comandos estndar de Windows -el cmd.exe- no sirve). Una vez cumplidos los requisitos previos, la compilacin de Bennu se realiza de la forma clsica:

    Para generar el archivo Makefile que guardar toda la informacin sobre la arquitectura de la mquina, dependencias resueltas, etc y que servir en el paso siguiente para realizar la compilacin de la forma ms optimizada posible para nuestra mquina en concreto.

    7

    http://msdn.microsoft.com/vstudio/express/downloads/http://www.bloodshed.net/http://www.mingw.org/http://www.eclipse.org/http://www.codeblocks.org/http://gcc.gnu.org/

  • ./configureEn el paso anterior se pueden introducir mltiples parmetros para personalizar hasta el extremo la posterior compilacin (por ejemplo, con el parmetro --prefix=/ruta/instalacin (muy tpico) se puede especificar la ruta de instalacin que deseamos, diferente de la por defecto, etc, etc). Para compilar propiamente, con la informacin obtenida en el paso anterior:

    makeUna vez terminada la compilacin, podramos instalar Bennu (como usuario root) con este comando:

    sudo make install

    Por otra parte, existe otra forma diferente de bucear dentro del cdigo fuente de Bennu: consultar el repositorio SVN de Bennu en Sourceforge. Me explico. Sourceforge es un portal que ofrece espacio de almacenamiento, alojamiento web y muchos ms servicios (estadsticas, foros, historiales, etc) a multitud de proyectos libres, facilitando as a los programadores de todo el mundo la puesta en marcha de un sitio en Internet exclusivo para su software. El cdigo de Bennu se aloja en Sourceforge, y por ello, dispone de los servicios que este portal ofrece. Y uno de ellos es precisamente el repositorio SVN, el cual se encarga de almacenar todo el cdigo fuente, pero no slo eso, sino que guarda todas las versiones anteriores de todos los ficheros que se han ido modificando a lo largo del tiempo, sabiendo en todo momento quin y cundo se modific determinada lnea de determinado fichero. Con este sistema se obtiene un gran control de la evolucin de un cdigo fuente, pudiendo dar marcha atrs en cualquier momento. En la pgina oficial de Bennu, en el apartado de descargas, el enlace Repo browser nos lleva al repositorio SVN, donde podremos observar los ltimos cambios acumulados (que tal vez todava no hayan sido trasladados a los instaladores oficiales) correspondientes a los ficheros de cdigo fuente que queramos. De todas maneras, aunque mediante el navegador acabamos de ver que podemos acceder a un repositorio SVN, lo ms recomendable para acceder a l es utilizar algn cliente SVN especficamente.

    GNU/Linux ofrece multitud de clientes SVN para utilizar, pero Windows no tiene ninguno por defecto, as que tendremos que recurrir algn cliente gratuito. Uno libre (y multiplataforma, as que tambin lo podemos usar en el sistema del pingino es el TortoiseSVN (http://subversion.tigris.org ). Una vez instalado, lo nico que tendrs que hacer para acceder al cdigo fuente de Bennu es ir a al men "Admin"->"Commandline" y escribir el siguiente comando:

    svn co https://bennugd.svn.sourceforge.net/svnroot/bennugd bennugd

    *Funcionamiento bsico de Bennu

    Una vez descargado el entorno Bennu, y segn ya hemos visto, en GNU/Linux dispondremos del compilador /usr/bin/bgdc y del intrprete /usr/bin/bgdi, y en Windows dispondremos de los ejecutables correspondientes bgdc.exe y bgdi.exe copiados dentro de la carpeta elegida por nosotros en el proceso de instalacin. Ambos archivos son programas que se ejecutan en un intrprete de comandos: ejecutndolos con un doble clic de ratn no har nada, ya que necesitan unos parmetros determinados para que hagan su funcin, como luego veremos.

    Vamos a explicar un poco la razn de ser de estos dos archivos. Tal como se explica en el Apndice A, el cdigo Bennu primero se compila y posteriormente, a la hora de ejecutarlo, se interpreta. Es decir, el proceso a la hora de escribir y ejecutar un programa en Bennu es el siguiente:

    1) Escribimos el cdigo Bennu de nuestro juego con cualquier editor de texto plano (el Bloc de

    Notas en Windows o el Gedit de Gnome, el Leafpad de LXDE o similar en GNU/Linux), y guardamos ese cdigo fuente en un archivo que ha de tener la extensin .prg

    2) Seguidamente, abrimos un intrprete de comandos (en Windows, hay que ir a Inicio->Ejecutar y escribir cmd.exe -sin comillas-; en GNU/Linux existen infinidad de maneras, consulta la ayuda de tu distribucin) y con el comando cd del sistema (para Windows y para Linux) nos situamos en la carpeta

    8

    http://www.wincvs.org/

  • donde hemos grabado el archivo prg anterior. Una vez all, compilamos este archivo .prg. Esto se hace (tanto en Windows como en GNU/Linux) escribiendo en el intrprete de comandos la siguiente orden:

    bgdc nombrearchivo.prg Obtendremos como resultado un nuevo archivo, (en la misma carpeta donde estaba nuestro cdigo

    fuente),de formato binario, cuyo nombre es idntico al del fichero .prg y cuya extensin se genera automticamente y es .dcb

    3)Una vez obtenido este archivo .dcb, cada vez que queramos ejecutar nuestro juego tendremos que interpretar dicho archivo. Esto se hace teniendo abierta la lnea de comandos y situndonos otra vez en la misma carpeta donde se ha generado el archivo .dcb. Desde all podremos escribir la siguiente orden:

    bgdi nombrearchivo.dcbY ya est!, esto es todo lo que necesitas para programar en Bennu

    Nota: no es imprescindible moverse a la misma carpeta donde estn los archivos .prg y .dcb. Tambin se pueden compilar/interpretar si se introduce la ruta completa (absoluta relativa) de dichos archivos. En Windows sera por ejemplo algo as como bgdc x:\ruta\donde\esta\mi\prg\archivo.prg, donde x es la letra que sea, y en GNU/Linux algo muy similar, como bgdc /ruta/donde/esta/mi/prg/archivo.prg.

    Resumiendo: primero compilamos con bgdc los archivos con extensin .prg (donde est escrito el cdigo fuente) y luego, si queremos poner en marcha el juego, ejecutamos con bgdi el archivo con extensin .dcb obtenido de la compilacin previa.Por lo tanto, podemos concluir que el compilador de Bennu deja el programa en un especie de pseudo-cdigo (que no es cdigo maquina!) y luego el intrprete de Bennu (diferente para cada plataforma) ejecuta el programa. De hecho, por eso Bennu es multiplataforma, porque existe un intrprete diferente para tres sistemas diferentes: Windows, Linux y Wiz. Sin embargo, uno se podra preguntar que, si lo que se pretende es ser multiplataforma, por qu es necesario el compilador previo, ya que se podra interpretar directamente los cdigos fuentes y ya est. La respuesta es que hay varias razones para seguir la estructura existente: la primera es que al haber compilado el cdigo previamente, la entrada que recibe el intrprete est mucho ms optimizada y le facilita mucho su trabajo, con lo que esto redunda en la velocidad e integridad de la ejecucin de los juegos. Y otra razn es que gracias al compilador, si no te interesa ensear el cdigo fuente por ah aunque eso no es libre-, puedes repartir tu juego simplemente ofreciendo el archivo .dcb, sabiendo que seguir siendo igual de portable.

    *Mi primer programa en Bennu

    Bueno, se acab la teora. Vamos a crear ya nuestro primer programa en Bennu, realizando uno a uno los pasos detallados en el apartado anterior.

    1) Abre tu editor de texto plano preferido y escribe el siguiente cdigo (con las tabulaciones tal como estn):

    Import mod_text;

    Process Main()Private

    int mivar1;EndBegin

    mivar1=10;while(mivar1

  • Un detalle importante antes de continuar es saber que Bennu es lo que se llama un lenguaje case-insensitive; es decir, que es igual que escribas todas las palabras del cdigo en maysculas o minsculas, o alternndolas si quieres: es lo mismo escribir while que While que whILe que wHiLe... Esto, que parece una tontera, en algunos lenguajes como C o Java no es as y hay que ir con cuidado con ellos. Pero Bennu no tiene ese problema.

    2) Guarda el texto que has escrito en un archivo con extensin .prg, en la carpeta que quieras. Ahora abre la lnea de comandos de Windows. Acurdate del comando cd para moverte a la carpeta donde tienes tu cdigo guardado. Una vez all, pues, escribe bgdc .prg, donde es el nombre de fichero para tu .prg.Si todo va bien vers un listado del resultado de la compilacin , o un mensaje de error si ha habido algn problema.

    Qu significa este mensaje obtenido por pantalla despus de realizar la compilacin? Cmo s si se ha producido algn error o no? Bien, si se produce algn error, observars cmo Bennu te lo indica con un mensaje que muestra el cdigo prg que contiene el error, la lnea concreta del cdigo donde est situado y una frase indicando el tipo de error que se ha producido. Ser nuestro trabajo saber interpretar esa frase para entender qu tipo de error existe e intentar subsanarlo: normalmente los mensajes son bastante entendibles si se tiene una mnima experiencia con Bennu. Por ejemplo, un mensaje de error que nos podramos encontrar podra ser ste: C:\ruta\arxivo.prg:9: error:Procedure name expected (END) , donde se nos dice que en la lnea 9 de arxivo.prg se ha producido un error determinado (en concreto,se nos ha olvidado abrir el END.)O este otro: C:\ruta\arxivo.prg:27:error:Undefined procedure (WRITE), donde el error es diferente (se nos ha olvidado escribir una orden import) y se sita en la lnea 27.

    Si la compilacin se produce con xito, lo veremos inmediatamente porque aparece en pantalla un listado aportando diferentes datos que el compilador ha recopilado a lo largo de su ejecucin. Estos datos ahora mismo no nos dicen nada, pero ms adelante pueden sernos de utilidad: podemos observar el nmero de procesos y de variables globales, locales, privadas y pblicas que tenemos definidas en nuestro cdigo (en el captulo 4 estudiaremos todos estos elementos), la cantidad de memoria que ocupan stas y el cdigo entero, el nmero de cadenas, estructuras e identificadores usados, etc. En definida, informacin de compilacin que solamente con mostrarse podremos concluir que se ha realizado todo el proceso correctamente.

    Si eres observador, habrs visto que aunque la compilacin se realice con xito, antes del listado (casi) siempre aparece un mismo mensaje, parecido a los mensajes de error: C:\ruta\librender:0:warning:Variable redeclared (ALPHA_STEPS).Como podrs intuir, el archivo que contiene el cdigo que provoca este error no es el tuyo, sino uno llamado librender, que forma parte del entorno Bennu. De hecho, no es un error, es un warning (una advertencia, una notificacin), que no impide en absoluto que la compilacin se realice correctamente: simplemente est informando que librender tiene definida una variable -la llamada ALPHA_STEPS- ms de una vez. Esto a nosotros como programadores Bennu no nos importa ni nos afecta lo ms mnimo, as que haremos siempre caso omiso de este mensaje, como si no existiera, y podremos concluir que la compilacin efectivamente se ha realizado con xito.

    3)Ya has compilado, pero... dnde est tu juego? Ya sabemos que el compilador genera un fichero resultado con la extensin .dcb y con el mismo nombre que el fichero .prg que se acaba de compilar,en la misma carpeta donde estaba el fichero prg. Sin movernos, pues, de esa carpeta, ahora ejecutaremos nuestro programa usando el intrprete de Bennu desde la lnea de comandos as: bgdi (no es necesario especificar la extensin .dcb cuando se invoca al intrprete)

    Si todo va bien tu programa se estar ejecutando Has hecho que aparezca la frase Hola mundo movindose con scroll de un lado a otro. Y todo esto con tan slo este cdigo tan corto. Si no te funcion, asegrate de haberlo escrito todo correctamente y haber elegido las rutas correctamente.

    Existe otra manera alternativa de poder compilar y ejecutar tus programas sin tener que recurrir a la consola de comandos, y sin tener que grabar los *.prg en una carpeta determinada. Basta con arrastrar con el ratn el icono que representa el archivo prg que has escrito, desde donde lo hayas guardado, y soltarlo sobre el icono que representa el bgdc (tendrs que tener una ventana abierta con el contenido de la carpeta bin de Bennu visible). De esta manera, obtendrs igualmente el archivo dcb. Y para ejecutar, tendrs que arrastrar el archivo dcb y soltarlo sobre el icono del bgdi. No obstante, a lo mejor, despus de haber arrastrado y soltado el archivo prg sobre bgdc intentas buscar el archivo dcb y no lo encuentras. Esto indica que algo has escrito mal en el cdigo, porque el compilador no ha

    10

  • sido capaz de generar el dcb. El pequeo hndicap de este mtodo es que si quieres saber cul ha sido tu error, no puedes, ya que el mensaje de error (indicando el tipo y en qu linea del cdigo se ha producido) aparece impreso dentro del intrprete de comandos, con lo que slo trabajando desde all lo podremos ver en pantalla y rectificar.

    Respecto a las tabulaciones del texto, has de saber que no son en absoluto necesarias para que la compilacin se produzca con xito. Simplemente son una manera de escribir el cdigo de forma ordenada, clara y cmoda para el programador, facilitndole mucho la faena de leer cdigo ya escrito y mantener una cierta estructura a la hora de escribirlo. Respetar las tabulaciones forma parte de la Gua de Estilo de Codificacin Bennu (de la cual se har mencin ms detenidamente en el captulo siguiente), y que es un documento que promueve una convencin estndar de escritura de cdigo Bennu para que todos los programadores tengan un estilo similar y para que este cdigo sea mucho ms fcil de leer entre varias personas.

    Y tranquilo: pronto explicar qu es lo que hace cada una de las lneas del programa, paso a paso: este ejemplo simplemente era para que vieras cmo funciona la dinmica de editar, compilar e interpretar.

    *Programas de soporte al desarrollador de Bennu

    La distribucin oficial de Bennu slo incluye los ficheros y utilidades comentadas en los apartados anteriores. Nada ms. No hay un IDE oficial, ni viene incluido ningn tipo de editor grfico o de sonido, algn generador de animaciones o explosiones ni ninguna herramienta similar, tpicas de otros entornos de desarrollo de videojuegos. La alternativa ante este hecho es o bien programarse uno todas las herramientas que necesite (con la consiguiente prdida de tiempo y energa) o bien recurrir a otros programas de terceros (ver Apndice B para ms informacin). Afortunadamente, dentro de la comunidad Bennu han aparecido diversos proyectos que pretenden cubrir diferentes aspectos no resueltos por el entorno Bennu oficial, facilitando as la labor del programador, hacindola mucho ms cmoda y amigable. A continuacin presento una lista de las utilidades que muy probablemente te sern imprescindibles cuando quieras realizar un videojuego de mediana entidad.

    IDE FLAMEBIRD MX (https://sourceforge.net/projects/fbtwo)

    Ya es visto el proceso que se ha de seguir para escribir, compilar e interpretar nuestro programa. Y estars de acuerdo en que es bastante incmodo utilizar estas herramientas independientes por lnea de comandos. Por eso, algunas personas han creado por su cuenta varios IDEs (recuerda que un IDE es bsicamente un editor de cdigo con un montn de funciones tiles -corregir cdigos, compilar y ejecutar, y muchas funciones ms-), pero sin duda el IDE para Bennu ms completo que puedes encontrar (aunque slo para Windows) es el FlameBird MX.

    Una vez descargado el FlameBird y descomprimido su contenido en una carpeta, no hay que hacer nada ms. No hay que instalar nada. Dentro de la carpeta ya viene el ejecutable listo para abrir el IDE. Y ya est. Si quieres, puedes crearte un acceso directo desde el men Inicio. Una vez iniciado el programa, antes de nada ves al men File->Preferences y all selecciona la seccin Global->File. Selecciona de la lista qu tipo de archivos se deberan asociar con FlameBird para que al hacer doble click en alguno de ellos se abriera el IDE automticamente. Selecciona .PRG, de momento, y .FBP tambin. Y tambin tienes que seleccionar donde dice Open .dcb files with Bennu interpreter: esto es para poder interpretar el juego y por lo tanto, ejecutarlo- desde dentro del propio entorno FlameBird, sin tener que salir fuera a ejecutar el intrprete.

    Otra cosa que hay que hacer una vez iniciado por primera vez el programa es decirle justamente en qu carpeta tienes instalado el entorno Bennu, para que el FlameBird sepa dnde ir a buscar el compilador y el intrprete cada vez que lo necesite, sin tener que hacerlo t. Para eso tienes que ir otra vez al men File->Preferencesr, y all seleccionar la opcin Compiler: podrs especificar la ruta de la carpeta de Bennu. Y ya tendrs el FlameBird listo para usar.

    Vers que arriba tienes los iconos tpicos (Nuevo -cdigo fuente, proyecto-, Abrir, Guardar,Copiar, Pegar, Compilar y ejecutar, etc.) En medio tienes el espacio para programar. A la izquierda controlas todos los ficheros que necesitar tu programa. A la derecha vers todas las variables,procesos e identificadores que usa tu programa para que puedas tenerlo todo a mano. Abajo aparecen los textos de error al compilar, te acostumbrars a ello con el uso.Puedes probar de escribir, grabar el prg en una carpeta cualquiera y ejecutar el mismo programa de antes. Vers que es mucho ms cmodo porque lo tienes todo a mano.

    Mediante FlameBird podrs crear archivos individuales de cdigo fuente, o bien proyectos, que vienen a ser conjuntos

    11

    https://sourceforge.net/projects/fbtwo

  • de varios archivos de cdigo fuente relacionados entre s (cuando un programa empieza a ser complejo es conveniente dividir su cdigo fuente en diferentes archivos). Si creas un nuevo proyecto, vers que aparece un nuevo tipo de fichero aparte de los PRG y DCB: los ficheros FBP. Estos archivos son los archivos de proyectos del FlameBird (si eliges este IDE), y son los que guardan toda la informacin sobre las relaciones entre los distintos cdigos fuente de un mismo proyecto y la configuracin general del proyecto. Cuando hagas un proyecto, el archivo que tendrs que seleccionar para abrir todo el proyecto, con sus diferentes PRGs, en el FlameBird ser ste (acurdate de que hace cuatro prrafos hemos asociado esa extensin al FlameBird). En un proyecto se seguir generando un nico DCB.

    RESALTADORES DE SINTAXIS PARA VARIOS EDITORES(http://forum.bennugd.org/index.php?topic=165.0) (http://forum.bennugd.org/index.php?topic=165.15)

    A falta de un IDE oficial y multiplataforma diseado especficamente para Bennu, podemos recurrir a IDEs genricos, agnsticos de ningn lenguaje en concreto, y adaptarlo a nuestras necesidades. En concreto, en los enlaces anteriores podemos descargar una serie de parches para hacer compatibles con Bennu unos cuantos IDEs libres de programacin, para que puedas elegir el que ms te guste y adaptarlo.

    La forma de instalacin es siguiendo estos pasos:1) Instalar el IDE oficial.2) Desempaquetar en la carpeta de instalacin del IDE los archivos con el parche. En algunos se requerir ejecutar algunas acciones adicionales. Se detallarn segn el caso.3) Colocar los ejecutables Bennu y sus dlls en la carpeta "C:\Bennu\Bin\".

    Todos tienen resaltado de sintaxis, compilacin y ejecucin integrada en el editor, visualizacin de salida de compilacin. Algunos adicionalmente tienen templates bsicos de creacin del programa (estilo "helloworld") y/o atajos de insercin de trozos de cdigo pre-tipeados.

    Crimson Editor (http://www.crimsoneditor.com )- Excelente editor para Windows, con un manejo de columnas idntico a Ultraedit.- Sintaxis de colores- Template "hello world"- Ctrl+F1 = Compile, Ctrl+F2 = RunConTEXT (http://www.contexteditor.org )- Para Windows- Sintaxis de colores - Atajos de insercin de trozos de cdigo pre-tipeados- F9 = Compile, F10 = Run- Se debe ejecutar el archivo "fixbennu.reg" (disponible en los enlaces de descarga) para completar la instalacinPSPad editor (http://www.pspad.com/es)- Para Windows- Sintaxis de colores- Template "hello world"- Atajos de insercin de trozos de cdigo pre-tipeados- Ctrl+F9 = Compile, F9 = Run- Se debe ejecutar el archivo "PSPad-Bennu-Install.bat" (disponible en los enlaces) para completar la instalacinNOTA: En este editor no es posible capturar la salida de ejecucin, pero s la de compilacin.Ultraedit (http://www.ultraedit.com )- Para Windows- Sintaxis de colores- Botones de compilacin y ejecucin- Listado de funciones y procesos contenidos en el prgNOTA: Leer el archivo "install.txt" contenido en el paquete.Gedit (http://projects.gnome.org/gedit) - Editor de texto plano oficial del escritorio Gnome - El fichero bennugd.lang es el fichero de especificacin para el resaltado de sintaxis con colores. Se ha de copiar en la carpeta /usr/share/gtksourceview-2.0/language-specs, arrancar el programa y en el men View->Highlighting elegir BennuGD.- Tambin se puede descargar el fichero bennugd-mime.xml que sirve para que GNU/Linux reconozca los archivos de extensin prg como del tipo MIME text/x-bennugd (un tipo inventado arbitrariamente): bsicamente este tipo MIME es una derivacin del text/plain, pero debido a que el archivo bennugd.lang anterior hace referencia a este tipo MIME, es preferible descargarlo, y copiarlo en la carpeta /usr/share/mime/packages para posteriormente ejecutar

    12

    http://projects.gnome.org/gedithttp://www.ultraedit.com/http://www.pspad.com/es/http://www.contexteditor.org/http://www.crimsoneditor.com/http://forum.bennugd.org/index.php?topic=165.15http://forum.bennugd.org/index.php?topic=165.0

  • el comando update-mime-database /usr/share/mime ,para que GNU/Linux se entere de la incorporacin al sistema de un nuevo tipo de fichero.-Gedit tiene una opcin del men que sirve para ejecutar comandos externos. Se puede utilizar para invocar desde all el compilador y/o intrprete sin tener que salir al terminal.

    Otros editores libres (y multiplataforma) genricos interesantes, que podran ser objeto de algn parche futuro para dar soporte al lenguaje Bennu son los siguientes:-Kwrite (http://kate-editor.org/kwrite) -editor de texto plano oficial del escritorio KDE--Geany (http://www.geany.org)-Scite (http://www.scintilla.org/SciTE.html)-Notepad2 (http://www.flos-freeware.ch/notepad2.html)-Notepad++ (http://www.flos-freeware.ch/notepad2.htm). Es el editor elegido para el BennuPack-Jedit (http://www.jedit.org)-Xint (http://www.xtort.net/xtort-software/xint)-Editra (http://editra.org)

    FPGEDIT 2009 (http://forum.bennugd.org/index.php?topic=619.0)

    Ahora no es el momento de explicar cmo funciona un editor FPG ni sus caractersticas, lo haremos en el captulo 3. Baste con decir que un FPG es un fichero-paquete que incluye dentro de l los grficos que se deseen para nuestro programa. El FPG Edit es un de gestor de FPGs: permite crearlos e incluir en ellos las imgenes que usaremos en nuestro juego, pudindolas clasificar, ordenar, editar sus puntos de control, grabar los FPGs en tres profundidades (8,16,32 bits), exportar una imagen concreta fuera del FPG, y muchas cosas ms.

    Si no ste, casi de forma imprescindible necesitars utilizar un editor de FPGs. Ya hablaremos de ello cuando toque, pero es importante sealar que ste (o alguno similar) sern programas que ms adelante usaremos mucho, as que si quieres, lo puedes instalar ya para ver cmo es.

    FNTMAKE 2009 (http://forum.bennugd.org/index.php?topic=697.0)

    Es un creador de fuentes de letra para nuestro juego, en un formato especfico de Bennu (FNT). Puede trabajar con fuentes de 1,4 y 32 bits. Ya hablaremos de l cuando toque, pero lo puedes instalar ya, porque lo usaremos mucho en este curso.

    EDITOR FPG de PRG (http://forum.bennugd.org/index.php?topic=267.0)

    Otro editor de FPGs, que tiene la particularidad de haber sido programado ntegramente en Bennu,y por tanto, ser multiplataforma. Con este programa se pueden crear, cargar y grabar FPGs de 8,16 y 32 bits, aadir y eliminar grficos, editar puntos de control y otras propiedades de los grficos del interior del FPG,

    Adems, incluye un pequeo pero funcional editor de fuentes FNT.

    SMART FPG EDITOR (http://code.google.com/p/smartfpgeditor)

    Smart Fpg Editor es otro potente, fcil y muy amigable editor FPG, pero slo funciona en Windows. Con este programa se pueden crear, cargar y grabar FPGs de 8,16 y 32 bits, aadir y eliminar grficos, editar los puntos de control y otras propiedades de los grficos del interior del FPG.

    BENNUPACK (http://bennupack.blogspot.com)

    Es posible que ests pensando que es un poco pesado tener que ir descargando tantos programas por separado desde tantos sitios diferentes: que si Bennu de un lugar, que si el Flamebird de otro, el FPGEdit y el FNTMake, etc. Esto mismo es lo que pensaron los chicos del grupo de desarrolladores Coldev, y lo que han hecho ha sido reunir en un nico paquete instalable (slo para Windows) todas estas herramientas -y ms-, para disfrute y comodidad de los usuarios de este sistema operativo. Es lo que ellos llaman el BennuPack.

    Es decir, en vez de tener que instalar una a una las diferentes herramientas, aspecto un poco pesado sobre todo para el principiante -y peor si no se conocen-, con el BennuPack dispondremos de un nico fichero "Setup", el cual instalar (creando sus correspondientes accesos directos del men Inicio de Windows y tambin un desinstalador accesible desde el men "Agregar/quitar programas " del panel de control de Windows) los siguientes programas, todos ellos de una sola vez, como si fueran uno solo:

    *Compilador e intrprete Bennu *IDE Notepad++ con los parches para Bennu ya aplicados *FPGEdit

    13

    http://bennupack.blogspot.com/http://code.google.com/p/smartfpgeditorhttp://forum.bennugd.org/index.php?topic=267.0http://forum.bennugd.org/index.php?topic=697.0http://forum.bennugd.org/index.php?topic=619.0http://editra.org/http://www.xtort.net/xtort-software/xinthttp://www.jedit.org/http://www.flos-freeware.ch/notepad2.htmhttp://www.flos-freeware.ch/notepad2.htmlhttp://www.scintilla.org/SciTE.htmlhttp://www.geany.org/http://kate-editor.org/kwrite

  • *FNTMake *Generador de sprites 2D Charas.EX (http://www.charas-project.net) *Generador de explosiones Explogen (http://www.kenginegaming.com) *Generador de paquetes autoinstalables PakAtor (http://semitex.iespana.es/) *Generador y editor de tiles TileStudio (http://www.tilestudio.org) *Editores grficos Idraw3, EA Graphics Editor (http://www.nba-live.com/eagraph ) , SplitImage (http://www.thecastle.com) y Slowview (http://www.slowview.at) *Multitud de cdigos fuente de ejemplo, clasificados en tres niveles de dificultad (muchos de los cuales se han utilizado en este manual como soporte para las explicaciones). El nivel avanzado de ejemplos corresponde de hecho a juegos totalmente acabados y funcionales de todo tipo (lucha, carreras, plataformas,rpgs...). *Multitud de libreras dll externas.Podemos encontrar la librera Bennu3D (http://3dm8ee.blogspot.com), desarrollada por el propio equip ColDev, y varias libreras ms que aportan soporte 3D a Bennu, libreras de red como la Fsock o la Net, libreras de acceso a bases de datos como la Sqlite o la OpenDbx, libreras de soporte a la reproduccin de vdeo, al reconocimiento de mandos y perifricos, libreras de efectos visuales, etc, etc, etc.

    Si te has fijado bien, habrs podido comprobar cmo, de toda la lista anterior de programas, slo uno, el editor Prg de FPGs es multiplataforma. Los dems, aunque son libres, slo funcionan en Windows. Esto es debido a qu el lenguaje con el que estn programados, o bien el uso que hacen de determinadas libreras, limitan su funcionamiento a dicho sistema operativo. No obstante, los usuarios de GNU/Linux pueden utilizar estos programas pensados para Windows mediante un emulador. Un emulador es un programa que permite que otros programas se ejecuten en una mquina como si en realidad se tratara de otra. En nuestro caso lo usaremos para ejecutar programas sobre Windows, cuando en realidad, la mquina real con Windows no existe.

    El emulador libre ms completo de Windows para GNU/Linux es Wine (http://www.winehq.org). Es muy fcil de instalar y utilizar. Para instalarlo, haremos uso de los repositorios oficiales de nuestra distribucin favorita. En el caso de Debian por ejemplo, haramos:

    sudo aptitude install wineA partir de aqu, lo nico que debemos hacer es descargarnos los instaladores para Windows de los

    programas que queremos emular. Si estamos trabajando en el escritorio Gnome o bien KDE, probablemente haciendo doble click sobre el instalador (al igual que se hara en Windows), comenzar el familiar proceso de instalacin. As de fcil. Una vez acabado, encontraremos la entrada de nuestro programa bajo el men Aplicaciones->Wine. Si el doble click no funcionara, siempre podremos abrir el intrprete de comandos y ejecutar lo siguiente para arrancar el instalador:

    wine archivoInstalador.exe y una vez instalado el programa, tambin podramos ponerlo en marcha en el intrprete de comandos as:

    wine C:\Program Files\NombreDelPrograma\ejecutableDelPrograma.exeFinalmente, si quieres configurar el comportamiento de Wine, lo puedes hacer mediante el comando:

    winecfgEvidentemente, este programa tiene muchsimas posibilidades que no trataremos aqu. Investgalas.

    *Recursos web sobre Bennu

    A continuacin tienes una lista que rene algunas de las ms importantes direcciones de recursos web sobre Bennu existentes actualmente , para que la tengas como referencia a lo largo de todo el curso:

    http://forum.bennugd.org Foro oficial de Bennu (en espaol e ingls) donde la comunidad participa activamente. Muy recomendable. La cantidad de informacin que se rene en sus posts es de un valor incalculable. La asiduidad de sus miembros y la gran voluntad en aportar nuevas ideas y soluciones y ayudar a los ms novatos lo

    14

    http://forum.divsite.net/http://www.winehq.org/http://3m8ee.blogspot.com/http://www.slowview.at/http://www.thecastle.com/http://www.nba-live.com/eagraphhttp://www.nba-live.com/eagraphhttp://www.tilestudio.org/http://semitex.iespana.es/http://www.kengine.illusionfxnet.com/http://www.charas-project.net/

  • convierten un lugar permanente de intercambio. A da de hoy, es la mejor fuente de informacin sobre Bennu.

    http://wiki.bennugd.org Referencia online del lenguaje. Poco a poco se est construyendo; con el tiempo vendrn explicadas todas las especificaciones sobre cada una de las funciones del lenguaje Bennu (qu parmetros usan, qu devuelven, para qu sirven, etc), sobre las diferentes variables (de qu tipo son, para qu sirven, qu valores pueden tener), sobre las palabras claves del lenguaje (construccin de bucles, condicionales, declaracin de variables, creacin de procesos,etc), incluso cdigos de ejemplo que