Anuncios Google

BennuGD

AplicacionesLinuxWindowsSRCen

Versión 1.0.0 RC18

Muchas son las personas que han querido programar algún juego, pero la complejidad de los lenguajes de programación los ha echado para atrás. Ahora eso se acabó, porque hoy os doy a conocer un lenguaje de programación destinado a procesos, creado, sobre todo, para juegos, y este se llama BennuGD.

Página oficial

Como he dicho ya, es un lenguaje muy sencillo de usar, de hecho, yo ya he hecho unos juegos y no es nada complicado. Este lenguaje se abre mediante un intérprete ejecutable, y se compila mediante otro ejecutable, ambos descargables desde la página oficial. Junto con los ejecutables se instalan las librerias necesarias para usar estos. En la página oficial también hay tutoriales, uno largo y otro corto, muy sencillos.

Usa las librerias de SDL, y otras muchas más, creados por los usuarios o por el creador de esta maravilla. Los juegos que se programen en este lenguaje serán normalmente en 2D, aunque hay una extensión que permite usar el Irrlicht 3D Engine.

Cabe destacar que tanto como el interprete, como el compilador, como las librerias son OpenSource y están disponibles para Windows, Linux, Gp2x Wiz, Caano oficialmente, y no oficialmente también está soportado para Wii, MacOS, HaikuOS, Pandora y FreeBSD. También está disponible el SourceCode desde el servidor SVN de BennuGD.

Nota: La página oficial está tanto en inglés como en castellano, pero la wiki del proyecto solo está en inglés, aunque si tienes alguna duda puedes preguntar en el foro oficial o en esta noticia, que gustosos trataremos de ayudarte.


Descargas

Descargar BennuGD v1.0.0 RC18 (Sólo usuarios registrados)

Descargar BennuGD v1.0.0 RC18  (Sólo usuarios registrados)

