Niebla de guerra

Started by Arcontus, June 25, 2011, 06:34:15 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Arcontus

¿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

Puedes sobreponerle un gráfico en una region de la pantalla al cual aplicas efectos, semi transparencias con degradadod para simular la niebla.

Drumpi

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

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

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

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

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

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í.

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

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

Creo que en div2 venia un ejemplo de RTS,con el efecto que buscais.

Saludos!

Arcontus

Quote from: SplinterGU on June 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.

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

entonces con un dist ya te serviria para saber cuales ocultar y cuales no
Download Lastest BennuGD Release: http://www.bennugd.org/node/2