En primer lugar gracias Splinter por todo lo que haces por mantener vivo y conmas fuerza este proyecto.
Varias dudas tengo:
Tengo un programa en fenix que al intentar compilar no me encuentra los procesos......en Bennu tengo al inicio del programa que poner prototipos de las funciones? como se hace? ...tengo el programa principal y detras de el los procesos...asi que al compilar me dice que el proceso XXX no lo encuentra o no existe.
Otra duda....se hace engorroso ver todas las dll sueltas...supongo yo que haran falta obligatoriamente las SDL y sus librerias como png etc.....y luego voy incluyendo las especificas de bennu que quiero no?...estas las incluyo en bgd.imp o en un fichero con el nombredejuego.imp¿
Puedo poner todas las librerias en un directorio (Lib por ejemplo) para que no se vea tan engorroso y quede mas limpio el directorio del juego?
Gracias
Pues bienvenido, antes que nada.
No he usado aun mucho bennu, pero si se algunas cosillas, por ejemplo:
El tema de los procesos se ha ido volviendo un poco más restrictivo, pero no te asustes, no es nada que no se haya visto en otros lenguajes. Seguramente bennu te está pidiendo que declares los procesos ANTES de llamarlos, hay dos formas de hacerlo:
1- Usa DECLARE: simplemente, antes del main pones DECLARE nombre_del_proceso (tipos y variables de entrada); Vamos una declaración, esto tabien es necesario para el uso de variables PUBLICAS
2- Escribe el proceso entero antes del que lo usa.
Solo he probado un código (y no lo tengo aquí) pero con incluir las dll que usaba Fenix ya te debería funcionar, si quieres añadir más, poniendo un include con la ruta (absoluta o relativa al exe) donde se encuentra ya estará.
Para ser más precisos ya tendría que responderte Splinter o alguien que ya esté metido con Bennu ^^U
HOla...intente hacer
Declare
proceso();
proceso2();
.....
End
y me da error....he tenido que declarar cada proceso con un Declare .. End
Es normal? que hago mal?
Gracias
Debes ponerlo por separado:
[code language="bennu"]DECLARE PROCESS proceso1()
END
// o si tiene variables privadas o publicas
DECLARE PROCESS proceso2()
PRIVATE
INT var1;
INT var2;
// ...
END
PUBLIC
INT var3;
// ...
END
END[/code]
Cada uno por separado, y luego no pongas en el proceso la seccion private/public.
Tambien puedes usar el parametro de compatibilidad... chequeate la documentacion, en la seccion correspondiente del foro...
Por ahora las dlls deben estar en el mismo directorio donde se encuentra el bgdi.exe
Pero, las que importas supongo que podran en cualquier directorio no?
Con hacer include "ruta_al_modulo/mod_key.dll"
¿?¿?
No lo se, deberia funcionar como funcionaba Fenix... yo la verdad no me preocupo mucho en la distribucion final de los archivos... el jugador normal no se anda fijando que hay en los directorios, si estan ordenaditos, perfumaditos o con moñito rojo en la cabeza... los unicos enfermos que nos fijamos en esas cosas somos nosotros...
Pues precisamente lo de ordenar todo y tal me gusta hacerlo por tenerlo yo todo claro, que sino, en nada que te descuides tienes miles de archivos sueltos por ahi, y de paso le queda al usuario tambien.
Yo tambien soy un maniatico del orden, tanto que para distribuir los juegos incluiré en la carpeta del mismo solo 2 cosas:
1.-Ejecutable .exe que arranca el juego
2.-Carpeta de recursos del juego donde se encuentra el resto (compilador, modulos, dll, reucrsos del juego, etc...) ;D
Hola, perdonad que escriba en este hilo después de tanto tiempo, pero tengo una duda "varia" sobre Bennu.
El problema es que cuando intento compilar siempre me dice que no encuentra la librería mod_video. Quería saber si se trata de un DLL, dónde conseguirlo y dónde debo copiar el archivo...
Gracias si alguien me contesta!
tenes que bajar el paquete de bennu wip15b, el paquete de library-externas-mandatory (o algo asi) y poner todo eso en una carpeta, luego cuando ejecutas tenes que o tener en el path la carpeta de estos archivos o usar el bgdi de esa carpeta...
Es que soy nuevo en bennu y desearia saber como declaro el modulo inicializar y descargar de una dll
perdon, por tu consulta del otro dia no respondida, pero no vi nada mal en tu ejemplo...
para inicializar es, por ejemplo:
void __bgdexport( libmouse, module_initialize )()
{
gr_new_object( GLOINT32( libmouse, MOUSEZ ), mouse_info, mouse_draw, 0 );
}
/* --------------------------------------------------------------------------- */
para finalizar, lo mismo pero module_finalize
para declarar dependencias de otro modulo, por ejemplo...
char * __bgdexport( libmouse, modules_dependency )[] =
{
"libsdlhandler",
"libgrbase",
"libvideo",
"libblit",
NULL
};
gracias
Muchísimas gracias, creo que ya estoy muy cerca, pero tengo un problemita más.
Al compilar me sale este error:
C:\Bennu\bin\bgdc.import:1: error: Libreary "bgdi.dll" not found (EOF)
Pero el fichero bgdi.dll sí que lo tengo en la ruta C:\Bennu\bin\ junto con todo lo demás que me has dicho.
¿Qué es lo que me dejo? Quiero empezar a programar en Bennu... snif... :'(
bgdi.dll no sirve mas, creo que estas mezclando versiones... te sugiero que elimines todo el directorio de binarios y lo armes de nuevo con los ultimos paquetes... con los paquetes que mencione unos posts arriba...
Quote from: Windgate on October 31, 2008, 09:21:47 PM
Muchísimas gracias, creo que ya estoy muy cerca, pero tengo un problemita más.
Al compilar me sale este error:
C:\Bennu\bin\bgdc.import:1: error: Libreary "bgdi.dll" not found (EOF)
Pero el fichero bgdi.dll sí que lo tengo en la ruta C:\Bennu\bin\ junto con todo lo demás que me has dicho.
¿Qué es lo que me dejo? Quiero empezar a programar en Bennu... snif... :'(
Lo mejor que puedes hacer es borrar el bennu que tienes y bajate esto (http://betatester.bennugd.org/betas/win32-wip15b.rar) y esto (http://betatester.bennugd.org/betas/dlls-externals-mandatory-pack.rar), y los ejemplos (http://betatester.bennugd.org/betas/samples/).
El bgdc.import si lo quieres usar quita la "bgdi.dll" que como ha dicho Splinter, ya no existe.
Sois cojonudos tíos, OK, procedo a borrarlo todo y empezar desde 0, quiero entender bien cómo se hace.
Muchísimas gracias.
Nada, encantados de ayudarte. Cuando te bajes bennu veras que hay un archivo de texto con todas las funciones disponibles y el modulo (dll) donde están. Por ejemplo si en tu código usas la función "key" necesitas importar el modulo "mod_key.dll". Es tan fácil como añadir en tu código la linea: import "mod_key.dll";
Tenía claro lo de que era necesario hacer IMPORT, pero no conseguía que localizara las DLL. Ahora he borrado todo y he bajado la wip15, por fin he conseguido que funcione.
Ahora ya puedo empezar con Bennu. Muchas gracias a todos!
Perfecto, ya entiendo como van los IMPORT y va todo sobre ruedas, ¡Estoy programando en Bennu, casi no me lo creo!
Para quienes hayan tenido problemas como yo para migrar de Fenix a Bennu aquí os dejo un
HolaMundo en Bennu. Lo interesante no es el HolaMundo en sí, lo que interesa es que tiene una carpeta llamada DLL donde se encuentran todas las DLL y un fichero llamado include.prg que se ocupa de hacer (casi) todos los IMPORT necesarios para empezar a programar.
DESCARGAR: http://www.mediafire.com/file/yzdztmwzd0y/EjemploBennu.zip (http://www.mediafire.com/file/yzdztmwzd0y/EjemploBennu.zip)
El código completo queda así de simple,
usando sólo un INCLUDE en lugar de tantos IMPORT:
PROGRAM videojuego;
INCLUDE "DLL\import.prg"
BEGIN
write(0,160,100,4,"Hola, mundo!");
LOOP
IF (key(_esc)) BREAK; END
FRAME;
END
END
Espero que resulte de ayuda a quienes vienen de Fenix (o DIV) y se asuntan con tanto IMPORT. El archivo incluye un batch para compilar y ejecutar directamente haciendo doble clic sobre él. El código puede ser ampliado para programar libremente, si hiciese falta importar algún DLL más basta con añadir esa linea IMPORT dentro del fichero "import.prg". ¡No es eficiente pero sí eficaz! :D
Sirve para los novatos, pero la idea es no tener que hacer eso, ya que si incluimos todas las dlls, la modularidad pierde toda la gracia...
Pero bien, gracias... un pulgar hacia arriba!
Para esa cuestión ya existe el archivo "bgdc.import" y no tienes que añadir ningún include en el código.
Quote from: TYCO on November 05, 2008, 09:34:51 AM
Para esa cuestión ya existe el archivo "bgdc.import" y no tienes que añadir ningún include en el código.
Como no se me ocurrio? ;)
Un pulgar para TYCO!