4.421055
Tu voto: Ninguno Votos totales: 4.4 (38 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

que requerimientos pide

cuales son losrequerimientos para este programa?

Imagen de edokenshin

Una vez que consigues crear un .exe

¿Una vez que consigues crear un .exe que funciona de un juego, se puede cambiar el icono del ejecutable creado?

En teoría...

Con un editor de Exes de esos que hay por ahí... Es decir, que hay programas con esa función.

Imagen de edokenshin

Ya lo he...

Ya lo he probado con diversos editores que aparecen en los tutoriales, pero una vez guardas el ejecutable con el icono deja de funcionar, incluso si editas el mismo icono que viene de la cigüeña.

Cosas que se me olvidaron detallar

Ante todo disculpas por no contestar dudas, pero es que no he pasado por aquí en mucho tiempo.

Si usas Windows es más cómodo que te descargues el Bennupack, como bien dice Almamu, que te viene con el FPG Edit, el FNT Edit, un generador de explosiones, otro de sprites, un divisor de imagenes, el notepad++ con el resaltado de sintaxis de BennuGD... librerias y módulos adicionales, como el 3D, y más. También te lo puedes descargar por separado, pero se tarda más.

Instalar y usar BennuGD con linux es también muy sencillo, porque lo único que tienes que hacer es extraer el paquete, abrir el ejecutable con SUDO y ya puedes usar BennuGD, por lo menos con Ubuntu, poniendo en la terminal bgdc para compilar o bgdi para abrir el interprete, o incluso ejecutar el moddesc para obtener una descripción del módulo que le indicas.

Lo más dificil de BennuGD en Linux es instalar librerias y módulos adicionales, pero si no me equivoco se encuentran en /usr/lib.

También está disponible un repositorio de descargas APT para Ubuntu 32 Bits (gracias Josebita), el cual se encuentra en la página de descargas de BennuGD.

Como última recomendación es que os registreis en el foro. A esa gente le encanta ver caras nuevas con motivación, y sobre todo, les encanta ayudar. Hay más módulos y librerias creadas por los usuarios en el foro. Y el foro está en dos idiomas: español e inglés. Espero veros por allí.

Nota: El usuario Windgate de la comunidad de BennuGD ha hecho un tutorial de 140 páginas aproximadamente, aunque le faltan apartados, para empezar esta bién. También Osk, de la misma comunidad tiene otro tutorial de 600 páginas aproximadamente, con más funciones y más detalladas. Ambos se encuentran en el BennuPack, en la carpeta Docs.

Dicho esto, feliz código amigos.

Imagen de Anabol

Mismo problema que AlmamuPP,

Mismo problema que AlmamuPP, se me cierra el instalador nada más ejecutarlo, uso 7 ¿alguna solución?

Imagen de martin7777

A mi me pasa lo mismo, pero

A mi me pasa lo mismo, pero no se hacer nada de lo que dijo almamuPP, no se de donde descargar el paquete con bins y extensiones, y ya busue en la web oficial, me lo podeis explicar paso a paso?


Imagen de Almamu

Puedes descargarte este

Puedes descargarte este paquete que lleva varias herramientas y mas: http://colombiandevelopers.googlecode.com/files/BennupackToo...

Es un instalador y instala el compilador, un IDE, editores...

A mi me ha funcionado bien en Windows XP, donde el BennuGD de la web oficial no me funcionaba.


Imagen de Almamu

Prueba ejecutandolo como

Prueba ejecutandolo como administrador y si no ve a la página web oficial y bajate el paquete que lleva los bin y las extensiones, añade las carpetas a la variable PATH y prueba a ejecutar uno de los bins que lleva dentro.


Imagen de Anabol

Lo de ejecutar como

Lo de ejecutar como admisitrador fue lo primero que probé pero me daba el mismo resultado, luego he hecho lo que me has dicho de descargar el paquete de bin y extensiones pero no sé si me he bajado el correcto. De todas formas he ejecutado bgdc.exe o bgdi.exe pero me da el siguiente error: El programa no puede iniciarse porque falta LIBEAY32.dll en el equipo.. Que conste que no he instalado ninguna variable de sistema porque no sé cuales hay que instalar.

Imagen de Almamu

Simplemente tienes que

Simplemente tienes que modificar la variable PATH y añadirle las rutas a las carpetas libs, external, modules y bin, luego volver a probar.(recuerda que para separar tienes que usar el ; )


Imagen de Anabol

Muchas gracias crack

Ya me funciona correctamente, lo que pasa que ahora no sé como empezar :P ¿Dónde empiezo a escribir código?

Tutos.

Metete en Trinit.es en la sección de tutoriales, está muy bién para empezar.

Imagen de Almamu

En la wiki de la pagina

En la wiki de la pagina oficial tienes un tutorial para principiantes con lo basico, formatos, como ejecutar, compilar, etc y luego ya solo te queda investigar un poco :P, yo estoy probando a ver el 2D que tal va con Bennu, si veo que va bien me cambio a este y dejo el Game Maker, xD.

P.D: En la wiki tienes informacion sobre las funciones y variables que llevan los modulos que integra por defecto BennuGD.


Imagen de Anabol

Uff

Muchas gracias, en cuanto pueda voy a empezar a indagar sobre el asunto.

Salu2ts!

Imagen de Almamu

Yo llevo un rato con el y ya

Yo llevo un rato con el y ya he conseguido que se dibuje por donde pulsas con el raton y que se escriban letras en la pantalla grafica(set_mode), es realmente sencillo, pero aun no me he puesto a trabajar con Sprites y demás, de momento estoy haciendo las pruebas básicas, como hice en DS.

Si quieres usar algun programa con resaltado de syntaxis y que puedas compilar sin tener que escribir ningun comando puedes bajarte el paquete que he dejado mas arriba, lleva todas las herramientas, y ademas tambien lleva IDE y varias cosas mas, solo quiero decir que para las fuentes las debes de pasar a FNT antes con un programa, yo uso el del paquete.


Imagen de Anabol

Yo no he conseguido que me

Yo no he conseguido que me cree un ejecutable. ¿Podrías decirme de que método lo haces tú? Yo uso este .bat:

cd c:\devBennu\Programas\HolaMundo
 
bgdc <HolaMundo>.prg

Imagen de Almamu

No te hace falta el "cd"

No te hace falta el "cd" simplemente pon la linea de abajo, y quita los "<" y ">". Deberia de crearte un archivo dcb o parecido, luego ejecuta el bgdi HolaMundo.prg y lo ejecuta. Si quieres crear exes tambien es posible, pero ahora mismo no estoy muy puesto en eso, xD.


Imagen de Anabol

Nada, no se me crea nada...

No sé que me puede pasar, estoy usando la versión que pusiste más arriba creo que es la misma que tú utilizas. ¿Alguna idea?

Imagen de Almamu

Que raro... prueba esto: Abre

Que raro... prueba esto:

Abre el editor que lleva el paquete y pega esto:

import "mod_video"
import "mod_key"
import "mod_wm"
import "mod_draw"
import "mod_map"
import "mod_mouse"
 
// Paint algo malo, ejemplo para BennuGD By Almamu
 
// Variables globales
Global
	int r;
	int g;
	int b;
End
 
// Funcion de inicio del video
Function int initVideo()
Begin
	set_mode(640,480);
	set_fps(60, 5);
End
 
// Dibujamos un pixel
Function int putPixel(int x, int y)
Begin
	Drawing_color(rgb(r, g, b));
	Draw_line(x, y, x, y);
End
 
// Dibujamos una linea
Function int putLine(int x1, int x2, int y1, int y2)
Begin
	Drawing_color(rgb(r, g, b));
	Draw_line(x1, y1, x2, y2);
End
 
// Proceso inicial
Process Main()
Private
	int lastx;
	int lasty;
Begin
	initVideo();
	Repeat
		if(mouse.left)
			lastx = mouse.x;
			lasty = mouse.y;
			putPixel(mouse.x, mouse.y);
		end
		frame;
		if(mouse.left && lastx != 0 && lasty != 0)
			putLine(mouse.x, lastx, mouse.y, lasty);
		end
		if(!mouse.left)
			lastx = 0;
			lasty = 0;
		end
		if(key(_UP))
			r++;
		elseif(key(_DOWN))
			r--;
		elseif(key(_LEFT))
			g--;
		elseif(key(_RIGHT))
			g++;
		elseif(key(_MINUS))
			b--;
		elseif(key(_PLUS))
			b++;
		end
		if(r >= 256)r=255;
		elseif(r <= 0)r = 0;
		elseif(g >= 256)g = 255;
		elseif(g <= 0)g = 0;
		elseif(b >= 256)b = 255;
		elseif(b <= 0)b = 0;
		end
	Until(key(_ESC));
End

Cuando lo pegues guarda el archivo como paint.prg y pulsa F6, debera de compilarlo y mostrarte una pantalla negra, con el +, -, Arriba, Abajo, Izquierda y derecha cambias el color y con el raton pintas.

 

Si quieres usar el BAT pon un pause al final a ver si te da algun error de compilacion...


Recomendaciones

Almamu, tu código está muy bién, pero te voy a dar unas recomendaciones:

No crees una función para iniciar video, no hace falta, simplemente pones el set_mode y el set_fps en el begin del main, o crear una libreria chorra llamada libgenerica.inc e incluirlo en el código al principio tal que así:

import "mod_video"
import "mod_proc"//Es muy importante este módulo, pues te permite interactuar con otros programas, cerrarlos, o cosas tan interesantes como obtener el tamaño del escritorio.
import "mod_key"
import "mod_wm"
import "mod_draw"
import "mod_map"
import "mod_mouse"
import "mod_text"//Esto te lo pongo como ejemplo para escribir textos, pero ten cuidado, porque estos se invocan de forma algo distinta. Lo usaré en tu ejemplo para poner los valores de los colores.
//#include "libgenerica.inc";// la libreria con las funciones definidas comunes en todos los sitios, por ejemplo, init_video();
 
// Paint algo malo, ejemplo para BennuGD By Almamu
 
// Variables globales
Global
	int r;
	int g;
	int b;
	int texto[2];//Puesto que vamos a imprimir 3 textos en pantalla, creo un array, o tabla, con 3 variables(el 0 también se cuenta). NOTA: un array es un grupo de variables bajo un mismo nombre y cada variable se identifica con un número entre corchetes.
End
 
// Funcion de inicio del video
Function int initVideo()
Begin
	set_title("BennuPaint by Almamu");//¿Qué es una ventana sin su título?
	set_mode(640,480,32);// A mi me gusta declarar la profundidad de color, aquí x, porque en otras plataformas no soportan 32 bits, solo 16 como máximo, y tampoco se cuál es la profundidad determinada. Puede ser 8, 16 o 32
	set_fps(60, 0); // Aquí he quitado el 5 del frameskip, porque este programa no consume mucho, y si se te queda atascado, pues deberías pensar en cambiarlo ya :P
End
 
// Dibujamos un pixel
Function int putPixel(int x, int y) //Si no me equivoco, la función putpixel está definida en el módulo "mod_map" como put_pixel.
Begin
	Drawing_color(rgb(r, g, b));
	Draw_line(x, y, x, y);
End
 
// Dibujamos una linea
Function int putLine(int x1, int x2, int y1, int y2)
Begin
	Drawing_color(rgb(r, g, b));
	Draw_line(x1, y1, x2, y2);
End
 
// Proceso inicial
Process Main()
Private
	int lastx;
	int lasty;
Begin
	initVideo();
	Loop // Cambio el Repeat por el Loop, puesto que es único, yo el repeat lo pondría como un proceso hijo, un enemigo en un juego a lo 1945.
		if(mouse.left)
			lastx = mouse.x;
			lasty = mouse.y;
			putPixel(mouse.x, mouse.y);
		end
		if(mouse.left && lastx != 0 && lasty != 0) //¿Has pensado en poner estos dos condicionales juntos separados con un elseif?
			putLine(mouse.x, lastx, mouse.y, lasty);
		end
		if(!mouse.left)
			lastx = 0;
			lasty = 0;
		end
		if(key(_UP))
			r++;
		elseif(key(_DOWN))
			r--;
		elseif(key(_LEFT))
			g--;
		elseif(key(_RIGHT))
			g++;
		elseif(key(_MINUS))
			b--;
		elseif(key(_PLUS))
			b++;
		end
		if(r >= 256)r=255;
		elseif(r <= 0)r = 0;
		elseif(g >= 256)g = 255;
		elseif(g <= 0)g = 0;
		elseif(b >= 256)b = 255;
		elseif(b <= 0)b = 0;
		end
		IF (key(_esc))
			exit();//Solo se puede usar si tenemos el mod_proc importado al principio
		end //Por tanto, si quitamos el Repeat no podemos poner Until, así que pondré una secuencia IF, porque yo sencillamente lo veo más seguro y cómodo.
		texto[0]=write(0,0,10,3,"R="+r);//Los textos se declaran antes del frame
		texto[1]=write(0,0,20,3,"G="+g);//y se declara su eliminación después del
		texto[2]=write(0,0,30,3,"B="+b);//frame, para que se quiten después de imprimirse.
		FRAME;//El frame siempre al final, porque a veces se te olvida ponerlo, y si no sabes dónde buscar, te puedes tirar muuucho tiempo. NOTA: El frame puede llevar un número entre paréntesis, para indicar las veces que se ejecuta sin mostrar en pantalla. Es como una fracción, donde 100 es una vez por impresión en pantalla.
		delete_text (texto[0]);
		delete_text (texto[1]);
		delete_text (texto[2]);
	END
End

La función 'write', para la que necesitas el mod_text, tiene esta estructura:

(Aquí un nombre de una variable, que nos servirá para identificar el texto) = write ( identificador de un fnt, coordenadas x, coordenadas y, alineación, cadena de texto);

El identificador de un texto se obtiene cuando cargas un FNT mediante la función load_fnt("localización del fnt"), pero hay que ponerle una variable int como identificador, porque si no, se carga el fnt en la memoria pero no puedes acceder a él.

Ejemplo:

int fnt;

fnt=load_fnt("mifnt.fnt");

Coordenadas x y coordenadas y: Pues eso, la localización del texto en pantalla en coordenadas cartesianas.

Alineación: Dice qué punto del texto va a estar en las coordenadas puestas en las dos opciones anteriores, es decir, si pones 0, las coordenadas se pondrán en la esquina superior izda del texto, si pones 1, en la mitad arriba, si pones 2, en la esquina superior dcha, si pones 3, a la izda, si pones 4, al centro justo, si pones 5, a la derecha... Había un cuadro muy bueno en el tutorial de Windgate, porque ahora no lo tengo a mano.

Cadena de texto: Es un texto escrito entre comillas. Si cierras comillas y pones '+ (nombre de variable)' el valor de la variable quedará escrita en pantalla.

Si quieres te enseño a ponerle un cursor a tu Paint y lo dejamos casi terminado ;D

Imagen de Almamu

Ya se que no hace falta crear

Ya se que no hace falta crear una funcion, pero suelo tratar de ser organizado y por eso la cree, nada mas. Sobre las fuentes y la funcion write ya las he usado y se manejarlas decentemente, el "mini Paint" este es simplemente una prueba del manejo del raton que hice en su momento, nada mas.

El frameskip a 5 lo he puesto porque, creas o no, hay PC's que estan sobrecargados al momento de ejecutarlo y así me aseguro que si por alguna razon se para el dibujo que deja el raton se haga correctamente y no tenga errores.

Lo que comentas sobre esto:

		if(mouse.left)
			lastx = mouse.x;
			lasty = mouse.y;
			putPixel(mouse.x, mouse.y);
		end
		if(mouse.left && lastx != 0 && lasty != 0) //¿Has pensado en poner estos dos condicionales juntos separados con un elseif?
			putLine(mouse.x, lastx, mouse.y, lasty);
		end

Entre ellas había un frame, lo que hacia que cuando la distancia de la posicion del raton entre frame y frame era mayor a un pixel(o un pixel)dibujaba una línea recta para evitar que pareciese un aerografo y dar sensacion de que realmente sigue al raton, cuando lo que hace es simplemente dibujar una linea entre la posicion del raton antes del frame y de la posicion despues del frame(esta tecnica la aprendi en uno de mis primeros trabajos para la DS, y ya se puede ver lo util que es, xD). En el codigo que tu dejas(si no lo has probado)pinta un pixel por frame, por lo que no tiene continuidad y el arreglo de la funcion para dibujar lineas, sin un frame; entre if e if no funciona, lo puedes comprobar.


Si, lo he probado...

Aunque en realidad lo que yo hubiese hecho sería otro proceso con un frame(1); que lo ejecuta 100 veces por cada vez que se muestra, aunque he de reconocer que tu metodo es realmente bueno, aunque así ya tienes la forma de hacer un aerógrafo.

En realidad lo que pasa ha sido que he tenido un fallo al entender el código, pero ahora hay que poner los writes antes del frame, te agradezco que me hayas corregido :D

Edito: he probado con el frame 100, pero tampoco es funcional. Gracias a tu código ya sé otra cosa más. Gracias!!

Imagen de Anabol

Genial, ya me ha compilado.

Ahora si que voy a poder programar (risa malvada xDD). Muchas gracias por la ayuda, al final he usado el IDE que venía en el pack, que pensaba que no estaba preparado para compilar en Bennu, pensaba que solo era para escribir U.u. Guardando y pulsando F6 se me ha compilado, lo que pasa es que no me ha funcionado tu programa...

Salu2tS!

 

Imagen de Almamu

Que raro... yo lo he

Que raro... yo lo he ejecutado en Windows XP y me funciona, a lo mejor es por los comentarios con // que he metido más tarde, cuando iva a publicar el codigo, bueno, de todas formas a trabajar se ha dicho, ¿no?

xD.


Imagen de Anabol

Eso eso, me voy a tener que

Eso eso, me voy a tener que poner las pilas que en un momento has avanzado un montón. Por cierto, buenísimo el tutorial qe viene adjunto en la instalación, os aconsejo a todos que le echéis un vistazo :P

Salu2tS!

Imagen de martin7777

Hay algun tutorial en español

Hay algun tutorial en español de estra marabilla?

Muchas gracias por acercarnoslo.

Trinit.es

En trinit.es, en la sección de tutoriales, el usuario Windgate ha escrito documentos pdf divididos en temas, muy fáciles de comprender, con ejemplos en prg con imágenes y todo.

También está la wiki del proyecto, en inglés. Y el tutorial de Osk, un miembro del foro de BennuGD.org.

El tutorial de Osk es más completo, pero el de Windgate es más corto y te enseña lo básico.

Los dos tutoriales están incluidos en español en el BennuPack.

 

Imagen de Almamu

Estoy teniendo problemas para

Estoy teniendo problemas para instalarlo en Windows XP. He probado el instalador automatico, pero cuando lo inicio automaticamente se cierra, tambien he probado bajando el paquete RAR de la Web oficial y instalandolo manualmente, pero cuando inicio el compilador o algun ejecutable de los otros me salta un error con la dll LIBEAY32.dll(concretamente el error es: "No se encuentra el punto de entrada del procedimiento DES_ecb_encrypt en la biblioteca de vínculos dinámicos LIBEAY32.dll."), lo he instalado el Linux y funciona perfectamente, pero me es mas comodo hacerlo todo desde Windows, ¿alguna idea?

P.D: La carpetas bin, modules, libs y externals están añadidas a la variable PATH.


Imagen de Almamu

Lo he probado en Windows 7

Lo he probado en Windows 7 32bits y parecen funcionar bien.

Creo que he llegado tarde...

Pero por si alguien le este comentario: Busca BennuPack en el Google, o instalate Ubuntu 32 bits e instalatelo desde el repositorio de Josebita, dispuesto en la página de BennuGD.org, en la sección Descargas.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.