[Extensión] 3Dit, programar con Bennu 3D usando únicamente las LOCAL de Bennu 2D

Started by Windgate, February 02, 2010, 09:10:21 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Windgate

Oh, Bennu3D debió ser una .dll desde el principio... Malditos errores de base que se arrastran hasta el infinito y más allá... Pensaré lo de la .dll, aunque al hacer uso de las funciones del m8ee.h, ¿Será posible invocarlas desde C para hacer la .dll?, ten en cuenta que lo que hago es enmascarar las funciones de Bennu 3D dejando algunos parámetros bizarros como constantes de 3Dit y/o asociando varias para hacer una función más sencilla de usar.

Y Prg: Te acabas de ganar un karma amigo, el parámetro que me dices que debe ser FALSE se llama glueEnable y tenía pensado que indicaba si el personaje debía quedarse pegado o bien deslizarse por la pendiente... Mil gracias de verdad...
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

no, lo que digo es que bennu3d debio ser desde siempre con variables locales y orientado a procesos...

eso es lo que me refiero... bennu3d siempre fue una dll...

lo que digo es que ese enmascaramiento, hay que hacerlo desde C... pero, como nunca tuve tiempo de meterme a trastear con el 3D y que siempre que pregunte nadie me supo responder... ahora tu lo has hecho, con esto has escrito a alto nivel lo que deberia ser la capa de bajo nivel...

sigue con eso, esta excelente, que luego lo podemos mejorar con C... pero necesitamos (yo) saber como manejar el API de bennu3D, cosas que tu estas haciendo a la perfeccion...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Hay algunas funciones que enmascaro y son ultra-mega-simples, por ejemplo:

FUNCTION int load_model ( string path )
BEGIN
   RETURN M8E_LOADANIMODEL ( path )
END

¿Se podría empezar por ahí?, ¿Usas CodeBlocks?, con CodeBlocks sé comenzar un proyecto para hacer una .dll, pero lo que me resulta peludo (como a muchos) es importar la gran cantidad de dependencias de los paquetes de Bennu (Que si el sdl, que si zlib, que si otros tantos que puedes descargar de mil sitios y hay distintas versiones...).

Me gustaría mucho hacerlo, por ahora he descargado las fuentes de Bennu 3D de la web de l1nk3rn3l, es un proyecto CodeBlocks en el .cpp principal reconozco BASTANTES cosas, ¿Crees que se podría partir de ahí?
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

tu solo encargate de seguir con este proyecto, yo con tiempo pondre mi granito de arena y lo convertire a C, con makefiles como Dios manda.

CodeBlocks es para las niñas... :D
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

Yo recomendaría que fuera linkernel quien lo portara (o remaketara o como se diga) ya que es el que conoce a la perfección la librería 3d :D. O al menos conteis con él :D.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Windgate

Jurl, uso CodeBlocks, he probado con otros entornos y suelo terminar teniendo más errores que líneas de código :S ok, sigo con el 3Dit, hay un puñado de cosas más que quiero meterle.

