Simular el día y la noche en Bennu 3D

Started by Windgate, October 31, 2009, 04:36:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Windgate

Aquí os dejo un ejemplo sobre cómo simular el el día y la noche en Bennu 3D

DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/Kombat3D%200.0.2.zip

Comprobaréis que es un "juego" muy parecido al que he publicado con distintos ejemplos como poner armas a un modelo md2, posicionador 3D, etc. Es que estoy creando utilidades de interés general para Bennu 3D a medida que "intento" hacer un juego decente... Quizás termine basando el tutorial en él.

Me queda pendiente: Hacer que el día/noche vaya en función de la fecha del sistema, añadir tonos rojos en el atardecer... Se admiten sugerencias.

EDIT: Se me olvidaba, el día y la noche dura unos 10 segundos, paciencia y veréis el efecto.
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

FreeYourMind

Creo que serias el hombre que me enseñaras de una vez como utilizar Bennu3D, o sea, las ultimas versiones y que no den error de la dll desaparecida ;)

TRaFuGa

No había probado nada de Bennu3D hasta hoy, excelente trabajo (+++ karma!!!), pinta muy bien esto del 3D para Bennu...
PD-Podrias bajar la camara para acercarla más al personaje y darle más velocidad a su movimiento, se me hace eterno recorrer el escenario xDD
Texto que se mueve....

Windgate

@FreeYourMind: Con este juego puedes ejecutar usando el .bat, usa sus propias DLL así que podría servirte de plantilla para programar cualquier cosa. En cualquier caso, con las DLL del último Bennupack también funciona perfectamente Bennu3D.

@TRaFuGa: Para bajar la cámara puedes usar la ruleta del ratón si mal no recuerdo... Los controles son muy parecidos a World of Warcraft, con clic derecho pretado también puedes girar y con clic izquierdo y derecho a la vez puedes andar xD

Ahora mismo estoy a punto de conseguir que el día y la noche sea en función de la hora del sistema, aunque el problema de obtener la hora y los minutos y finalmente obtener la luz asociada a la hora ha sido más peludo de lo que esperaba.
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

¡Conseguido! El día y la noche va en función de la fecha del sistema, tanto la iluminación como la niebla oscura que se produce cuando anochece. La precisión y el efecto me ha dejado bastante satisfecho, aquí os dejo una captura:


Y aquí la descarga de la nueva versión con diversas mejoras.

DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/Kombat3D%200.1.3.zip

Os agradecería si me confirmáis que el efecto de día/noche parece correcto para la hora de vuestros respectivos países. Los cálculos  que he realizado están en /prg/tiempo.prg

Ahora creo que voy a meter lluvia, aunque dudo si hacerlo superponiendo gráficos en 2D, usando pequeños modelos que caen del cielo o con emisores de partículas...
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

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

FreeYourMind

Si ya me fije :)
Una cosa,  sobre el tema de camára, es baseado en el irrlish no ?
Yo  pensaba que internamente trataba el tema de las colisiones con las paredes en la camára, o sea, que al navegar por el mapa, las paredes no se cortarian y dejarian ver otros pasillos o el fondo.
Esto se tiene que programar o el engine tiene funciones para ello ?

Windgate

Si la cámara es en primera persona es sencillo controlar las colisiones con el escenario para que la cámara no lo atraviese, en cambio si la cámara es en tercera persona es muy complicado, ya que el seguimiento es automático y si añades esa cámara a la lista de colisiones puede quedarse atascada...

Lo cierto es que el tema de la cámara en Bennu 3D no funciona demasiado bien... Quizás se pueda programar alguna solución para detectar si la cámara se quedó atascada y en ese caso volver a invocarla, pero sería complicado conseguir que funcionase bien.

Ahora mismo estaba programando el sol con un emisor de partículas gigante, también se posiciona correctamente en función de la fecha del sistema, os mantendré informados xD

Con la lluvia ha sido imposible, he hecho una gota en 3D pero meter la lluvia de modelos 3D satura la memoria... Habrá que buscar otra solución.
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

