Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Capacidad de la librería

Iniciado por NaSH, 11 de Marzo de 2011, 03:18:04 AM

« anterior - próximo »

NaSH

Bueno, qué tal. Estoy muy interesado en esta librería, tengo varias dudas pero voy a comenzar con una importante para mí, el resto las puedo descubrir investigando las funciones. Hace un tiempo hice un juego bastante bueno la verdad (teniendo en cuenta que nunca había hecho uno antes con VB6) de zombies, pero por supuesto sin utilizar ninguna librería gráfica como ésta, utilicé controles image de manera provisoria, es decir era principalmente para aprender un poco, probar las físicas y ese tipo de cosas.
Ahora pienso "transpasar" el mencionado juego con ésta librería. El punto es que, al ser un juego de zombies, los npcs zombies pueden llegar a ser muchos en la misma pantalla (200 por ejemplo, y además por supuesto sumado a las demás imágenes del juego y los sistemas de partículas), moviéndose con su propia IA al mismo tiempo. Y supongo que cada NPC sería un sprite nuevo. La librería soporta esa cantidad de sprites (y muchos más mejor) sin comenzar a "alentizarse" el juego?

Realmente tengo muchas ganas de empezar a pasarlo, mañana mismo empiezo, estoy seguro que voy a sacar algo bueno. Esta librería era la que buscaba, el resto son muy obsoletas o no tienen todas las características juntas, es decir talvez tienen transparencia y sólo eso, y DirectX directo no lo quería usar porque requiere más conocimiento aún y además tiene mucha dependencia en mi opinión.

Saludos y gracias por leer

Hechelion

Me ha quedado una duda, ¿Tenias 200 controles Image en pantalla antes?
200 controles imagen y no se te volvía lento?????, con animación y todo????  8o
Yo lo más que hice sin una librería fue implementar un "juego de la vida" con Vb6 y vamos a ver como se arrastraba y eso que la matriz no era muy grande.

Vamos al tema. La librería es bastante liviana dibujar 1 o un par de cientos de sprite no supone una gran carga para un equipo actual. Sobre los sistemas de particulas, IA, colisiones y etc. Depende más de como lo implementes y cuantos FPS quieras tener. Normalmente IA y sistemas de colisiones pueden variar mucho el rendimiento de un juego, en especial depende de como los programes, pero eso ya se sale de la librería.

200 unidades + terreno y deberías andar sin problema por las 80 a 100 FPS en un PC actual normal. Pero lo mejor que puedes hacer es una prueba de stress, haz un bucle que cree unos 300 zombies y revisas cuantos FPS te tira, pero como te decía la librería es bastante ligera.


[EX3]

Buenas, NaSH :)

Pues como ha comentado nuestro compañero Hechelion no deberías preocuparte por tema gráfico ya que 200 gráficos, aplicándole incluso efectos y transformaciones, podrías dibujarlos sin mucho coste de rendimiento, y como el dice, haz la prueba y mira a ver cuantos gráficos puedes dibujar en pantalla sin bajar de los 30fps (que seria el limite aceptable para que se vea fluido el juego) para hacerte una idea en la practica.

Cita de: NaSH en 11 de Marzo de 2011, 03:18:04 AM
Realmente tengo muchas ganas de empezar a pasarlo, mañana mismo empiezo, estoy seguro que voy a sacar algo bueno. Esta librería era la que buscaba, el resto son muy obsoletas o no tienen todas las características juntas, es decir talvez tienen transparencia y sólo eso, y DirectX directo no lo quería usar porque requiere más conocimiento aún y además tiene mucha dependencia en mi opinión.
Hombre, lo único malo de esta librería frente a otras similares que hay por ahí es que no ofrece mecanismos ni herramientas propias para gestionar animaciones, particulas muchas otras funcionalidades mas típicas de un motor y que tendrás que programarte tu mismo. dx_lib32 realmente solo cumple el objetivo de abstraerte de DirectX y ciertas tareas tediosas y darte algunas funcionalidades base y auxiliares para desarrollar encima lo que necesites pero vamos, con poco que hagas tienes resultados en poco tiempo, lo cual incluso para prototipar resulta viable :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

NaSH

#3
Bueno planeaba que fuera a 50 FPS mas o menos que es a lo que funciona un juego similar al que planeo hacer, ahora voy a realizar la prueba con muchos sprites aplicàndole el timer de la IA que tenìa previamente a ver que pasa como me recomendaron.

