Tutorial Fuego/humo Imprimir

Tutorial Fuego/Humo (efectos especiales) hecho por Marta

 

Dentro de los efectos especiales o "fx" el Fuego y el Humo son unos de los efectos que mas recursos van a requerir de nuestra tarjeta gráfica de vídeo. Esto no quiere decir que no se deban utilizar, pero sí diferenciar que tipos de estos efectos son menos exigentes. Las pequeñas llamas de las lámparas de aceite se podrán utilizar de forma extensiva ya que este efecto no consume prácticamente recursos. Por el contrario el abuso de grandes fuegos como incendios u otros efectos masivos de humo provocarán el mal rendimiento de nuestra tarjeta gráfica. Se podrán incluir en nuestros proyectos con la herramienta Radiant.

 

RADIANT - fx. Programación

Antes de comenzar, hay algunas cosas que se deben tener en cuenta:

1.- Ten cuidado al poner demasiados efectos especiales, porque harán que tu mapa parezca “congestionado”.

2.- En el peor de los casos, el humo puede provocar que desciendan los FPS.

3.- Piensa bien qué efecto necesitas y elige el adecuado. Ten en cuenta que el humo no rodea las estructuras de manera natural. Si pones humo e intentas hacer que rodee una pared, la atravesará. Este error no se puede corregir, es un juego.

Comenzamos.

 

Paso 1-

 

Abre el Radiant y activa en la visión 2D la cámara superior, para poder ver los ejes X e Y. Sitúa el ratón en el punto que quieres que comience el efecto y anota ambas coordenadas (un trozo de papel, txt, donde sea). Las coordenadas están en la parte inferior del programa, casi en el centro. En el caso de querer añadir humo u otro efecto que se “desplace”, piensa hacia dónde quieres que se mueva, y anota las coordenadas finales. Cambia de cámara y haz lo mismo con el eje Z (coordenadas iniciales y finales).

 

Es hora de usar el bloc de notas.

Paso 2-

 

Necesitamos un .gsc para hacer que el efecto funcione. Si ya tenemos el archivo .gsc del mapa lo abrimos y editamos, sino, creamos uno en main/maps/mp con el nombre del mapa y añadimos esto:

(Importante: en este ejemplo el mapa se llama mp_valleystation, recuerda poner el tuyo)

main()
{
maps\mp\mp_valleystation_fx::main();
maps\mp\_load::main();
ambientPlay("ambient_mp_valleystation");

//ExpFog(0.0001, 0.55, 0.6, 0.55, 0);
//CullFog(0, 16500, 0.55, 0.6, 0.55, 0);


game["allies"] = "russian";
game["axis"] = "german";
game["attackers"] = "allies";
game["defenders"] = "axis";
game["russian_soldiertype"] = "winterlight";
game["german_soldiertype"] = "winterlight";


setcvar("r_glowbloomintensity0",".5");
setcvar("r_glowbloomintensity1",".5");
setcvar("r_glowskybleedintensity0",".25");

}

Este archivo .gsc es igual que los demás, sin ser las 5 líneas desde maps\mp\mp_valleystation_fx::main();

Esta línea pide que se utilice el archivo fx, que es donde estarán configurados los efectos especiales.

 

Ahora crearemos en esa misma ruta, un nuevo archivo .gsc (nuevo bloc de notas, y luego cambiar la extensión). El archivo debe llamarse igual que el mapa añadiendo _fx al final (por ejemplo mp_valleystation_fx.gsc)

 

En el nuevo archivo añadimos este texto:

main()
{
precacheFX();
ambientFX();
level.scr_sound["flak88_explode"] = "flak88_explode";
}

precacheFX()
{

level._effect["flak_explosion"] = loadfx ("fx/explosions/flak88_explosion.efx");
level._effect["damaged_vehicle_smoke"] = loadfx ("fx/smoke/damaged_vehicle_smoke.efx");
level._effect["building_fire_large"] = loadfx ("fx/fire/building_fire_large.efx");


}

ambientFX()
{

//smoke for tanker rail car
maps\mp\_fx::loopfx("damaged_vehicle_smoke", (1588, 2436, 20), 1, (1588, 2436, 100));

//destroyed tanker rail car
maps\mp\_fx::loopfx("building_fire_large", (1588, 2436, 25), 1, (1588, 2436, 45));




//fire sounds

maps\mp\_fx::soundfx("medfire", (1588, 2436, 0));



}

 

