Bennu Game Development

Foros en Español => Documentación => Mensaje iniciado por: SplinterGU en Agosto 10, 2008, 12:34:22 am

Título: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Agosto 10, 2008, 12:34:22 am
Es conocido por muchos que muchos juegos comerciales (a pesar de estar escritos en C o algun otro poderoso lenguaje) usan lenguajes de scripting embebidos para hacer ciertas cosas, o para tener partes de la logica fuera del codigo compilado (binario del juego), y poder de esta forma tocar y ajustar cosas de forma muy facil. Ejemplo de esto es muchos juegos de Lucas Arts y Lua... o incluso Quake y su quakec, por nombrar algunos.
Bueno, nosotros no podemos ser menos, asi que aca les voy a dejar un ejemplo de como se puede usar Bennu como lenguaje de scripting embebido en nuestros proyectos (C en este caso).

[code language="c"]
/*
 *  Copyright © 2008 SplinterGU
 *
 *  This file is part of Bennu - Game Development
 *
 *  Bennu is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  Bennu is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "bgdi.h"
#include "bgdrtm.h"
#include "offsets.h"

/* ---------------------------------------------------------------------- */

int main (int argc, char **argv)
{
    INSTANCE * r ;
    PROCDEF * proc;
    int ret;

    /* Initialization (modules needed before dcb_load) */
    string_init() ;
    init_c_type() ;

    /* Load dcb file */
    if (!dcb_load("sample.dcb")) {
        printf ("Error loading dcb\n") ;
        return -1;
    }

    /* Initialization (modules needed after dcb_load) */
    sysproc_init () ;

    /* ---------- Sum two Numbers ---------------------- */

    proc = procdef_get_by_name ("ADD"); // Get definition function (name must be in uppercase)
    if (!proc)
    {
        printf ("Procc 'ADD' not found\n") ;
        return -1 ;
    }
    r = instance_new (proc, 0) ; // Create Function

    PRIDWORD(r, 0) = 12 ;    // Argument 1
    PRIDWORD(r, 4) = 32 ;    // Argument 2

    ret = instance_go(r) ; // Call Function

    printf ("%d\n", ret);

    /* --------- Create file with random data ---------- */

    proc = procdef_get_by_name ("CREATE_FILE"); // Get definition function (name must be in uppercase)
    if (!proc)
    {
        printf ("Procc 'CREATE_FILE' not found\n") ;
        return -1 ;
    }
    r = instance_new (proc, 0) ; // Create Function

    PRIDWORD(r, 0) = string_new("file.dat") ; // Argument 1
    string_use(PRIDWORD(r, 0));

    ret = instance_go(r) ; // Call Function

    printf ("%d\n", ret);

    /* ------------------------------------------------- */

    do_exit(0);

    return 0;
}

/* ---------------------------------------------------------------------- */
[/code]

[code language="bennu"]
import "mod_rand";
import "mod_file";
import "mod_string";
import "mod_say";


process add(int a, int b)
begin
    say("sum>"+a+"+"+b+"="+(a+b));
    return (a+b);
end


process create_file(string f)
private
    n;
    fp;
    v1,v2;
begin

    say("create_file entry");

    fp = fopen(f, O_WRITE);
    for (n = 0; n < 10; n++)
        v1 = rand(1,100);
        v2 = rand(1,100);
        fputs(fp,"add("+v1+","+v2+")="+add(v1,v2));
    end
    fclose(fp);
    say("create_file exit");
end

begin
end
[/code]

Esto es una prueba que demuestra como puede lograrse esto actualmente, pero para la version final, se crearan "atajos" (sin quitar la actual forma de hacerlo) para simplificar un poco mas esto.

PD: Para el que no le quedo claro, esto sirve para desde un programa escrito en C (por ejemplo) cargar un dcb y llamar a funciones (escritas en lenguaje Bennu) conteniadas dentro de el. Si lo pensamos un poco, el mismo ejemplo, sirve para llamar desde una DLL Bennu a funciones de un dcb (a modo de callbacks). ;)

Link para descarga del ejemplo http://rapidshare.com/files/136430226/embebed.zip.html
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: animanegra en Agosto 10, 2008, 09:02:52 am
Oye muy muy guapa la idea :D me gusta mucho. Muy muy util para generar los programas en c y las interfaces en fenix por ejemplo. :D (Aunque ya se podian hacer mediante librerias en el sentido inverso, pero de esta forma parece que se hace de forma mucho mas sencilla ¿no?)
Creando un editor de interfaces grafico ,que no deberia ser demasiado complicado, que genere un dcb con funciones de las pantallas podria ser la excusa para que mucha gente usase bennu embebido en c para hacer las interfaces de sus programas. :D
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Agosto 10, 2008, 11:33:13 am
Si, la cantidad de aplicaciones para esto es grande... en los juegos el uso mas habitual es el de aquellas partes del juego donde uno quiere poder tener flexibilidad de cambios y donde lo pueda tocar (modificar o crear) personas que no necesariamente sean programadores expertos o incluso gente que no tenga el codigo del ejecutable en C (inclusive que no disponga de todo el entorno que la generacion de este requiera)... usos habituales son por ejemplo para, IA de los enemigos, trajectoria de una bala, comportamiento de un arma, chequeo de condiciones para determinar cambios de niveles o escenarios, incremento de decremento de vida o de puntaje, hacer un calculo cualquiera, etc...
Esto se podria comparar a un "Visual Basic for Application" (VBA) embebido en, por ejemplo, un excel. Bennu seria el VBA, y C (o el programa creado en C) el excel.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: blostec en Agosto 10, 2008, 05:18:06 pm

