[Juego] Legion3D, eficiencia en Bennu 3D para juego de estrategia

Started by Windgate, November 08, 2009, 02:07:42 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Windgate

Excelente l1nk3rn3l, lo de modelos con menos densidad lo dejo para más adelante, pero el límite de procesos es GRAN idea, karma up!!!

También tengo otro as bajo la manga, resulta que el M8E_INIT ( 4 ) que utilizo usa Direct3D9 para el render, y es MUCHO menos eficiente que M8E_INIT ( 5 ) que utiliza OpenGL, con eso se dobla el rendimiento o más, seguro, incluso no descarto que haga uso de ambos núcleos, lo iba a probar ahora mismo.

Sólo hay un problema, el driver de OpenGL no se me lleva NADA bien con los emisores de partículas, me salen cortados los gráficos de las partículas, ¿Sabes algo al respecto?

Por mi parte sigo investigando :P

EDIT: El rendimiento OpenGL VS Direct3D9 no se nota demasiado, el problema es que me limita la IA, son muchos cálculos y recorridos matriciales, tengo un proyecto similar para el concurso de Wiz (En 2D) y ocurre lo mismo, recorrer matrices a gran escala es megacostoso... No entiendo por qué tanto...
Gracias mil
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: l1nk3rn3l on November 23, 2009, 05:12:59 PM
HEMOS revisado el codigo , tenemos varias sugerencias:

usar modelos estaticos cuando sean demasiados..

no usar todo el procesador en todos al tiempo te adjuntamos 2 borradores de IA
que pueden servir

logramos obtener 20fps con 600 modelos estaticos ..

http://www.megaupload.com/?d=149UU51B


USAR UN VECTOR para reutilizar los disparos..
EJEMPLO :

     al comienzo cargar los modelos del disparo
   struct
     modelo[n]
     ocupado
   end

     cuando hay un disparo usar una variable disparo que recorra
     el vector , iddisparo++  si la posicion esta ocupada entonces no dispara ese intento
cuando llega iddisparo al final del vector otra vez en cero.

     se le asigna un animador para que la bala recorra sola la trayectoria
M8E_ADDANIMLINE

     cuando hay colision se remueve el animador de la bala
M8E_MODELREMOVEANIM(int model)


    de pronto adicionarle un animador que se destruya cuando pase un determinado tiempo , ejemplo 1s
M8E_ADDANIMDELETE(int model,int timems)


pronto  habra una funcion clone.. para clonar modelos





leccion del especialista... no queda otra... karma++
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: Windgate on November 23, 2009, 07:29:47 PM
Excelente l1nk3rn3l, lo de modelos con menos densidad lo dejo para más adelante, pero el límite de procesos es GRAN idea, karma up!!!

También tengo otro as bajo la manga, resulta que el M8E_INIT ( 4 ) que utilizo usa Direct3D9 para el render, y es MUCHO menos eficiente que M8E_INIT ( 5 ) que utiliza OpenGL, con eso se dobla el rendimiento o más, seguro, incluso no descarto que haga uso de ambos núcleos, lo iba a probar ahora mismo.

Sólo hay un problema, el driver de OpenGL no se me lleva NADA bien con los emisores de partículas, me salen cortados los gráficos de las partículas, ¿Sabes algo al respecto?

Por mi parte sigo investigando :P

EDIT: El rendimiento OpenGL VS Direct3D9 no se nota demasiado, el problema es que me limita la IA, son muchos cálculos y recorridos matriciales, tengo un proyecto similar para el concurso de Wiz (En 2D) y ocurre lo mismo, recorrer matrices a gran escala es megacostoso... No entiendo por qué tanto...
Gracias mil

cuidado esto en la wiz... voy a probar tu demo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Gracias Splinter, de todas formas en mi demo falta pulir la eficiencia, ahí todos los soldados empiezan barriendo el escenario en busca de objetivos, pienso hacerlo mucho más reposado: Se quedan quietos, van mirando casillas, pillan un objetivo, lo atacan, cuando muere se quedan buscando otro objetivo...

Si quieres probar la Wiz a fondo pulsa la tecla N y verás salir una tropa aleatoria en cada equipo por cada FRAME, me satura un core duo así que prepara el hielo par la Wiz ;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

SplinterGU

He logrado probarlo, la version 2.0 va muy rapido, no se si tiene la misma cantidad de droids que las versiones anteriores, pero estable en 60fps

La de l1nk3rn3l no me funciona, se queda con la pantalla negra, lo mismo me paso con algunas de las anteriores, creo que la 0.0.2 o algo asi...

Otro detalle, se ve todo muy oscuro... apenas se ve...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Se ve oscuro porque va en tiempo real, esto es, es de día o de noche según la hora de tu sistema :D

Aunque alguna versión por ahí tenía simplemente el tiempo acelerado y si esperas unos segundos va amaneciendo, tú fíjate en los números arriba a la izquierda, que te pone la hora, si es la misma de tu sistema es que va en tiempo real, anda que no me costó hacerlo, pero tengo un módulo para la posteridad :P
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