Autor Tema: Niebla de guerra  (Leído 1727 veces)

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 354
  • Karma: 13
    • 5Leaps
Niebla de guerra
« en: Junio 25, 2011, 06:34:15 pm »
¿Como se puede hacer una niebla de guerra rollo StarCraft dentro de un scroll?

Había pensado en simplemente, no mostrar a los enemigos si no hay aliados cerca (graph=0), ya que no es necesario mostrar una niebla encima, pero entonces no funcionarían los disparos perdidos si la nave enemiga no tiene gráfico con collision.

¿Se os ocurre algún otro método?

Gracias de antemano.
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5681
  • Karma: 128
    • GECA soft
Re: Niebla de guerra
« Respuesta #1 en: Junio 25, 2011, 07:53:40 pm »
Puedes sobreponerle un gráfico en una region de la pantalla al cual aplicas efectos, semi transparencias con degradadod para simular la niebla.

Drumpi

  • Hero Member
  • *****
  • Mensajes: 6338
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: Niebla de guerra
« Respuesta #2 en: Junio 25, 2011, 11:28:59 pm »
Free, se refiere al efecto de los RTS (real time strategy) por el cual el terreno no se ve hasta que te acercas, porque está tapado en negro.
Los enemigos puedes "ocultarlos" con alpha=0 y seguirán colisionando, pero lo suyo es hacer la niebla en negro. Yo no sé qué método tienes para hacer el mapa, pero si usas un único mapa podrías poner otro justo encima, de color negro no transparente, y usar DRAW_BOX con el color 0 para ir descubriendo zonas. Si usas tiles puede ser más sencillo (bastaría con ponerlos ^^U) pero eso ya depende.

Tendría que mirar si no la mini-guía que tengo del div, porque creo recordar que hay una parte que se hablaba de ella, pero hace muchísimo tiempo que lo leí.
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)

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12887
  • Karma: 377
Re: Niebla de guerra
« Respuesta #3 en: Junio 26, 2011, 12:13:10 am »
puedes poner un mapa gigante con un agujero sobre toda la pantalla o para ganar performance puedes hacer un scroll con una region muy chica (la de la visualizacion) y poner sobre esa region un mapa chico con un agujero que cree el efecto que dices... esto si todo el resto de la pantalla se vera en negro, si el resto de la pantalla va a mostrar el escenario pero que a penas se vea, entonces necesitaras hacer lo primero, con una transparencia.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 354
  • Karma: 13
    • 5Leaps
Re: Niebla de guerra
« Respuesta #4 en: Junio 27, 2011, 11:10:01 am »
Pues no se, el tema de usar un mapa con un agujero creo que no me serviría, por que hay varios procesos por equipo y cada proceso independientemente debe mostrar su región visible. El mapa es un scroll sin tiles, que puede que cambie a tiles más adelante, pero por el momento, creo que me decantaré por usar el alpha=0. Una duda, si el gráfico es transparente, ¿Como colisiona?

Drumpi, karma++ por la idea.

Saludos!
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12887
  • Karma: 377
Re: Niebla de guerra
« Respuesta #5 en: Junio 27, 2011, 02:49:28 pm »
que sean varios procesos independientes no importa, puedes tener varias regiones.

cuidado con la performance...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 354
  • Karma: 13
    • 5Leaps
Re: Niebla de guerra
« Respuesta #6 en: Junio 27, 2011, 03:03:48 pm »
La performance es lo que más me preocupa, por ello pienso que alpha=0 debe ser lo que menos consuma, ¿verdad?
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

oriun

  • Full Member
  • ***
  • Mensajes: 159
  • Karma: 23
Re: Niebla de guerra
« Respuesta #7 en: Junio 27, 2011, 03:31:42 pm »
Si quieres hacer un juego de RTS puedes probar a hacer lo siguiente:
Para oscurecer el mapa la idea de Drumpi es genial, pero en teoría las unidades enemigas deberían seguir viéndose.
Para que no se vean, cada tipo de unidad podría tener una constante de distancia de visión en píxeles. Usando la función get_dist() se puede obtener la distancia en píxeles, a partir de ahí, se podría crear una función que modificase el valor de alfa del proceso que está dentro del área, tal que así.

Código: [Seleccionar]
IF (get_dist(procesoenemigo1)<=campodevision)
mostrarenemigo(procesoenemigo1)
END

Para almacenar las ID puedes crear un array con tantos valores como unidades puede tener un jugador y utilizar un bucle FOR con el array de los ID de las unidades para comprobar de una en una si están cerca.

No sé si eso es muy rápido hablando en ciclos, pero es lo único que se me ocurre ahora, que tengo el cerebro un poco bennuoxidado ;D

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12887
  • Karma: 377
Re: Niebla de guerra
« Respuesta #8 en: Junio 27, 2011, 03:36:58 pm »
no necesariamente... si son instancias, puede que tenga mejor rendimiento, pero no en todo.

pero por mas que pongas a los enemigos en alpha=0, y pongas sobre el scroll un mapa gigante a negro puro para tapar (como dijo drumpi) no vas a evitar que se dibuje el fondo completo por debajo, y con eso, la performance se va a resentir, no solo por dibujar el fondo del scroll sino por meterle encima un fondo negro para tapar todo.

igual todo depende de lo que quieras hacer visualmente, si mostrar el escenario alrededor pero mas oscuro o simplemente no mostrarlo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Goku jr

  • Sr. Member
  • ****
  • Mensajes: 339
  • Karma: 6
Re: Niebla de guerra
« Respuesta #9 en: Julio 06, 2011, 12:17:12 pm »
Creo que en div2 venia un ejemplo de RTS,con el efecto que buscais.

Saludos!

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 354
  • Karma: 13
    • 5Leaps
Re: Niebla de guerra
« Respuesta #10 en: Julio 06, 2011, 06:20:28 pm »
no necesariamente... si son instancias, puede que tenga mejor rendimiento, pero no en todo.

pero por mas que pongas a los enemigos en alpha=0, y pongas sobre el scroll un mapa gigante a negro puro para tapar (como dijo drumpi) no vas a evitar que se dibuje el fondo completo por debajo, y con eso, la performance se va a resentir, no solo por dibujar el fondo del scroll sino por meterle encima un fondo negro para tapar todo.

igual todo depende de lo que quieras hacer visualmente, si mostrar el escenario alrededor pero mas oscuro o simplemente no mostrarlo.

De momento no voy a mostrar la niebla propiamente dicha, quizas más adelante si... Lo único que quiero hacer de momento, es ocultar los procesos que no se ven por una unidad aliada.

Gracias por los aportes.
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12887
  • Karma: 377
Re: Niebla de guerra
« Respuesta #11 en: Julio 06, 2011, 07:11:17 pm »
entonces con un dist ya te serviria para saber cuales ocultar y cuales no
Download Lastest BennuGD Release: http://www.bennugd.org/node/2