Realmente es increíble el trabajo que estas haciendo con Bennu. Esto abre un mundo de posibilidades para usarlo.  :)
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Agosto 11, 2008, 02:52:52 am
Agregado link para descarga del ejemplo.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: TYCO en Agosto 11, 2008, 07:08:42 am
No soy capaz de ver el potencial real de esto, pero si parece ser un gran avance, gracias y no se los demas pero Bennu cada dia es mas potente. :-)
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Agosto 11, 2008, 08:16:40 am
Sí, pienso lo mismo que todos. Por ahora cada vez es más potente (y menos GPL :D)
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: kim-elet-o en Agosto 11, 2008, 08:42:26 am
Tyco la potencia se ve, cuando se tiene que teclear el codigo de 500 enemigos diferentes dentro de un juego, y entonces te das cuenta que porciones de codigo de un enemigo son identicas a las del otro enemigo, al final acabas agrupando esos trozos de codigo en pseudo-instrucciones, y creando un intreprete para ejecutar la logica de esas instrucciones, con lo cual con pocos bytes, puedes describir comportamientos complejos y diferentes, y lo mas importante, te olvidas de teclear programas kilometricos de 100.000 lineas, no se si se ha entendido.  ;D ;D  Es una tecnica que actualmente estoy usando en mi proyecto.   8) 8)

 
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: animanegra en Agosto 11, 2008, 09:19:16 am
iepa, no entiendo lo de menos GPL. Pero si bennu es libre ¿no? El fuente ha comentado splinter que se va a liberar. ¿Porque comentas que cada vez es menos gpl?
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Agosto 11, 2008, 09:52:23 am
iepa, no entiendo lo de menos GPL. Pero si bennu es libre ¿no? El fuente ha comentado splinter que se va a liberar. ¿Porque comentas que cada vez es menos gpl?

Todo bien, entiendo que es un chiste...

Para ver las ventajas de esto voy a sugerir unos links muy interesante al respecto, que creo no deben ser ignorados por todo programador de videojuegos, incluso por aquellos que no programen en C.

http://www.fuzzygamedev.com/2007/11/18/introduccion-a-la-integracion-de-scripts-en-un-motor-de-juegos/

http://www-128.ibm.com/developerworks/linux/library/l-lua.html?ca=dgr-lnxwTryLua

http://neuromancer.inf.um.es/blog/?p=296

http://www.lordzealon.com/2008/02/20/programando-con-lua-ese-gran-desconocido-pcl-i/ (aca pueden conocer algunos juegos y productos mas que usan scripting embebido)

Seguramente si buscan en google "uso de scripting en juegos" o alguna cadena de este estilo encontraran mucha informacion importante al respecto.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Agosto 11, 2008, 10:01:16 am
Otro uso de scripting embebido... en este caso usando JavaScript (como scripting) dentro de Mozilla Firefox... http://es.wikipedia.org/wiki/Greasemonkey


De hecho Bennu/Fenix son un lenguaje de scripting embebido... como es esto? bien, en realidad la aplicacion o motor del juego en C es el bgdi/fxi y el lenguaje de scripting es donde habitualmente escribimos nuestra logica de juego, pero hasta ahora nunca se hablo ni se dio la posibilidad de integrarlo a otras aplicaciones/motores que no sean bgdi/fxi... este ejemplo, junto a la forma actual de presentacion de Bennu, demuestra como es posible llevar a cabo esto en cualquier otro proyecto...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: animanegra en Agosto 11, 2008, 10:24:48 am
Estaria muy guapo el tema de tener la posibilidad de que fuese lenguaje de scripting tipo php o bash. Usea que el interprete pudiera leer tambien  fuentes e interpretarlos directamente (Y a lo que me contesto, tambien seria guapo que los dias tuviesen 48 horas ^^). Sin mas, ya sabeis que el lenguaje de scripting abre posibilidades de generacion de codigo on the fly de manera muy sencilla.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Agosto 11, 2008, 10:55:41 am
"menos gpl?"
Pues sí, tiene razón splinterGU, era un chiste.
Enfatizaba que desde la version 0.92 no existe código fuente disponible (por tanto no es "opensource" aún), y podría haber código malintencinado en los binarios.

No pongo en tela de juico a SplinterGU pero es lo que se dice de los programas sin acceso al código.

Cuando uno compila desde el código, sabe que si algo hay raro en el ejecutable lo encontrará en el código fuente, pero cuando a uno le dan el ejecutable pues nada a confiar toca (hombre podría hacerse ingeniería inversa, pero ya es meterse en camisa de once baras) :D.

Nada que está wapo el scripting, al final todo se reduce a lo mismo, damos siempre la vuelta a la tortilla, es lo que se hacía en basic en los tiempos del cpc. Se programaba el codigo fuente bas y el sistema operativo se encargaba de interpretarlo directamente era totalmente "on the fly" la programación :D. Luego empezaron las técnicas de ofuscación para evitar que se entendiera el código y lo modificasen, luego se empezaron a crear los compiladores evitando ver el código fuente, luego se crearon los scripting para programar directamente en la shell de unix, luego se traspoló a los juegos con div y derivados  en los que programas en un pseudo lenguaje inventado y luego un programa se encarga de traducirlo a la máquina física (en nuestro caso fxi, bgdi) luego se creó el concepto de máquina virtual que creas el fuente, obtienes un byte code para una máquina inexistente físicamente y luego una implementación de esa máquina traduce el bytecode a la máquina real (lo que es jre o framework.net)

