[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

He empezado a observar que el rendimiento en Bennu 3D se ve muy perjudicado cuando hay 100 o más modelos 3D cargados. Comencé creando una pequeña simulación de combate entre 2 escuadrones de droides de Star Wars, y aunque con 100 modelos se mantiene un rendimiento "casi" aceptable observo que es necesario mejorarlo.

El "juego" es automático, los 2 escuadrones se enfrentan hasta que uno de los 2 muere:


Falta por hacer:

- Mantener una matriz a modo de "tablero" para que se puedan gestionar únicamente los modelos que son visibles en la pantalla, además de poder hacer la IA más sencilla y funcional, ya que actualmente seleccionan objetivo de manera aleatoria.

- Añadir opciones, ya que hay varios modelos de droide, varias armas... Se podrían hacer tropas muy diversas xD

- Alguna cosa más sin duda, apenas llevo 2 días de desarrollo.

Aquí la descarga directa, como siempre:

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

La momia que fuma

Rayos truenos y centellitas, que diría Flanders, esta cojonudo!

Windgate

Gracias Momia, pero la eficiencia... Si alguien me diese alguna sugerencia o indicación para la eficiencia... Tengo varias cosas pendientes de introducir, pero veo mis juegos de estrategia con 300 modelos activos y un rendimiento "decente" y siento impotencia...
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

blostec

Uoouu! Windgate cada día me sorprendes más, sigue con el proyecto que promete mucho. Karma wins!

Windgate

Gracias Blostec, he estado con el tema de la eficiencia descargando/recargando modelos según sean o no visibles en pantalla... El problema es peludo ya que esos modelos tienen modelos "hijo" como las armas, pero sigo en ello, creo que por ahí tengo la 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

Prg

este tema me interesa a mi también amigo, cuando tengas la solución, cuéntanosla... por lo pronto karma++
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

syous

Un Saludo
EL dia que la humanidad aprenda a mirar y sentir con los ojos del alma, recuperara su humanidad
http://sodonline.net/
http://darknessage.ayudaprogramacion.net/
http://www.ayudaprogramacion.net/

Proyecto: MMORPG
Completado: 2%
Estado: En Desarrollo...

Windgate

Pues no me gusta Star Wars francamente, pero estos droides con cara de pene me hicieron mucha gracia.

Si alguien sabe dónde puedo conseguir el modelo animado del AT-AT (El mostrenco robótico de 4 patas de la peli) que me lo pase.
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

laghengar

No se, yo creo que está bastante bien, ten en cuenta que los modelos están muy definidos y que yo también tengo ralentizaciones en juegos que usan más o menos el mismo número de personajes en acción. Ya se que estos juegos tienen bastantes más cosas para procesar , pero el rendimiento me parece bueno.
!!!Blender Blender Blender yuhuuuuuuu¡¡¡ novato o_O

Drumpi

Una pregunta ¿no se supone que es cosa del motor el ahorrarse cálculos de renderizado si el personaje sale de la zona visible? y no hablo sólo de los márgenes, sino de ser tapado por una montaña, etc. Obviamente los cálculos de posición y demás si deben hacerse.

Y como dige laghengar, están muy definidos, en juegos así masivos de gente como trucos que he visto se encuentra reducir la resolución o reducir los polígonos. Si no, un truco que se me ocurre es que uses modelos de muy baja poligonalización para los droides más alejados, así no consumirán tantos recursos y apenas se notará.

Aparte de eso, tiene buena pinta, parece que vas a hacer un "total war" ;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

El motor se ocupa de no hacer el render de lo que no está en pantalla, pero el modelo sigue cargado en memoria, creo que descargarlo y recargarlo podría servir... Cuestión de poner una CONST para indicar si debe hacerse o no, y calcular el rendimiento en cada caso.

En cuanto a usar modelos de más baja densidad poligonal el problema es conseguirlos... Un reductor de densidad de modelos .md2 automático me vendría de lujo, pero dudo que exista, y yo de modelado 3D apenas sé nada...

Para el tema de eficiencia tengo una duda. Para cada droide que veis en el juego anterior tengo que cargar el modelo .md2 una y otra vez, con el consiguiente consumo extra de memoria, ¿No sería más eficiente cargar cada modelo una sóla vez y hacer uso de él tantas veces como se requiera de la misma manera que se hace con las texturas?

También quiero comprobar el uso que se hace de mi GPU, he oído que ahora mismo las GPU son multicore, hasta llegar a 200 cores, muy por encima de la CPU. Me gustaría saber el número de cores de la mía y comprobar el uso que hace Bennu 3D de ellos.

Me han hablado sobre ese tema de hyperrendimiento en GPUs y me han hablado de CUDA, aquí os dejo el link:

http://www.nvidia.com/object/cuda_home.html#

Ciertamente es complicadísimo, he descargado el "entorno" y no hay forma de hacerlo funcionar, con lo placentero que es entrar en Bennu y ver que puedes empezar directamente...

Me han hablado de que con un buen uso de los cores de la GPU es posible hacer threads y repartir el trabajo para conseguir trazado de rayos en tiempo real, con 1 sólo rebote de rayos por ahora, pero ya es algo.
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

l1nk3rn3l

si irrlicht no tiene algo asi, pero el grupo esta estudiando este tema
que es muy interesante...


inclusive se pueden usar mapeo sobre hardware que es guardar
la geometria en la tarjeta aceleradora estamos en ello..(modelos estaticos solo)

usar billboards sprites 3d en lugar de modelos , etc ,  es muy variada la solucion
bajamos el juego y lo estudiaremos..

muchas gracias

Drumpi

Sobre CUDA creo que debes olvidarte pero ya... a menos que estés buscando trabajo bien remunerado. Este verano se hizo un pequeño curso de mi universidad para tratar el tema de las tarjetas gráficas y la programación en CUDA, por lo visto permite programar directamente en el hardware el tema de dibujado 3D adaptado a las necesidades, lo cual se maximiza el rendimiento de dichas tarjetas.
Pero creo que está fuertemente ligado al HW, o no se yo, pero segun me han dicho, existen muy pocos programadores a este nivel, no se si porque no sale rentable o porque es complicado.

Vamos, que para el que apenas se defiende con C más vale que se olvide ^^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

@Drumpi: Sí, está ligado al HW, tú programas el pipeline de la tarjeta gráfica, he estado mirando su web y es HORRIBLE encontrar información sobre ello. Si encuentro algo interesante informaré por aquí.

@l1nk3rn3l: Gracias link, espero ansioso cualquier novedad, ¿El source de Bennu 3D está por ahí?, por el tema de recompilarlo con las DLL de las últimas RC, no es que controle mucho del tema, pero siempre viene bien saber donde están las cosas.
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

Si, en la firma de Splinter tienes el acceso al SVN: una pasadita con tortoise y fuentes listas ;)
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)