BoMbErLiNk

Esta interesante, siempre me fascino la campiña del Zelda OOT.

He visto que cambias los 3 componentes del RGB con la misma variable para hacerlo más claro o oscuro.
Has pensado en hacerlo por color independiente ? Para darle un tono anaranjado a la tarde, azul oscuro para la noche (luna llena), violeta al amanecer (con niebla más abundante)

Lo de la hora creo que no me funciona, quizas noto más niebla y el bitmap del fondo más oscuro, pero sigo viendo diferentes tonos de sombra proyectados en el escenario en el mismo angulo, nose si son preprocesados.

Windgate

Sí, había pensado en aportar tonos como dices, de hecho si saco un momento me pondré a ello.

Siento comunicar que la versión anterior tenía un bug al calcular la hora... Me ha tomado mucho tiempo y no doy con un método apropiado para obtener un tono de luz entre 0 y 255 a partir de la fecha del sistema, de manera que a las 12:00 PM tengamos 255 y a las 0:00 AM tengamos 0 de iluminación, si alguien puede aportar algo...

Aquí dejo la nueva versión con un escuadrón de enemigos para probar el rendimiento, el sol funciona y la iluminación en función de la hora ya debería funcionar sin problema, aunque se puede mejorar.

DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/Kombat3D%200.1.5.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

Prg

#10
suena muy bien :) revisando karma ++

a propósito, alguien sabe de las nuevas librerías 3d que serían compiladas para bennu el fin de semana?

edit.. wow, ¿cómo le haces para mover partículas al rededor del arma de uno de tus personajes? (¿cómo obtienes el punto sobre el cuál tienen que girar, y los ángulos para girarlas?)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Windgate

l1nk3rn3l habló de compilar las nuevas librerías la semana, pero aún no lo ha hecho, yo también estoy canino esperando, todos los días miro el hilo de Bennu 3D deseoso :P

Las partículas no las muevo sobre el arma, los modelos eran así... Con M8E_ADDCHILD se podría hacer un arreglo, pero el ángulo de giro no sería más que una aproximación.

Me alegro que te haya gustado, si tengo alguna duda te preguntaré a tí Prg, por ahora estaba intentando conseguir un mecanismo para acceder fácilmente al identificador de proceso a partir del identificador de modelo... He leído por el foro que tú usas LOCAL, no me parece mala idea por el momento pero sigo investigando...

Una duda: ¿Cómo hiciste para que las barras de energía de tu juego de magia se acortasen?
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

Prg

con este método podrás colocar una barra sobre un enemigo y mostrar la sangre que tiene.

[code language="bennu"]m8e_getposmodel(prota,&posl);   //tomas la posicion del modelo enemigo

      posl.y+=altura;        //altura a la que colocaras la barra
      M8E_GETPOS2DFROM3DPOS(posl,miposi);  //en miposi de tipo _pos2d guardas la proyeccion del posl
      
      M8E_GUImove(mibarra, miposi.x,miposi.y);  //imprimes la barra en pantalla sobre el enemigo
      M8E_GUIGETRECT(mibarra, &rect_zon);     //tomas la region del gráfico en una variable de tipo _TRect2D rect_zon;
      rect_zon.LowerRightCorner.x=miposi.x+vc_ener*ener;  //y calculas cuanto vas a mostrar de la barra (posicion x de la   barra)+(energía)*(rango de energía)/(energía_total) donde (rango de energía)=la medida de la barra de energía

      M8E_GUISETRECT(mibarra, &rect_zon);       //ahora aplicas los valores anteriores para mostrar la energía en la barra[/code]
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

FreeYourMind

Aprovecho para preguntar por algo que nunca hice, imaginando la respuesta.

Si bennu3d es basicamente utilizar aparte de bennu, los modulos del engine 3d, y todo es por software, se pueden ejecutar juegos de bennu3d en el port para Wiz ??

Tu ejemplo funcionaria en la Wiz ?

Si es afirmativo (que lo dudo) entonces es un pecado que no se haya informado mejor a los mortales :)

SplinterGU

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