Todos son el mismo perro pero con distinto collar.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: animanegra en Agosto 11, 2008, 11:00:59 am
Joder, pero el tema de compilar hace que todo vaya mas rapido, no por tema de ofuscar el fuente. :D El codigo en scripting al final se usa para lo que se usa porque al final quedan programas mas lenticos :D
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Agosto 11, 2008, 02:56:23 pm
Piensen que si juegos y programas mounstruosos como World Of Warcraf, Warhammer Online, Adobe PhotoShop Lightroom, y muchos otros mas, usan scripting en partes de su codigo, tan malo no debe ser...
Tambien piensen que actualmente cada vez que programamos un juego en Fenix/Bennu (y otros tantos lenguajes similares) absolutamente toda la logica es scripting...

Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: kim-elet-o en Agosto 11, 2008, 04:56:29 pm
Mismamente yo estoy haciendo un MachacaMarcianitos, y para pruebas lo estoy corriendo en un celeron a 800Mhz, con 256 Megas de ram, en un xp sp2 "capado" (el S.O. esta limpito del todo y con un monton de servicios apagados), estoy utilizando Pseudo-codigo dentro del Bennu, y corre bastante decentemente a unos 50 fps, aun no le he metido caña, por  que estoy desarrollando una serie de herramientas de compilacion de pseudo-codigo que me estan retrasando un pelin en el proyecto, bueno a lo que iba, aun me queda un poco para optimizar codigo, cuando lo haga seguro que saco algo mas rendimiento, jejeje, el pseudo-codigo o scripting es una buena herramienta.

Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Mayo 19, 2009, 07:56:23 pm
lol, este es otro hilo que no debería haber caído en el olvido...

Por lo que leo: De acuerdo que pueda invocarse una función Bennu del .dcb desde otro lenguaje, pero... ¿Si esa función Bennu hace uso de alguna DLL de Bennu como pudiera ser mod_screen u otras no funcionará tan fácilmente no?

En cualquier caso voy a descargar el ejemplo de SplinterGU y examinarlo detenidamente.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Mayo 19, 2009, 11:19:22 pm
podria, si
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Mayo 20, 2009, 01:04:03 am
Curioso... Pero entonces, ¿Un juego de esos escritos en Java para móviles podría hacer uso de funciones de un .dcb de Bennu?

Eso permitiría prácticamente "traducir" un videojuego en Bennu a Java. Sería mucha interpretación interpretada, algo malo debería pasar... Y francamente, no sabría cómo hacer ni tan siquiera la prueba de semejante excentricidad informática...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Mayo 20, 2009, 10:42:45 am
No, no se entiende... esto es para ejecutar, dentro de otro lenguaje (C o alguno que permita hacer llamadas a dlls), un dcb, como si se llamara al bgdi, pero pudiendo hacer mas cosas, como ejecutar un proceso especifico y obtener sus valores o poder acceder a sus variables o variables globales u otras cosas...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Junio 06, 2009, 01:26:56 pm
Disculpad la offtopicada... Veo que muchos topics tienen delante una etiqueta como [DEV] en el caso de éste.

