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:
(http://trinit.es/images/Bennugd/Legion3D/08.11.09%2014.29.jpg)
(http://trinit.es/images/Bennugd/Legion3D/08.11.09%2014.31.jpg)
(http://trinit.es/images/Bennugd/Legion3D/08.11.09%2014.38.jpg)
(http://trinit.es/images/Bennugd/Legion3D/08.11.09%2014.51.jpg)
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
Rayos truenos y centellitas, que diría Flanders, esta cojonudo!
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...
Uoouu! Windgate cada día me sorprendes más, sigue con el proyecto que promete mucho. Karma wins!
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.
este tema me interesa a mi también amigo, cuando tengas la solución, cuéntanosla... por lo pronto karma++
;D brillante karma ++
no se nota que te gusta starwars
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.
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.
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
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.
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
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
@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.
Si, en la firma de Splinter tienes el acceso al SVN: una pasadita con tortoise y fuentes listas ;)
Oh, pensaba que Bennu 3D era ajeno al SVN, gracias Drumpi.
También tenía una consulta que me temo que sólo l1nk3rn3l podría decirme... Una vez añades un modelo a una lista de colisiones, ¿Hay alguna forma de eliminarlo de ella? ¿O al eliminar el modelo se elimina automáticamente de las listas de colisiones? ¿O ninguna de las 2 cosas xD?
Tengo un error de ejecución por ahí y creo que la eliminación de modelos que permanecen en la lista de colisiones podría ser el problema...
debe ser que tienes eliminado 2 veces en el mismo codigo del modelo..
modelremove solo usalo una vez... por ahi mire en onexit de tu codigo ,
esta genial para robartelo... el juego...
ARG!!!
Lo comprobaré... Creo que tienes razón, algunas veces hago un remove al matar al droide, pero el ONEXIT por su parte hace el otro remove... En la versión que tengo aquí subida no se produce el error de ejecución pero puede que el problema tenga que ver con lo que dices.
En cualquier caso, ¿Sabrías decirme si el remove elimina el modelo de las listas de colisiones?
Por supuesto el juego róbalo y haz lo que quieras de él, no hay proyecto que no comporta al 101%, incluso me pena el tema del concurso por no poder dejar compartido un proyecto desde el principio ;)
Karma++ por tu supervisión, aclaración y forma de ser l1nk
Windgate: Ah, pensé que habías dicho Bennu a secas, el Bennu 3d dudo que esté en el SVN, eso lo sabe l1nk3rn3l y los que lo han hecho.
:'(
Wind, un jueguecico tipo aoe (en vista de pájaro) con estos androides (y en varios niveles, por ejemplo en tres colores diferentes), poder seleccionarlos con el ratón uno a uno o en grupo, darles órdener de mover aqui o atacar allá y usando la mod_espeak para que digan "si señor", "como mande", "a sus órdenes", "entendido", etc molaría taco y como misión pues destruir una base enemiga, no muy grande :D.
Puedes usar los modificadores de voz para caracterizar a cada uno de los robots de forma independiente para cada color y todo.
Gran idea DCelso, no lo había pensado xDDD
La idea es eso, hacer un juego de estrategia, por ahora estoy trabajando en el tablero de juego y lo primero que necesitaba es un grid para comprobar que cada droide se encuentra en la celda correcta y ese tipo de cosas. Había empezado a hacer un grid con "balizas" en 3D, pero había 100x100 balizas y consumía más el grid que el juego en sí xD
Así que he hecho un grid en 2D, que a partir de la posición 3D de las balizas obtiene la posición 2D que le corresponde en pantalla y si es visible en pantalla pone un dibujito en la GUI. El rendimiento es :-*
Aquí la captura del grid:
(http://trinit.es/images/Bennugd/Legion3D/11.11.09%20grid2d.jpg)
EDIT: Por si alguien puede ayudarme: Actualmente cuando el cursor se posiciona sobre un modelo obtiene su identificador de modelo, pero necesito obtener el identificador de proceso asociado al modelo. La solución fácil es tener un vector de pares id_modelo/id_proceso, la solución buena es tener una lista dinámica y la solución óptima tener un árbol...
¿Alguien puede aportar algo en ese sentido?
podrias tener un vector de n datos y ordenado por el campo idmodelo..
asi buscar con quicksort o otra busqueda sera eficiente..
pero debe estar ordenado... cada vez que se adiciona un elemento..
struct modelos[100]
idmodelo;
idproceso;
end;
la otra solucion seria tener un chequeo en el proceso del modelo
y tendria una variable local llamada idmodelo
entonces el chekaria si idmodelo(vlocal) = modeloseleccionado(vglobal) ...
entonces usaria el id del proceso para notificarlo al proceso ppal... mediante
una variable global llamada idprocesoseleccionado...
seria ineficiente esta 2da solucion ya que cada proceso , chekaria si la variable
corresponde , etc etc-..
no se me ocurre nada + ..
aunque lo que planteas es muy interesante asi que adicionare una variable
nueva a modelos , algo asi como el campo TAG en los formularios de visualbasic
asi guardabas informacion personal en cualquier objeto de un formulario,
esto seria ideal para los modelos asi manualmente guardarias el idproceso en este caso..
Un vector ordenado para hacer búsqueda dicotómica, un árbol dinámico para tener coste log(n) en la búsqueda, incluso he pensado en hacer un hasing, que es la solución "tosca" y eficiente... Pero ninguna solución me satisface a largo plazo.
Sería interesante lo que dices link, que el modelo cargado tuviese un TAG con la ID del proceso que lo ha cargado. Por ejemplo con M8E_GETLOADERID ( ) aplicado sobre el identificador de modelo te devuelve el identificador de proceso que lo cargó.
Eso sería :-* :-* :-*
En cuanto al Bennu 3D recompilado para las nuevas DLL de Bennu, hoy he echo un módulo para que mis soldaditos hablen así cuando los selecciono:
string voces [ 8 ] = ( "Sí, señor." , "A sus órdenes, señor." , "Oki doki." , "Cerrado y cargado." ,
"Preparado para la acción." , "Búsqueda y destrucción." , "Morid bastardos." , "No me toques los droid." );
Pero he descubierto que mod_espeak sólo funciona con las nuevas DLL de Bennu por lo que es actualmente incompatible con Bennu 3D :'(
Si puedo ayudarte en algo o si puedes pasarnos parte del trabajo para recompilarlo y/o pasarlo a una .so de Linux... Estoy totalmente absorbido con Bennu 3D, necesito más chicha :-X
También añado un truquito que os puede facilitar la obtención de modelos a partir del ID del proceso (Lo contrario a lo que propongo): Como MUCHOS procesos tienen un único modelo y su textura asociada, yo uso file para cargar el modelo y graph para cargar la textura (Tiene lógica ;)), incluso utilizo y para guardar su rotación en el eje y ya que la mayoría de los modelos sólo rotan en ese eje ;D
EDIT: Aquí os dejo la descarga de un programa de prueba para probar las voces de los droides, es cachondo :D
DESCARGAR: http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Prueba%20Espeak%20Legion3D.zip (http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Prueba%20Espeak%20Legion3D.zip)
EDIT 2: Y aquí la nueva versión del juego en 3D, sobre todo mejoras de eficiencia y nuevos módulos para el grid y obtener ids de proceso a partir de ids de modelo con el cursor, también he limpiado código y aligerado la descarga de 19 a 12Mb:
DESCARGAR: http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.0.2.zip (http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.0.2.zip)
EDIT 3: He implementado una forma "ineficiente" de obtener el ID de proceso asociado a un modelo, y a partir de él obtengo su posición y gracias a ello puedo poner sobre él un cursor de selección, entre otras muchas posibilidades que dejo para mañana:
(http://trinit.es/images/Bennugd/Legion3D/12.11.09%20selector.jpg)
Ésto dará juego, creedme...
EDIT 4: Mejora de rendimiento ENORME con la grid, es mejor posicionar TODOS los nuevos elementos de la grid a cada FRAME que destruirlos y crear sólo los necesarios.
EDIT 5: Versión nueva con la grid activa y eficiente, obtención de ids de procesos a partir de ids de modelo, selección de tropas y el selector se va cuando mueren, y el peso total se queda en 9Mb que es la mitad del peso inicial... Llevo +8 horas seguidas de droids, siento tanto edit pero aquí la última versión:
DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.0.3.zip (http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.0.3.zip)
Así se ve el grid a la luz de la luna según mi zona horaria, observo la captura anterior y veo que el tiempo pasa... Despacico...:
(http://trinit.es/images/Bennugd/Legion3D/12.11.09%20grid.jpg)
PD: Mañana por la mañana tenía día libre... ¿Qué haré el fin de semana?... Bennu es delito contra la salud pública :-[
Esta muy bueno Will Gates,digo Wingate... ^^ :P .... solo una cosa el hacer click en cualquier lugar que no sea un droide y de error con salida del juego ,¿es cosa mia o es la salida rapida?Lo digo porque me quedo con las ganas cada vez que quiero apuntar a un droide y se me rompe... :(
Es un error que ya tengo corregido ;)
Mañana subo nueva versión, con IA para que los droides busquen objetivo dentro de un radio :D
QuotePero he descubierto que mod_espeak sólo funciona con las nuevas DLL de Bennu por lo que es actualmente incompatible con Bennu 3D Llorar
creo que las nuevas librerías 3d corren bien con las nuevas de bennu, tengo instaladas en mi pc las nuevas (eso creo, a menos que me equivoque...) y corrí bien las librerías, intenta a ver si funciona :)
¿cómo le das un aspecto tan suave a la textura del piso?, se ve genial :) karma++ amigo
Con la r110 todo funciona a la perfección, ya lo tengo "migrado" xD
Quote¿cómo le das un aspecto tan suave a la textura del piso?
El terreno está escalado a 100 veces su tamaño, creo que al hacer eso la textura se escala con algún algoritmo que "difumina" y suaviza. Además la textura es de 512x256, que es "bastante" calidad.
Si quieres texturas y mapas de alturas para el terreno en la primera/segunda versión que colgué había 10 de cada, todas las texturas muy buenas, me las pasó un amigo que las usa para hacer diseño 3D realista de escenas.
Tremendísimas novedades, el juego ya tiene IA y los droides detectan objetivos dentro de un radio determinado del "tablero".
Hay algún bug puntual que tengo que pulir, pero con 6 legiones de 36 droides en distintos puntos del escenario el combate se desata con bastante inteligencia, ya que detectan objetivos en sus cercanías. He tenido que implementar un algoritmo de recorrido de una matriz en espiral, pensé en pediros ayuda pero al final lo resolví yo sólo (Ver /prg/droide.prg al final del módulo):P
También he metido un algoritmo sencillito para aumentar los tonos azules al amanecer y los rojos al atardecer, esto último lo he resuelto con un seno (Ver /prg/tiempo.prg)
Aquí os dejo la descarga para que me hagáis el favor de hacer pruebas, pide mucho PC ya que llega a haber 1000+ modelos 3D activos y el grid suponen 10000 elementos 2D en la GUI, aún así la eficiencia no me disgusta en absoluto.
DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.1.2.zip
EDIT: Aquí os dejo las capturas con la nueva IA, la eficiencia ha aumentado mucho, soporta combates de 900 vs 900 droides, a muy bajo FPS, pero voy mejorando la eficiencia y ahorrando cálculos, ahora mismo me limita la CPU
(http://trinit.es/images/Bennugd/Legion3D/13.11.09%20IA%20400v400%202.jpg)
(http://trinit.es/images/Bennugd/Legion3D/13.11.09%20IA%20400v400.jpg)
(http://trinit.es/images/Bennugd/Legion3D/13.11.09%20IA%20900v900%202.jpg)
(http://trinit.es/images/Bennugd/Legion3D/13.11.09%20IA%20900v900.jpg)
(http://trinit.es/images/Bennugd/Legion3D/13.11.09%20IA.jpg)
lastima que no me funciona con linux, pero se ve de putisima madre...
ahora, esto me recuerda que hay un juego como este... que es una demo de un motor 3d... donde son 4 bandos de robots, y uno maneja 1 de los bandos... y los mismos se van eliminando 1 a 1, hasta que queda un bando ganador... muy bueno...
Me falta lo de controlar a uno de los bandos. Es que tengo otras prioridades como hacer diferentes tipos de droide, tengo preparadas estadísticas para que tengan diferente rango de ataque, latencia de disparo, vida, daño, etc. Y miles de cosas más, estoy disfrutando este proyecto como nunca había disfrutado con Bennu.
No conocía el proyecto del que hablas, pero mi idea es hacer algo parecido.
Debo añadir que la eficiencia es un punto a mejorar y hago todo lo posible, si alguien tiene un PC del que se sienta "orgulloso" y quiera ponerlo a prueba que me pida una versión con 1500 vs 1500 droides que tengo por aquí, funciona a la perfección pero mi portátil se ve limitado por CPU el pobre.
EDIT: Yo soy partidario de dejar al menos 10Gb para una partición de Linux en cada PC, pero en tu caso Splinter también soy partidario de dejar al menos 10Gb para una partición de Windows en cada PC. Windows es una mierda, vale, pero incluso Bennu 3D está condicionado por ese maldito SO...
bueno no he visto los fuentes pero se puede optimizar asi:
no dedicarle todo el cpu a todos al tiempo
hay una tecnica que se llama time slicing o partir tiempos..
puedes hacer una variable global que se guarden el tiempo en milisegundos...
cada proceso al iniciar se reparte su tiempo al azar ...
asi en cada frame solo unos se ejecutan y otros no ..
un seudocodigo:
proceso lll(tiempoasignado)
loop
si tiempo(globalvar) >= tiempo(localvar)+tiempoasignado(localvar)
... ejecutar IA
... guardar tiempo(localvar) con nuevo tiempo(globalvar)
end
end
end
y para los wav solo ejecuta iniciando lo de modspeak y usa
los mismos ids generados de los wav en todo el codigo..
me imagino que eso haces?
estas ideas pueden ser utiles si te das cuenta que
fenix puede ejecutar varios frame en un segundo ..!!!
asi el ususario no sabra como repartes el tiempo!!!!
es usado por los juegos de hoy en dia (time slicing ) ya que no tenemos multicore!!
Buena idea l1nk3rn3l, a ver si lo pongo en práctica, karma++
Aquí dejo versión nueva, he implementado "objetivo de objetivo", para que al buscar objetivos, si se observa que un aliado ya tiene objetivo se toma ese y se evita seguir chequeando... Es más realista y eficiente, aunque la ejecución cambia mucho...
También he puesto distintas estadísticas de armas y de droides, ahora según el arma tienen distinto alcance, daño, etc. Y también hay droides más rápidos y lentos. También he mejorado el movimiento del droide, que ahora avanza hacia el objetivo sin "temblar".
También he aumentado el tamaño de los droides, ya que eran minúsculos.
Ahora mismo estoy implementando un disparo que en lugar de ir hacia el objetivo colisiona con lo primero que pilla, incluso puede hacerse fuego amigo o no.
Y lo que me queda por hacer xD
DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.1.3b.zip
PD: ¿Alguien tiene modelos de misiles y granadas para el lanzagrandas y lanzamisiles de los droides? La bolita roja no queda bien ya :(
EDIT: Versión de prueba, la cámara desde arriba y mejoras de eficiencia OBESAS, sólo para que podáis observar la detección de objetivos, os estimulará:
http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.1.4.zip
Aquí capturas:
(http://trinit.es/images/Bennugd/Legion3D/14.11.09%20demasiada%20calidad%20disparos.jpg)
(http://trinit.es/images/Bennugd/Legion3D/14.11.09%20lateral%201600v1600.jpg)
(http://trinit.es/images/Bennugd/Legion3D/14.11.09%20superior%201600v1600%203.jpg)
(http://trinit.es/images/Bennugd/Legion3D/14.11.09%20superior%201600v1600%202.jpg)
(http://trinit.es/images/Bennugd/Legion3D/14.11.09%20superior%201600v1600.jpg)
http://www.dukespana.com/downloads.php?mode=view&submode=jfduke&cat=23
FORMATOS md2 y md3
:o
Nueva versión, nuevas mejoras de eficiencia, eliminación de parámetros, variables y LOADs innecesario... Ahora los disparos explotan y lanzan humo al impactar, mayor explosión y más humo según el tamaño del disparo, los del lanzamisiles son bestias xD
DESCARGA: http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.1.4b.zip (http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.1.4b.zip)
Ahora estoy pillando modelos de misiles, ya que muchos disparos requieren un modelo propio, el misil llevará su colita de humo ::)
Veo que Google SketchUp tiene modelos MUY interesantes, pero para exportarlos a .3ds hay que comprar la versió PRO que vale 500$ :o
Así que estoy echando un vistazo a "otras posibilidades" como las que ofrecen aquí: http://www.taringa.net/posts/downloads/1809330/Google-Sketchup-Pro-7-+-Crack-+-Ruby-PlugIns.html
EDIT: Tengo lista la versión 0.2.0 con 7 escuadrones de droides de distintos equipos y cada uno de ellos con un arma, estoy puliendo algún detalle, la subo en un rato.
Juer, me voy dos días y montas una verbena que riete tu de los San Fermines :D :D :D
Está quedando de lujo... por lo que intuyo, es que hay muchas capturas que las has hecho de noche y sin visor nocturno (fade(0,100,0) ;D) y no se ve un gato negro en un pozo de petroleo :D
Por cierto ¿qué máquina tienes tu? no se lo que llamas estar "orgulloso", pero yo lo estoy para el trote que le meto ;)
El fin de emana programo de noche, por eso las capturas salen así de oscuras. No uso fade, la niebla y la iluminación se calculan en función de la fecha del sistema, sólo uso fade para los relámpagos, pero no se usan actualmente.
Tengo un portátil 2 cores 2Ghz, 2Gb RAM a 666Mhz y 256Mb de vídeo.
Para miles de droides no puedo con él, pero para 100-200 droides la cosa va sin problemas.
No has pillado la ironía del FADE ;D pónsela a un juego tal como te la he escrito, a ver qué pasa :P
Por lo que comentas, no tengo un PC del que estar "orgulloso", mi equipo es más o menos el mismo (bueno, 2400+ MHz por core con 1GB) pero de sobremesa, pero hasta el momento no he conseguido ponerlo a tope nunca (no tengo juegos de ámplios requisitos, sólo algún renderizado con brillo ocasional :P)
Oh, ahora entiendo lo del fade, curioso efecto xD
http://www.taringa.net/posts/downloads/3885592/Polygon-Cruncher-7_51+Crack-(Plugin-p_-Maya,-3ds-Max-y-L_).html
sirve para reducir poligonos te lo recomiendo con 3ds max..
claro que solo sirve para modelos estaticos...
Entiendo... Pero todos los modelos que uso son md2, intentaré sacarle alguna utilidad exportándolos a 3ds en formato estático y luego haciendo crunching a ver qué sale. Gracias l1nk.
un conversor y visor que es muy util:
http://digul.net/content/right-hemisphere-deep-exploration-cad-edition-v554
Acabo de probarlo y es fantástico. Una idea aproximada de lo que se puede hacer con bennu3D.
Me gusta la IA y la selección de cada droide esta bien implementada funciona muy bien.
El único pero es el rendimiento. No he pasado de 6fps.
¿Podrías sacar una versión con menos cantidad de droides?
Cielos, pensaba que ya había subido la versión con 7 equipos de droides (pequeños) y cada uno con un arma distinta. Suelen ganar siempre los francotiradores xD
http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D 0.2.0.zip (http://trinit.es/DescargaDirecta/Bennu3D/Legion3D/Legion3D%200.2.0.zip)
Puedes cambiar la cantidad de droides por escuadrón si en /prg/const.prg cambias el valor de las constantes _ESCUADRON_X y _ESCUADRON_Z
Ahora mismo tengo un error de ejecución sospechoso... Si alguien prueba la nueva versión y le sucede puede aportar algo al respecto, se lo agradecería mucho.
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
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
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++
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...
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
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...
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