Esto es lo que necesitas para añadir los efectos especiales en tu mapa. Vayamos por partes.

 

 

 

 

precacheFX();
ambientFX();

Esas dos primeras líneas son las que le dicen que tiene que precargar los efectos que se le pedirán a continuación

 

level.scr_sound["flak88_explode"] = "flak88_explode";

 

Esta línea explica lo que ocurre en el mapa. Esta línea se utiliza en todos los mapas en los que se juega un SD. Es el sonido de la explosión al volar el objetivo A o B.

precacheFX()
{

level._effect["flak_explosion"] = loadfx ("fx/explosions/flak88_explosion.efx");
level._effect["damaged_vehicle_smoke"] = loadfx ("fx/smoke/damaged_vehicle_smoke.efx");
level._effect["building_fire_large"] = loadfx ("fx/fire/building_fire_large.efx");

 

Esto es bastante evidente. El precaché hace que se precarguen los efectos que están a continuación. Las siguientes tres líneas están llamando o colocando tres efectos especiales que se utilizarán. En este caso habrá una explosión, un poco de humo y fuego.

 

(Nota: todos los efectos están en el iw_07.iwd dentro de la carpeta fx. Hay toneladas de ellos, así que puedes abrirlos e irlos probando hasta que te aburras. O quizás no te aburras… quien sabe.

ambientFX()
{

//smoke for tanker rail car
maps\mp\_fx::loopfx("damaged_vehicle_smoke", (1588, 2436, 20), 1, (1588, 2436, 100));

//destroyed tanker rail car
maps\mp\_fx::loopfx("building_fire_large", (1588, 2436, 25), 1, (1588, 2436, 45));

ambientFX es donde decidiremos cómo y dónde se generará el efecto. Dividiremos las líneas para explicarlas.

 

//smoke for tanker rail car

 

Si solo tiene uno o dos efectos en su mapa, no pierda el tiempo con esto. Puede añadir varios efectos e irlos anulando con //. Digo esto porque pueden añadirse 20 o más efectos, e ir bloqueando los que no se quieran utilizar.


maps\mp\_fx::loopfx("damaged_vehicle_smoke", (1588, 2436, 20), 1, (1588, 2436, 100));

Esta línea nos dice exactamente lo que ocurre en el juego.

_fx::loopfx nos dice básicamente, que el efecto se mantiene todo el tiempo.

(“damaged_vehicle_smoke” es el efecto que se generará en las siguientes coordenadas.

(1588, 2436, 20) son las coordenadas donde comienza el efecto. Aquí debes escribir los datos que apuntaste antes. (Recuerda, el orden de los ejes siempre es X Y Z)

, 1, es el valor que indica un bucle.

(1588, 2436, 100)); son las coordenadas finales del efecto. Aquí hay que prestar atención, ya que hay algunas cosas a tener en cuenta. Por ejemplo, si vas a añadir un efecto de fuego, el valor inicial del eje Z (eje superior) será 50 (por ejemplo) y el valor final  debería ser 90, para que el fuego tenga unas llamaradas más o menos grandes. De la misma manera podemos dirigir el humo para alejarlo de paredes o estructuras que no serán bordeadas por él, sino atravesadas. Con las coordenadas podemos decirle hacia donde debe ir.

 

Dos efectos diferentes creados de la misma manera; para crear efectos distintos, repite los mismos pasos con los que quieras.

//fire sounds

maps\mp\_fx::soundfx("medfire", (1588, 2436, 0));

 

Con los efectos de sonido es exactamente lo mismo. "medfire" es el sonido y las coordenadas se ubican en los ejes X e Y igual que las iniciales, pero el eje Z se suele ubicar en la parte más baja del objeto o lugar en que se genera el efecto.

Las coordenadas deben ubicar el efecto de la manera más real posible. Introduzca los valores y pruebe, y si no es correcto, modifica y prueba de nuevo. No tengas miedo de probar, ya que siempre puede ajustarse.

No olvides añadir tu archivo mp_nombredelmapa_fx.gsc en su iwd.

 

[traducido de la web http://www.codutility.com/index.php?file=Sections&op=article&artid=46]

 

Ir arriba