Acabo de publicar un nuevo topic y me he dado cuenta tarde :-[

¿Dónde se encuentran las normas para esas etiquetas?
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Junio 06, 2009, 02:25:32 pm
Habia pero no recuerdo donde...
Cuidado con esta seccion es para documentacion del producto bennu, no para documentacion de productos que usan bennu.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: osk en Octubre 08, 2009, 02:19:16 pm
Hola.
Me he descargado el ejemplo de programa en C y el código Bennu que hay en la primera página de este post, pero me ha sido imposible compilar dicho programa C. Uso CodeBlocks, y después de indicarle las rutas de las librerías que se utilizan (en concreto bennugd/core/include, bennugd/core/bgdi/include y bennugd/core/bgdrtm/include, además de la ruta al código fuente de Zlib) me da este error, que no entiendo:

44 error 'string_init' was not declared in this scope
83 error 'string_new' was not declared in this scope
84 error 'string_use' was not declared in this scope
92 error 'do_exit' was not declared in this scope

¿Alguien me podriá indicar que paso me falta por hacer?
Graciaaaas!
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: splinter_work en Octubre 08, 2009, 03:44:59 pm
esos no son las librerias, son los includes...

quizas te falta incluir la libbgdrtm.dll o .so, segun donde estes compilando.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 08, 2009, 04:49:19 pm
Ese error es típico de cuando usas el string de la "Standard C++ Library" y no pones al principo del código lo siguiente
Código: [Seleccionar]
using namespace std;
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Octubre 08, 2009, 11:29:51 pm
Ese error es típico de cuando usas el string de la "Standard C++ Library" y no pones al principo del código lo siguiente
Código: [Seleccionar]
using namespace std;

????!!!!

esas funciones del core de bennu, no tienen nada que ver con el standard c++... no te entendi, lo juro.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 09, 2009, 10:42:17 am
No dije que fuera la solución, solo que puede que anden por ahí los tiros.
eso de que no está definido en este ámbito, sale cuando usas por ejemplo
Código: [Seleccionar]
void main(){
  string mi_cadena;
}
y se te olvidó poner esa línea antes del main.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: splinter_work en Octubre 09, 2009, 03:40:22 pm
vale, ya veo... entonces seguro es porque esta usando el cpp o g++ en lugar del gcc...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: osk en Octubre 10, 2009, 02:06:11 pm
Pues no hay manera...
En el CodeBlocks tengo puesto que el compilador a usar sea el GNU GCC Compiler.
En el apartado "Settings->Compiler&Debugger" he puesto en la pestaña "Search directories", en el apartado "Compiler" las rutas a los includes necesarios (las que especifiqué en mi post anterior), pero además, ahora he puesto en el apartado "Linker" las rutas de las distintas librerías y binarios de Bennu (externals, libs, bin, modules) y en la pestaña "Linker settings" he añadido librerías a mano, como la bgdrtm.dll ó la zlib.dll. Pero nada. Me sigue saliendo el mismo error. No sé qué puedo hacer. Lo siento.
Gracias.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Octubre 10, 2009, 03:25:12 pm
Esos "gestores de proyectos" como Visual Studio y CodeBlocks me ponen enfermo... Se supone que están para facilitarte las cosas pero siempre me pasa que arrojan 12000 errores y no sabes ni por donde empezar.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 10, 2009, 08:21:24 pm
He conseguido compilar el ejemplo, pero parece ser que al menos en windows no va.
Me casca en la línea 52
    r = instance_new (proc, 0) ; // Create Function
Dice
c:\codeblocks\workspace\pruebaBennuEmbebido\bin\Debug>pruebaBennuEmbebido
.exe
Assertion failed: code < string_allocated && code >= 0, file strings.c, line 264


This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Adjunto proyecto Codeblocks 8.02 con los headers, dlls necesarios y los resultados compilados(prg y dcb resultado).
El foro no me deja subir zips con exes, asi que adjunto enlace  mediafire con el exe
http://www.mediafire.com/?zgdmjjdtm0w

Sería muy bueno que alguien intentase compilarlo y ejecutarlo en codeblocks de linux para ver si allí no falla
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 10, 2009, 08:44:30 pm
Por cierto la idea es buena pero no queda a la altura de otros lenguajes scripting embebidos en c.
Por ejemplo tcl (http://wiki.tcl.tk/2074) embebido en c es algo como hacer lo siguiente:

Obtener intérprete.
Inicializar intérprete.
Crear comando TCL en un string
Evaluar comando a través del intérprete.
O bien Evaluar archivo guardado.

Bennu se parece un poco a TCL en este sentido, TCL también va por modulos llamados paquetes y para usar algunas funciones es necesario poner "package require nombrepaquete"  análogo al import de bennu y estas funcionalidad también  puede ejecutarle desde el interprete creado en c,.

Sería muy buena idea que bennu se pudiera comportar también así.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Octubre 11, 2009, 02:45:33 am
perdon, pero te equivocas... si esta a la altura, ese que mencionas es diferente porque incluye el compilador en el runtime, cosas que en bennu va por separado... incluso puede que TCL ni lo compile, que lo interprete directamente, cosa tambien diferente a bennu... bennu compila el .prg y ejecuta la compilacion de este...

son diferentes filosofias...

en un futuro lo sera, pero no sera asi, sino sera mas bien compilacion dinamica...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Octubre 11, 2009, 02:46:46 am
obviamente, a mi me funciona el ejemplo que puse en el inicio.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Octubre 12, 2009, 05:36:23 am
Hola, siento offtopicar un poquito, pero el buscador del foro me ha llevado a este hilo donde se habla de este error:

(http://trinit.es/images/Error%20Bennu.png)

Me ha pasado al actualizar a la nueva RC de Bennu, anteriormente tenía una RC anterior y sí que me funcionaba sin problemas :S

Por si os sirve de algo, sólo me ha pasado al ejecutar los proyectos que usan Bennu 3D, tanto con el Bennu 3D de Irrlicht como con el de bullet, es error de ejecución y se me cierra el juego sólo en el primer frame.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: osk en Octubre 12, 2009, 10:10:02 pm
Bueno, he conseguido resolver a media el problema que tenía al compilar el programa C que hace uso de Bennu embebido.
Repito mi configuración, por si alguien lo quiere tener en cuenta:
CodeBlocks en Windows, haciendo uso de GNU GCC Compiler (en realidad MinGW). En el menú Settings->"Compiler&Debugger" tengo puesto dos cosas:
           -En la pestaña "Search directories"->"Compiler", las rutas a los includes de dentro de las subcarpetas bgdi, core i bgdrtm, del código fuente de Bennu además de la ruta del código fuente de zlib
           -En la pestaña "Linker settings", la ruta de libbgdrtm.dll

Bien. Resulta que el fallo ha sido principalmente mío, ya que intentaba abrir el código fuente de C como un fichero aislado, y parece ser que CodeBlocks no hace lo que tiene que hacer. Si, en cambio, genero un proyecto de tipo "Shell Application" e incluyo dicho fichero, la compilación se hace CASI correctamente.

¿Y por qué digo CASI? Porque no va bien del todo. Resulta que salen unos warnings así:

warning: implicit declaration of function `string_init'
warning: implicit declaration of function `string_new'
warning: implicit declaration of function `string_use'
warning: implicit declaration of function `do_exit'

Qué curioso, las mismas cuatro funciones problemáticas de antes...Bueno, no pasaría nada si no fuera porque, ADEMAS, SIGUE OCURRIENDO UN ERROR. Éste:

undefined reference to `_do_exit'

He intentado buscar en todos los códigos fuentes de que dispongo, ya sea de Bennu como de las dependencias dónde aparece esta dichosa función, pero nada. Incluso en las cabeceras estándar de MinGW. No he visto nada. Así que, ni corto ni perezoso, he comentado esa línea y listo. Y por si acaso, he escrito exit(0); que al menos se le parece. Y se lo ha tragado. Al menos, ahora compila y el ejemplo hace lo que creo que tiene que hacer...

Pero no sé la razón de tanto fallo...seguro que es problema mío, pero al CodeBlocks ya le he intentado decir dónde está todo para que lo pueda encontrar, sea lo que sea, pero nada. No sé, es un poco rollo.

Venga, hasta luego.


Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 12, 2009, 11:03:18 pm
A mi me pasó lo mismo con do_exit, o bien es de linux, o bien Splinter la tiene hecha en otra librería dinámica, yo también lo cambie por el exit(0).
También tuve que cambiar unos cuantos includes que en el código bennu vienen entre <> cuando en realidad deben de ir entre "" por no ser del sistema ya que el gcc se me quejaba.
En cuanto a los warnings a mi no me dan, ese warning es típico de haber usado una función que el compilador conoce pero en la que en su .c olvidaste poner su cabecera. Cuando a mi me dan esos warnings lo que hago es poner el cursor encima de la función que lo da, dar click derecho, dar a buscar definición (o implementación podría valer si tienes el código fuente), al hacer esto se abre el header en el que está definida así que me quedo con la copla y lo incluyo en el archivo en el que dió el warning.
Entonces, ¿a ti no te da luego un error al ejecutar el .exe?
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Octubre 13, 2009, 02:08:28 am
el do_exit cambia por 

void bgdrtm_exit( int exit_value )

el entry es


void bgdrtm_entry( int argc, char * argv[] )
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 13, 2009, 08:38:05 am
Gracias era Eso y la versión del libbgdrtm lo que me fallaba a mi, ya me va perfect.
Osk, ahora veo que para quitar los warnings le metí al ejemplo #include "xstrings.h" que es donde esta el string_init y demás.
Así que
1.- creas el proyecto en codeblocks
file - new - project .. - console application - C .
Copias el ejemplo de Splinter.
Cambias do_exist por bgdrtm_exit
Añades #include "xstrings.h"
2.- Para la dependencia de zlib, me instalé zlib-dev y zlib-bin para mingw (Nota: hay dos zlibs uno para msys y otro para mingw, yo me bajé este último)  (http://sourceforge.net/projects/mingw/files/)
3.- Ahora hay dos formas de enganchar con bennugd,
primero te bajas el código fuente de bennugd
segundo añades a codeblock el libbgdrtm
project -build options - linker settins - link libraries - C:\BennuGD\bin\libbgdrtm.dll
Y tercero
O bien añades los siguientes directorios de cabeceras
project -build options - searh directories - Compiler - C:\BennugD\src\core\include
                                                        C:\BennugD\src\core\bgdrtm\include
O bien copias al directorio del proyecto de codeblocks todos los headers de esos dos directorios. (no necesariamente son todos, con ir compilando y ver cuales falta, poco a poco puedes sacarr los imprescindibles pero es más rápido copiarlos todos, total para lo que ocupan :D)
Adjunto proyecto codeblocks ejemplo con todo lo necesario para que sea independiente del código fuente de bennugd. Solo necesitarás los binarios.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 23, 2009, 02:09:25 am
Se me han planteado unos problemillas...


Lo siento pero es que esto me trae un poco perdido, a pesar de haber hecho pinitos con este codigo...

OFFTOPIC: Me acabo de imaginar mi avatar en movimiento metido en uno de los cajetines de avatar de DCelso xDDDD
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 23, 2009, 08:10:03 am
¿Me estás pidiendo un ávatar? ;D
Yo te lo sabría hacer fijo, nunca me he puesto ha hacer un gif animado, no sabría por donde empezar, si quieres, eres libre para usar mi plantilla, por ahí he ido dejando unos cuantos svgs de los que podrías sacar el marco. :-[
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Octubre 23, 2009, 10:42:56 am
Hi Patonsky,
siento no poder ayudarte con el scripting embebido, simplemente quería decir que comparto una de tus dudas:

Citar
En caso de poder usarse modo gráfico... ¿Se puede usar el modo grafico sin la ventana de consola detrás?

En ese sentido también me he preguntado muchas veces si podría ejecutarse Bennu en el tray, sin ventana visible, aunque supongo que non :P

En cualquier caso Patonsky, sube TODO lo que vayas haciendo sobre embebido, aunque sea un Hello World, que por exceso de ejemplos no habrá problema alguno xD
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 23, 2009, 11:25:27 am
cagoen tu gif está pensado solo para fondo blanco, me llevaría mucho tiempo adaptarlo, esto es lo que he consegido con GIMP.
¿Así te lo imaginabas?
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 23, 2009, 12:26:24 pm
¿Me estás pidiendo un ávatar? ;D
Yo te lo sabría hacer fijo, nunca me he puesto ha hacer un gif animado, no sabría por donde empezar, si quieres, eres libre para usar mi plantilla, por ahí he ido dejando unos cuantos svgs de los que podrías sacar el marco. :-[
cagoen tu gif está pensado solo para fondo blanco, me llevaría mucho tiempo adaptarlo, esto es lo que he consegido con GIMP.
¿Así te lo imaginabas?

No te preocupes... Es una abominación que nadie que no esté tan enfermo como Windgate o como yo podría concebirla, ya me pondré este fin de semana xDDD

Hi Patonsky,
siento no poder ayudarte con el scripting embebido, simplemente quería decir que comparto una de tus dudas:

Citar
En caso de poder usarse modo gráfico... ¿Se puede usar el modo grafico sin la ventana de consola detrás?

En ese sentido también me he preguntado muchas veces si podría ejecutarse Bennu en el tray, sin ventana visible, aunque supongo que non :P

En cualquier caso Patonsky, sube TODO lo que vayas haciendo sobre embebido, aunque sea un Hello World, que por exceso de ejemplos no habrá problema alguno xD

De acuerdo. subiré ejemplos y pondré el codigo visible y bién comentado en la medida de lo que pueda hacer, aunque no será gran cosa :-/

Respecto a lo del modo gráfico... ¿Ayudaría una screenshot del momento del error?

Como último punto, yo crearía un thread para poner en común conocimientos y probatinas, y así no saturar este...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Octubre 23, 2009, 12:33:58 pm
No abras nuevo hilo, ÉSTE es el hilo xD

Cualquier cosa que subas será de ayuda, y las screenshots siempre son valiosas. La verdad es que somos un poco perezosos, pero sería grande si las usásemos más a menudo... Yo ahora con mi hosting no me corto y pongo screen siempre que tengo ocasión.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: TRaFuGa en Octubre 23, 2009, 12:37:34 pm
mmmm una preguntita, esto de usar Bennu como lenguaje scripting embebido, es para que luego la compilación sea un exe normal (en windows) y no tenga que usarse un runtime?? por que si es así, entiendo que esto estará pensado para ser más portable todavía (toda plataforma que soporte programacion con c+sdl podria tener un juego creado con bennu...).
Lo mismo he desvariado un poco y no me he he enterado de nada xD ::)
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Octubre 23, 2009, 12:54:27 pm
Yo la idea la veo más orientada a que se puede hacer uso de las "peculiaridades y ventajas" de Bennu usándolo como script en otro lenguaje.

Por ejemplo, la librería graphics.h de C es una basura, pero embebiendo Bennu (Exahustivamente) se podría acceder al buffer de pantalla (file=0 y graph=-1) y mostrarlo pixel a pixel desde C.

Supongo que sería lento, pero permitiría cosas como poder meter un juego Bennu en una página web en plan flash...

Al menos esa es la idea que tengo en mente con esto del script.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: splinter_work en Octubre 23, 2009, 02:08:06 pm
mmmm una preguntita, esto de usar Bennu como lenguaje scripting embebido, es para que luego la compilación sea un exe normal (en windows) y no tenga que usarse un runtime?? por que si es así, entiendo que esto estará pensado para ser más portable todavía (toda plataforma que soporte programacion con c+sdl podria tener un juego creado con bennu...).
Lo mismo he desvariado un poco y no me he he enterado de nada xD ::)

no, no es para eso... deberias leer los primeros posts explica de que va...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 23, 2009, 03:19:09 pm
pero ¿viste el avatar que hice?
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: TRaFuGa en Octubre 23, 2009, 03:31:05 pm
mmmm una preguntita, esto de usar Bennu como lenguaje scripting embebido, es para que luego la compilación sea un exe normal (en windows) y no tenga que usarse un runtime?? por que si es así, entiendo que esto estará pensado para ser más portable todavía (toda plataforma que soporte programacion con c+sdl podria tener un juego creado con bennu...).
Lo mismo he desvariado un poco y no me he he enterado de nada xD ::)

no, no es para eso... deberias leer los primeros posts explica de que va...
Sigo sin enterarme mucho xD lo que puedo entender con esto, es para ahorrar (o mejorar) trozos de código en nuestro juego (creanos nuestros procesos en Bennu y llamarlos desde C tipo librerias o funciones externas ¿?¿?¿?), o la posibilidad de que un usuario final del juego, pueda modificar funcionalidades del juego sin tocar nada más que las librerias bennu externas?
En cualquier caso, a la hora de compilar el programa en C se generará un EXE, y deberá de contener los DCB compilados previamente??
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 23, 2009, 03:38:10 pm
Mas o menos.
Una de las utilidaes es esa, crear el motor de tu programa en C y crear un .exe que ya no modificarás mas, y la lógica de ese exe abrirá uno/o varios dcbs para utilizar funciones escritas en código bennu.
Con esto consigues independizar cierta parte de la funcionalidad final del programa de la compilación del ejecutable completo, y así poder cambiar la lógica de, digamos por ejemplo el movimiento de un enemigo, simplemente reprogramando las funciones bennu y volvendo a dejar el dcb resultado en el lugar del que lo usará el exe que hiciste en c.
Creo que actualmente solo puedes embeber la parte lógica de una función, es decir, no puedes usar control de dispositivos como teclado raton o pantalla.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 23, 2009, 04:41:25 pm
pero vistes el avatar que hice?
(http://forum.bennugd.org/index.php?action=dlattach;topic=147.0;attach=613)
Lo viste, lo viste xDDD



He hecho pruebas para trabajar con bennu en modo consola y funciona de maravilla, pero lo que me interesa es poder iniciar el modo gráfico...

Me sale el siguiente error cargando un código Bennu con modo gráfico:
(http://img259.imageshack.us/img259/3752/error1q.png)
Y después retorna el siguiente valor:
(http://img25.imageshack.us/img25/1461/error2y.png)

¿Qué podría ser?
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 23, 2009, 04:55:21 pm
¿Has probado a hacer lo mismo sin codeblocks?
Puede que no controle bien el "handle" de la ventana de bennugd.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 23, 2009, 05:12:14 pm
Probé y nada.

Recuerdo que pasaba algo parecido cuando de noob asocié los archivos dcb al intérprete y los abria con doble click.

El resultado era exactamente el mismo, solo que no veia el valor de retorno.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 23, 2009, 05:41:50 pm
Por eso lo decía, puede ser problema de rutas relativas.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 23, 2009, 10:17:58 pm
then?

¿Cómo lo soluciono? xD
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 23, 2009, 10:25:49 pm
Ni idea, necesitaría reproducir el problema en mi equipo, pero de primeras dirían que no se puede depurar un dcb embebido en c.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Octubre 23, 2009, 11:44:28 pm
no podes usar esta funcionalidad de esta forma, no es para hacer modo grafico desde fenix... ya que para eso necesitas llamar al motor completo y a todos los hooks...

la cosa es simple y basica... veamos...

no se puede comparar un juego hecho en bennu y uno hecho en C... en C vuela... entonces la mejora seria hacer algo mixto... donde aprovechar la velocidad del C y la flexibilidad y la simpleza de la programacion en bennu... entonces todo lo pesado se pasa a C y las partes donde se necesita modificar comportamientos especificos o donde se necesita poder meter mano facilmente para poder probar y ajustar se pone en scripting (BENNU!)...

esto me suena a deja vu...

sinceramente, es muy simple, pero para entenderlo deberian primero investigar otros productos de este estilo... y ver como se usa el scripting en juegos, por ejemplo, "vampire the mascarade"
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Octubre 24, 2009, 06:38:46 pm
lol

Veo que este hilo va a llevarnos tiempo... Por ahora Patonsky y yo estuvimos hablando de tener un juego COMPLETO embebido con Bennu, y desde C acceder al buffer de pantalla y mostrar los pixeles.

Las ventajas de esa idea es que seria posible tener una aplicacion C (Con Bennu por debajo) en una web y asi poder jugar a juegos Bennu desde la web... Un sueño.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 25, 2009, 02:42:17 pm
[...] y los sueños, sueños son.

La idea es un plugin cross-brownser que pueda ejecutar bennu...

A ver el thread de Bennu embebido en C, pensé en que si se lograba iniciar el modo gráfico desde éste, se podría intentar integrar en un plugin con NPAPI.

¿Se puede iniciar de alguna manera desde aqui o habría que tirar del codigo fuente (:-\)?
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Octubre 25, 2009, 04:52:38 pm
Ni idea de que es NPAPI patonsky...

Una duda sobre el funcionamiento de Bennu embebido y el modo grafico: ¿Alguien sabe si se podria hacer set_mode ( ) con Bennu embebido y acceder al buffer de pantalla ( file = 0 graph = -1 ) desde el otro lenguaje?

Por ejemplo con map_get_pixel obtener todos los pixels del buffer de pantalla y mostrarlos luego desde el otro lenguaje.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 25, 2009, 05:29:56 pm
NPAPI es una API de Mozzila para desarrollar plugins cross-browser.
Funciona en C/C++ y es compatible con casi todos los navegadores, exceptuando IExplore (aunque se puede adaptar al ActiveX de IE)
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 26, 2009, 08:30:59 am
Windgate, yo votaría por ver primero si podemos usar el modo gráfico original, y si no es posible, contemplar esa opción...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Octubre 26, 2009, 09:04:57 pm
Código: [Seleccionar]
Creo que actualmente solo puedes embeber la parte lógica de una función, es decir, no puedes usar control de dispositivos como teclado raton o pantalla.
Lo dijo DCelso y si lo dice DCelso me fio... Creo que la mejor opcion si quieres que Bennu lleve la parte grafica es acceder a su buffer de pantalla desde el otro lenguaje y mostrarlo desde el otro lenguaje tambien.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Octubre 26, 2009, 11:22:54 pm
no es que "actualmente"... es que el embebido no tiene sentido lo que quieren hacer, eso es el motor, no la maquina virtual... la idea de esto es embeber la maquina virtual, no el motor.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 27, 2009, 12:06:02 am
Exacto, cuando puse eso tenía intención de poner que no se podía ni se podrá por no tener sentido pero quise curarme en salud no fuera que me contradijeras Splinter :D.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 27, 2009, 12:13:02 am
Entonces, para el tema del plugin...

¿Podemos llegar a usarlo con este sistema añadiendo posibilidades, o habrá que estudiar todo el motor de Bennu? xD

EDIT: Supongo que después de esta decisión abriré un thread para tratar el plugin completamente por separado y discutir lo que pueda quedar por ahí...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Octubre 27, 2009, 01:23:10 am
a ver trato de explicarlo con un ejemplo mas familiar...

bgdi es un programa en C que tiene un motor que coordina/maneja eventos sean de teclados y video... y tambien tiene "embebida" la maquina virtual de bennu...

se entiende un poco mejor ahora?
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 27, 2009, 12:52:46 pm
Sí, más o menos...

pues nada, a por el código fuente se ha dicho xD
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: splinter_work en Octubre 27, 2009, 05:38:45 pm
a ver... aunque esto ya no tiene que ver con el tema original del post... (desde hace ya un tiempo)

antes de ver el codigo fuente, conoces el api del explorador que vas a usar como para integrarlo?
yo creo que se esta queriendo meter el chupete en nuca en vez de la boca...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: DCelso en Octubre 27, 2009, 07:27:08 pm
creo que quieren hacer algo al estilo aplet de JAVA, que es una aplicación visual hecha en JAVA incrustada en HTML. No es lo mismo que un sistema embebido pero es parecido :D
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: splinter_work en Octubre 27, 2009, 07:43:27 pm
pero no era para el firefox?

como sea, cada applet o plugin necesitan un api para interfacear con el el browser... primero hay que analizar que ofrece el api y luego ver como engancharlo...

pero si quieren ayuda al respecto, analicen el api de interfaz, luego hacen una breve (muy breve) introduccion de los mismos y ahi podremos ayudar... yo no tengo tiempo ahora de ponerme a analizar algo de ese estilo...

por favor, abran otro tema, adecuado a eso...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Octubre 27, 2009, 09:54:39 pm
La api está desarrollada por la fundación Mozzila, pero es cross-browser, funciona con casi todos los navegadores (Internet Explorer es la excepción xD)
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Octubre 27, 2009, 11:45:42 pm
Abre otro tema Patonsky1, tú que eres el que controla de HTML y esas cositas, además ahora me fijo que estamos en un hilo de Documentación y lo que estamos hablando debería ir en Proyectos (A largo plazo me temo :P).

Y bueno, dejemos este hilo para el Bennu embebido y documentación asociada, debo añadir que cuando estuvimos hablando de "incrustar" Bennu en HTML también estabamos embebidos, como Bennu xD
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Patonsky1 en Noviembre 05, 2009, 12:19:30 am
Volviendo al tema que tratábamos...

Lista de dudas...

Muchas gracias al que se digne a contestar a este pobre adolescente ávido de conocimientos xD
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Diciembre 19, 2010, 08:35:32 pm
Hola, saco a reflotar este tema porque creo que se le puede sacar bastante partido.

No sé si conocéis Unity3D, pero es un motor para diseño de videojuegos 3D que es la polla con cebolla: http://www.google.es/images?q=unity+3d&um=1&ie=UTF-8&source=og&sa=N&hl=es&tab=wi&biw=1366&bih=662 (http://www.google.es/images?q=unity+3d&um=1&ie=UTF-8&source=og&sa=N&hl=es&tab=wi&biw=1366&bih=662)

El caso es que Unity3D usa varios lenguajes de scripting (Javascript, C# y Boo). Estoy usando los dos primeros para según qué cosas, y me preguntaba si podría embeberse Bennu de alguna manera. Aquí os dejo un ejemplo de Javascript para crear un cubo de elementos físicos:

Código: [Seleccionar]
var num_stones_x : int = 10; // Number of stones in X axis
var num_stones_y : int = 10; // Number of stones in Y axis
var num_stones_z : int = 10; // Number of stones in Z axis

var offset : int = 10;
var x_start : int = 50;
var y_start : int = 70;
var z_start : int = 50;

var stone : GameObject; // Instances every pyramid stone

function Start ( ) {

var x_count : int = num_stones_x;
var y_count : int = num_stones_y;
var z_count : int = num_stones_z;

// Creates pyramid
for ( x_count = 1; x_count <= num_stones_x; x_count++ ) {
for ( y_count = 1; y_count <= num_stones_y; y_count++ ) {
for ( z_count = 1; z_count <= num_stones_z; z_count++ ) {

// Instanciate each stones
var clone : GameObject;

transform.position.x = x_count * offset + x_start;
transform.position.y = y_count * offset + y_start;
transform.position.z = z_count * offset + z_start;

clone = Instantiate ( stone , transform.position , transform.rotation );
/*clone.transform.localScale.x = 1 + Random.value - 0.5;
clone.transform.localScale.y = 1 + Random.value - 0.5;
clone.transform.localScale.z = 1 + Random.value - 0.5;*/

}
}
}
}

Como siempre, grasias de hantebraso, hoygan.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Diciembre 19, 2010, 08:44:44 pm
seguro se puede... seria bueno ver el api... pero seguro que con este hilo te podes guiar como hacerlo.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Diciembre 20, 2010, 11:11:33 am
He estado mirando el hilo, pero el ejemplo del primer post está caducado, ¿Podés volver a subirlo? :D

Sobre la API, acá te dejo el link: http://unity3d.com/support/documentation/ScriptReference/index.html

Toda la documentación viene para Javascript, C# y Boo, con Javascript no puede hacerse todo, así que hay que usar obligatoriamente C# para algunas cosas, sobre todo la GUI.

Por cierto, Unity3D es bastante sencillo y usable, me recuerda a mis inicios con Bennu y sus complicaciones iniciales que vas resolviendo poco a poco. Combinar Unity3D y Bennu sería glorioso :D
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: josebita en Diciembre 20, 2010, 11:51:06 am
La verdad es que sería genial, ¿alguien se anima?.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: FreeYourMind en Diciembre 20, 2010, 12:21:31 pm
josebita y Windgate dadle fuerte  ;D
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Diciembre 20, 2010, 02:18:49 pm
He estado mirando el hilo, pero el ejemplo del primer post está caducado, ¿Podés volver a subirlo? :D

Sobre la API, acá te dejo el link: http://unity3d.com/support/documentation/ScriptReference/index.html

Toda la documentación viene para Javascript, C# y Boo, con Javascript no puede hacerse todo, así que hay que usar obligatoriamente C# para algunas cosas, sobre todo la GUI.

Por cierto, Unity3D es bastante sencillo y usable, me recuerda a mis inicios con Bennu y sus complicaciones iniciales que vas resolviendo poco a poco. Combinar Unity3D y Bennu sería glorioso :D

tengo que buscar a ver si aun lo tengo... sino armar uno y de paso actualizarlo.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Diciembre 23, 2010, 09:41:25 pm
estoy viendo esto del unity3d, es codigo cerrado esto? porque si lo es, a menos que lo haga la gente del producto, dudo que se pueda hacer... no creo que sea un scripting llamando a programas externos.

Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: josebita en Diciembre 23, 2010, 09:53:10 pm
Y además, todos los lenguajes corren sobre Mono. Creo que no hay nada que hacer, no.
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Diciembre 23, 2010, 10:06:56 pm
ouch...

Sí, es código cerrado y es de pago, pero tiene una versión gratuita con efectos de render más limitados... Una lástima... De todas formas ya estoy adaptándome a Javascript y C#, al menos lo hemos intentado xD
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Diciembre 23, 2010, 10:33:33 pm
ouch...

Sí, es código cerrado y es de pago, pero tiene una versión gratuita con efectos de render más limitados... Una lástima... De todas formas ya estoy adaptándome a Javascript y C#, al menos lo hemos intentado xD

una pena que dejes de programar en bennugd... pero bueno...
Título: Re: [DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Windgate en Diciembre 24, 2010, 02:13:33 am
Sigo programando con BennuGD, de hecho tengo por ahí el Bullet pendiente de arreglarle algunos bugs que salieron con el modo capturar la bandera e intentar hacer el port para Canoo.

Lo que es bastante tedioso es lo de cambiar entre lenguajes, me paso todo el tiempo mirando la API y cuando me pongo con Bennu hay veces que hasta me dejo un BEGIN y cosas así xD
Título: Re:[DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: warrior_rockk en Febrero 17, 2013, 03:57:45 pm
Rescatando el topic, un poco de offtopic pero que tiene mucho que ver. Aquí se esta hablando de usar bennu como lenguaje embebido en otro lenguaje, pero ¿y al revés? ¿Y utilizar un lenguaje de script en (en texto plano) embebido en Bennu para poder modificar partes del código sin compilar? Sería muy útil para modificar el comportamiento de un enemigo y ver el resultado al momento en la pantalla. Imagino que hay que currárselo a mano (lenguaje,interprete,sintaxis...), pero, ¿hay alguien que haya investigado ya este tema o ha hecho algunas pruebas?
Título: Re:[DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: Transdiv en Febrero 17, 2013, 04:34:37 pm
Me imagino que usar el LUA y amarrarlo al interprete BGDI debe ser bastante posible ya que el Bennu de alguna manera ya hace posible esta exposicion de sus procedimientos en el momento que permite crear las DLLs externas. Lo que no estoy 100% seguro es si valdria la pena hacerlo, ya que Bennu de por si es ya un lenguaje de alto nivel (Por lo menos si lo comparas con el C/C++).

Título: Re:[DEV] Bennu como scripting embebido (Ejemplo)
Publicado por: SplinterGU en Febrero 17, 2013, 06:50:57 pm
si, quizas en ese caso seria conveniente usar directamente LUA o algun otro lenguaje de scripting... o darle la posibilidad a bennugd de compilar en runtime... aunque realmente podria hacerse lo que hizo miriam hace un tiempo que era sacar la salida de compilacion a un pipe y mandar eso directamente al bgdi, eso combinado con las librerias bennugd, podrias tranquilamente tener las parte que no queres se cambie en librerias y la parte que si queres se cambie en .prg, y al correr el juego, este compilaria los fuentes + las libs y correria el dcb nuevo.