Cita de: Hechelion en 11 de Marzo de 2011, 06:54:49 AM
Me ha quedado una duda, ¿Tenias 200 controles Image en pantalla antes?
200 controles imagen y no se te volvía lento?????, con animación y todo????

Creo que exagerè un poco  ::), pero por ahì de los 50 iba bien, por supuesto que le agregaba una pieza màs y se saturaba todo  >.<.

Cita de: [EX3] en 11 de Marzo de 2011, 12:25:13 PM
Hombre, lo único malo de esta librería frente a otras similares que hay por ahí es que no ofrece mecanismos ni herramientas propias para gestionar animaciones, particulas muchas otras funcionalidades mas típicas de un motor y que tendrás que programarte tu mismo. dx_lib32 realmente solo cumple el objetivo de abstraerte de DirectX y ciertas tareas tediosas y darte algunas funcionalidades
Eso es exactamente lo que me atrajo  :P, las funciones que ofrece son exàctamente las que buscaba, ademàs planeaba hacer las partìculas por mì mismo asì que me biene muy bien por màs que no traiga.


Tengo otra duda, se diferencian los sprites digamos "constantes"  de los "activos", es decir los tiles por ejemplo, de un personaje o un NPC , o en el Loop tengo que colocar el Draw siempre tanto de los NPCs como de los tiles? (o talvez hay funciones diferentes para ambos casos, o algùn truco?)

Saludos y gracias por su respuesta

Hechelion

Todo el control te queda a ti, en cada loop debes meter los draw que quieres dibujar, si durante un ciclo no hay un draw, ese objeto no se dibuja.

Por ejemplo>

Do while MainLoop
     if VisibleZombie1 then Zombie1.draw
     if VisibleZombie2 then Zombie2.draw
     if VisibleZombie3 then Zombie3.draw
     call oGFX.Frame()
Loop

NaSH

#5
Cita de: Hechelion en 12 de Marzo de 2011, 12:34:41 AM
Todo el control te queda a ti, en cada loop debes meter los draw que quieres dibujar, si durante un ciclo no hay un draw, ese objeto no se dibuja.

Por ejemplo>

Do while MainLoop
     if VisibleZombie1 then Zombie1.draw
     if VisibleZombie2 then Zombie2.draw
     if VisibleZombie3 then Zombie3.draw
     call oGFX.Frame()
Loop

Exacto eso entendì, pero es decir que en el Loop debo agregar un for del primer tile al ùltimo (tengo una matiz) y dibujar uno por uno, lo cual por un momento me trajo a la cabeza que combinado con todos los zombies, su movimiento, las partìculas, el personaje principal y los gràficos que puedan haber en el mapa me iban a traer complicaciòn alguna, pero supongo que no. (perdòn por dudar tanto pero for tan grandes en un Loop me dan miedo xd)

Hechelion

http://www.youtube.com/watch?v=AIIfh09skbs

No es solo por hacerme publicidad (bueno un poco), ese juego lo programa con la librería, el fondo es un mapa de tiles de 10 capas de diferente tamaño. hay 2 capas principales (una compone el suelo y otra capa las palmeras), en cada  layer estoy dibujando unos 200 tiles promedio (1024*600 con tiles de 64*64 en promedio, porque hay unos más grandes y unos más chicos). El coste de ese mapa debería andar por unos 2000 draw de tiles individuales en pantalla (los mapas lógicos son más grandes, de 256*128 por layer si no recuerdo mal).
50 criaturas + el PJ + HUB + Lógicas (colisión + IA + Música + Proyectiles) y en mi ExPC de sobre mesa andaba entre los 60 a 100 FPS. (Por supuesto que el dibujo de criaturas y lógica también está optimizado, solo dibuja o calcula los objetos cercanos a la pantalla). El juego lo tengo limitado a 30 FPS para que sea compatible con netbook (Atom 270 con 1 GB de RAM). Eso te debería dar más menos una idea de la carga que se puede tener en un PC normal.

Si tu escenario es más simple, puedes tener más unidades moviéndose y tener un buen frame rate.

NaSH

#7
Muchas gracias era lo que buscaba saber. Por cierto excelente game  :D por lo que veo es una especie de Diablo versiòn 2D scrollside






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.