Sí que contaríamos con l1nk, por supuesto, aunque está complicado encontrarlo disponible últimamente :( sobre conocer la librería: Ayer mismo sin ir más lejos descubrí gracias a Prg que un parámetro de la función de colisiones con el terreno no tenía el uso que yo pensaba 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

vamos que hace años que le vengo diciendo a l1nk3rn3l que haga un modulo de esta forma... quizas por falto de tiempo o por rendimiento, no tenemos un bennu3d con esta orientacion...

pero si Windgate lo hizo (y funciona), creo que se puede hacer... para este modulo en C, con lo que windgate haga es mas que suficiente de conocimientos sobre la lib, esto no va a quitar que se sigan empleando comandos bennu3d, pero gran parte estara orientada a procesos... lo mas importantes para esto es saber como usar los callbacks de manera eficiente, para que el engine se integre, analice y renderice sin tener que hacer un M8_RENDER o lo que sea, que lo haga automatico, ante cambios, y sin que el usuario se tenga que preocupar... eso es lo que mas atencion debe prestarse en el momento de pasarlo a C...

Y ni hablar que hay que deshabilitar cosas de BennuGD para obtener el maximo rendimiento.

Por otro lado, todas las libs usadas en Bennu3D son portables 100%? en que plataformas las tenemos disponibles?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

El M8E_RENDER se realiza una vez por FRAME, ahora mismo la función config_video ( ) se encarga de mantener ese bucle, por lo que si inicializas el video te despreocupas de todo y sólo tienes que poner modelos en pantalla.

Ahora mismo Bennu3D está en Windows y hay una versión para Linux que no he podido probar ya que soy esclavo de un Windows 7... Estoy en vías de tener un pendrive con Ubuntu y Bennu, con eso podría verificar si está disponible y tiene la misma funcionalidad que la versión de Windows.

PD: Ya hay salto que funciona MARAVILLOSAMENTE, y las locales size_x, size_y, size_z que se comportan como en 2D, valen 100 por defecto y en el primer momento que se usa una de ellas se ignora size, que es heredado por las demás. En breve habrá angle_x, angle_y, angle_z de la misma forma, con una función advance3d que se encargará de tener en cuenta el avance en todos los ejes, será delicioso para juegos de aviones donde las rotaciones pueden ser diversas.
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

Drumpi

Juer, hace un par de días me dio por pensar en hacer un Kario, y cada vez que te leo me dan más ganas ¡no me tortures! ;D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

Aquí la nueva versión con salto y size, size_x, size_y, size_z funcionales:

DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/3Dit/3Dit%200.1.5.zip

Ojalá a alguien le apetezca probar el control dinámico de la distancia de render en función del fps, que se ajusta automáticamente para que no baje de 50fps... Estoy por hacer como con el propio Bennu3D varios TEST para que se vea cada cosa por separado 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

Windgate

Nueva versión, tras varias pruebas de rendimiento y discusiones con SplinterGU queda determinado que el número de subprocesos no afecta al rendimiento NADA. Sólo os digo que los proyectos de Bennu 3D que estoy empezando los estoy haciendo partiendo de esta plantilla, es la polla con cebolla.

Aquí os dejo la última versión, tiene un programa de prueba sin mucha complicación, con gestión de movimiento, rotación, animación y colisiones con un mapa.

DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/3Dit/3Dit%200.2.0%20test.zip

Como novedad principal, ahora hay unas LOCAL llamadas position, rotation y scale, que son structs con las componentes x,y,z, de tipo float, que afectan a la posición, rotación y tamaño en 3 dimensiones.

También un nuevo proceso mouse_gui ( ) que pone el gráfico que pases como parámetro como ratón en la GUI.
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

Windgate

Numerosas mejoras y cambios, toda una maravilla para todo aquél que quiera introducirse en el diseño de videojuegos en 3D, hasta mis alumnos más jóvenes han conseguido pasarse de 2D a 3D de forma casi inmediata.

Dejo aquí la última versión, numerosos cambios y mejoras:

- Funciones para avanzar, desplazarse lateralmente, subir y bajar sea cual sea la rotación 3D del proceso.
- Sonidos con volumen variable según la distancia.
- Clonado de modelos para evitar acceso a disco.
- Documentación actualizada y ampliada.

Modificaciones en progreso:

- Una variable como ctype para indicar si el posicionamiento/rotación es relativo al mundo o al modelo.
- Gestión hiper-fácil de la física de Bullet.
- Terrenos tileados.
- Introducirlo adecuadamente en el motor de Bennu 2.0 como algo definitivo :D

DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/3Dit/3Dit%200.3.1.zip
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


Drumpi

Quote from: Windgate on May 03, 2010, 12:08:17 PM
- Introducirlo adecuadamente en el motor de Bennu 2.0 como algo definitivo :D

Espero ansioso ese día, ya sea introducirlo en Bennu o en Bennu3D.
Y no te quepa duda que el día que me pase al 3D usaré este "motor", y no creo que falte mucho, porque todos los usos que se me ocurren del wiimote implican movimiento en el espacio tridimensional ^^U
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Windgate

Posicionamiento relativo y absoluto 100% funcionando, lo que permite movimiento y rotaciones libres fácilmente, para haceros una idea se puede programar una flecha que recorra una parábola, un pájaro, un avión con giros de 360 grados...

Etiquetada como versión 0.4 ya que el cambio es significativo.

Otra mejora interesante, aunque no está totalmente acabada, es la inclusión de varias GLOBAL que almacenan colores básicos (rojo, verde, cyan, blanco...) y se pueden pasar como parámetros a las funciones de escritura de textos.

También se ha mejorado un poco la documentación, todas las funciones disponibles están en /3dit/3dit_declare.prg

DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/3Dit/3Dit%200.4.0.zip
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