[DEV] Bennu como scripting embebido (Ejemplo)

Started by SplinterGU, August 10, 2008, 12:34:22 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Windgate

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

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:

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.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

seguro se puede... seria bueno ver el api... pero seguro que con este hilo te podes guiar como hacerlo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

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
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

josebita

La verdad es que sería genial, ¿alguien se anima?.

FreeYourMind


SplinterGU

Quote from: Windgate on December 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

tengo que buscar a ver si aun lo tengo... sino armar uno y de paso actualizarlo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

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.

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

josebita

Y además, todos los lenguajes corren sobre Mono. Creo que no hay nada que hacer, no.

Windgate

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
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

SplinterGU

Quote from: Windgate on December 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

una pena que dejes de programar en bennugd... pero bueno...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

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
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

warrior_rockk

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?

Transdiv

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++).


SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2