Autor Tema: ¿Cual es la mejor forma de oscurecer zonas de la pantalla?  (Leído 2462 veces)

Danielo515

  • Sr. Member
  • ****
  • Mensajes: 480
  • Karma: 4
    • Blog del Blogbo
¿Cual es la mejor forma de oscurecer zonas de la pantalla?
« en: Septiembre 16, 2008, 01:36:52 am »
Pues esa duda tengo. Quiero simular un oscurecimiento de cierta parte de la pantalla solamente, y haciendolo mediante 20 procesos de 80x80 me da una bajada del rendimiento, sobre todo cuando se disuelven (alpha-- until alpha<0) ¿hay alguna otra forma de hacerlo?
¿y a la hora de sacar muchos procesos? (como gotas de lluvia) ¿es mejor que se creen y se destruyan o que ellos se reposicionen?

fr0d0b0ls0n

  • Newbie
  • *
  • Mensajes: 44
  • Karma: 0
Re: ¿Cual es la mejor forma de oscurecer zonas de la pantalla?
« Respuesta #1 en: Septiembre 16, 2008, 08:38:33 am »
Pues para oscurecer yo usaría un único proceso con la forma que quieras (cuadrado, circular) relleno de negro, y juegas con el size y el alpha.

Para muchos procesos pues debe ser mejor que ellos se reposicionen, pero es muy simple, controlalos con un out_of_region y si están fuera cambiales la x y la y. Si la caída es inclinada y haces cuando estén en out_of_region:

if (x>800) x-=800;end
if (x<0) x=800-x;end
if (y<0) y=600-y;end
if (y>600) y-=600;end

Aparecerán por el otro extremo de la pantalla que hayan desaparecido. Lógicamente esto es para una resolución de 800x600 y en todas direcciones, si tu lluvia sólo cae en un sentido algunas condiciones nunca se darán (supongo que la de y<0 nunca, a no ser que llueva para arriba XD)

De todos modos tantos procesos para la lluvia te puede dar problemas. Posiblemente consuma menos usar "tiles" de lluvia de bastantes pixeles o algún otro método.
Follow the Moeko Principle

FAETON - En Progreso
15 Criaturas de ~28 |  18 Hechizos de ~41
25 Buffs de ~50      |  19 Enfrentamientos de ~80

Danielo515

  • Sr. Member
  • ****
  • Mensajes: 480
  • Karma: 4
    • Blog del Blogbo
Re: ¿Cual es la mejor forma de oscurecer zonas de la pantalla?
« Respuesta #2 en: Septiembre 16, 2008, 11:01:38 am »
Pues frodo, aunque no te lo creas lo que más memoria consume son cuatro procesos de 400x300 pixeles de color azul y transparencia alpha=50, ralentizan bastante la cosa, por eso preguntaba cual era la mejor manera. Lo de la lluvia había pensado usar un mapa de 2 o tres gotas por proceso. Aunque con la función otu_region (que me parece lo más cómodo) tengo el problema de que nada mas nacer ya están out region, así que estarían siempre posicionandose, tengo que probarlo a ver. Muchas gracias.

fr0d0b0ls0n

  • Newbie
  • *
  • Mensajes: 44
  • Karma: 0
Re: ¿Cual es la mejor forma de oscurecer zonas de la pantalla?
« Respuesta #3 en: Septiembre 16, 2008, 12:40:11 pm »
Dale si quieres un margen en el exterior, donde puedas crearlos, pero entonces ya no puedes usar out_of_region. Simplemente comprueba x>800+Margen, x<-Margen y ya está.

Lo de los procesos grandes lo veo raro, debe ser por las rutinas gráficas que siguen siendo demasiado anticuadas. Prueba con una imagen más pequeña con un size=200 siempre y cuando se vea bien, posiblemente consuma menos que las 4 pequeñas, aunque a saber...
Follow the Moeko Principle

FAETON - En Progreso
15 Criaturas de ~28 |  18 Hechizos de ~41
25 Buffs de ~50      |  19 Enfrentamientos de ~80

Danielo515

  • Sr. Member
  • ****
  • Mensajes: 480
  • Karma: 4
    • Blog del Blogbo
Re: ¿Cual es la mejor forma de oscurecer zonas de la pantalla?
« Respuesta #4 en: Septiembre 16, 2008, 04:01:09 pm »
Acabo de hacer algunas pruebas de performance. Lo de las gotas va realmente muy bien, he creado 100 gotas y da una sensación de lluvia bastante agradable, con solo esas 100 gotas en pantalla, la cosa no se ralentiza nada, pero en cuanto pongo los 4 procesos que oscurecen la pantalla, voila! ralentizaciones letales.
Estoy pensando que cada gota de agua cree su mapa al ser llamada pegando dos gotas en posiciones aleatorias de su mapa y así tendré el doble o triple de gotas con los mismos procesos.
En teoría lo del size no debería ser ningún problema, ya que es un color plano, sin nada de dibujo.
Voy a probar

Danielo515

  • Sr. Member
  • ****
  • Mensajes: 480
  • Karma: 4
    • Blog del Blogbo
Re: ¿Cual es la mejor forma de oscurecer zonas de la pantalla?
« Respuesta #5 en: Septiembre 16, 2008, 04:35:53 pm »
He puesto un mapa la mitad de grande y size =200 y va de lujo, luego probé a ponerlo size =400 y no noté muchas diferencias (obviamente con un mapa 1/4). Pero en cuanto combino, oscurecimiento de pantalla y gotas, voilá! ralentización!
También se nota ralentización cuando el mapa se disuelve, es decir se reduce su alpha asta desaparecer, es lo que más ralentiza.

fr0d0b0ls0n

  • Newbie
  • *
  • Mensajes: 44
  • Karma: 0
Re: ¿Cual es la mejor forma de oscurecer zonas de la pantalla?
« Respuesta #6 en: Septiembre 17, 2008, 05:49:14 am »
Prueba a no hacer un alpha-- cada frame, usa un Contador y haz un alpha-=5 cada 5 frames por ejemplo. Tal vez los problemas de rendimiento estén ahí.

Contador++;
if (Contador>=5) alpha-=5;Contador=0;end

Lógicamente puedes cambiar ambos números para probar efectos diferentes, tal vez un alpha-- cada 4 o 5 o lo que sea.
Follow the Moeko Principle

FAETON - En Progreso
15 Criaturas de ~28 |  18 Hechizos de ~41
25 Buffs de ~50      |  19 Enfrentamientos de ~80

Danielo515

  • Sr. Member
  • ****
  • Mensajes: 480
  • Karma: 4
    • Blog del Blogbo
Re: ¿Cual es la mejor forma de oscurecer zonas de la pantalla?
« Respuesta #7 en: Septiembre 18, 2008, 02:37:03 pm »
La verdad es que parece que ha mejorado la niebla, pero no la lluvia XD
Pero lo que tu dices me ha venido genial para otras cosas, ya que no se me había ocurrido ninguna forma de que las cosas fueran más lentas (ya que 60fps son muchos fps), hasta ahora usaba imágenes duplicadas. MUCHAS GRACIAS!