Texturas animadas




En nuestros niveles disponemos de la posibilidad de poder asignar texturas animadas en cualquier parte del escenario, de esta forma podremos dotar de más vida a nuestros niveles.

Estas animaciones podrán ser de dos tipos diferentes:

· Secuencias de diferentes imágenes que deberás diseñar y asignar usando el procedimiento 'Animar'.

· Efectos visuales que se generan dinámicamente, también llamados efectos '2D Shaders'. Para este tipo de textura animada dispones de diferentes procedimientos dependiendo del efecto que quieras aplicar sobre la textura.


Las texturas animadas son en realidad modificaciones que se realizan sobre las texturas que ya existen en tu nivel. Por lo que es importante saber el nombre de la textura que quieres animar en tu nivel antes de proceder a definir qué tipo de animación o efecto quieres crear usando un fichero .PRC.



Ficheros .PRC:

Para realizar los cambios de las texturas de tu nivel por texturas animadas, debes crear un fichero con extensión .PRC que contendrá diversos parámetros para sustituir las texturas indicadas por efecto animado deseado. Debe existir un fichero .PRC distinto por cada nivel al que queramos aplicar texturas animadas.

Por ejemplo, si tenemos un nivel que se llama 'calle.bsp' debes crear un fichero llamado 'calle.prc' que contendrá la información sobre todas las texturas animadas de ese nivel.

Estos ficheros .PRC deben estar en la misma carpeta que los niveles .BSP, es decir, en la carpeta 'levels'.


El contenido de los ficheros .PRC se trata de unas seríe de líneas texto que puedes editar con cualquier editor de textos tipo Notepad o similar.

Cada textura animada básicamente está definida por la cláusula wbm: o wbn:, el nombre de la textura que quieres animar (que ya debe existir en el nivel), el nombre del procedimiento que quieres aplicar sobre la textura y finalmente una serie de parámetros entre paréntesis. La sintaxis de estos parámetros depende de cada tipo de procedimiento.

Todo ello entre corchetes precedido de la palabra procedurals.


La sintaxis general sería así:


Usa wbm: si quieres que la textura animada se muestre cuando comience el nivel, de lo contrario usa wbn:. Excepto en el procedimiento 'Animar' que ya dispone de su propio parámetro para tal fin.

Puedes incluir tantas líneas como texturas quieras animar en tu nivel. Todas ellas en el interior de los corchetes. Por ejemplo:


Procedimientos disponibles:

Animar. Muestra secuencias de imágenes.

BumpMap. Efecto de relieve continuo.

Water. Efecto de gotas de agua.

Plasma. Efecto ondulante de plasma.

ElectricFx. Efectos de rayos eléctricos.

Fire. Efectos de fuego o humo.

Smoke. Efectos de fuego, fuego de cohetes, partículas, chispas, surtidores y otros efectos similares.

Particles. Genera dos fuentes de partículas para crear efectos de líquidos goteando, explosiones de partículas, humo, magnetismo y gran variedad de vistosos efectos.




Procedimiento Animar

Sintaxis:


  • textura:
  • Nombre de la textura aplicada en el nivel (usando World Editor) y que se desea sustituir por la secuencia animada.


  • secuencia_bmp:
  • Nombre de la secuencia de imágenes .bmp que sustituirá a la textura que hemos indicado anteriormente. Esta secuencia de imágenes siempre ha de comenzar con '1' y ser progresiva ( Ejemplo: llave1.bmp, llave2.bmp, llave3.bmp, llave4.bmp, llave5.bmp, ...)

    Todos los ficheros que componen la secuencia deben estar en la carpeta 'bmp \ texturas'.

    Deben ser imágenes de la misma resolución que la textura que se quiere sustituir.

    Los tamaños permitidos de estas imágenes pueden ser: 32x32, 64x64, 128x128 o 256x256.

    Las imágenes han de ser de 256 colores (de 0 a 255), pero el color 255 (el último) no se debe utilizar en las imágenes, de lo contrario se producirán extraños efectos en algunas zonas de la animación.


  • número_de_imágenes:
  • Número máximo de imágenes que componen la secuencia.

    Indicar aquí el último número que hemos utilizado en la secuencia de imágenes .bmp que hemos creado.


  • retardo:
  • Tiempo en segundos entre cada imagen de la secuencia.

    Variando este dato podremos presentar la animación más rápida o más lenta.


  • num_ciclos:
  • Número de veces que quieres que se repita la secuencia animada.

    Usa el valor 0 para que se repita indefinidamente.

    Cuando finalicen todos los ciclos, la textura que quedará fija será la última de la secuencia. Pero si quieres que esa última textura sea otra diferente, sólo debes crear una textura .BMP con el mismo nombre de la secuencia pero con la numeración 0. Por ejemplo cascada0.bmp.


  • activada:
  • Poner 'True' si se desea que la textura animada comience a funcionar desde el mismo instante que empiece el nivel, de lo contrario poner 'False'.

    Durante el transcurso del juego podremos activar o desactivar texturas animadas utilizando los comandos 'TEA1' y 'TEA0'.



    Ejemplo:

    La idea es sustituir una textura que hayamos utilizado en la construcción de nuestro nivel, por una secuencia de texturas para que de esta forma, durante el juego, se vean en la secuencia correcta para formar la animación.

    Para mostrar el efecto de una cascada tenemos que crear los siguientes ficheros (cascada1.bmp, cascada2.bmp y cascada3.bmp):

      

    El contenido del fichero .PRC para el ejemplo anterior sería:


    En este ejemplo con este fichero 'calle.prc' estamos indicando que cuando estemos jugando al nivel 'calle.bsp' la textura llamada 'roca' que utilizamos en World Editor como textura aplicada en alguna cara del nivel, la cambie por la secuencia 'cascada', secuencia que la componen 3 imágenes, que se espere 0.1 segundos entre cada cambio de imagen, y con 'True' le indicamos que puede hacer todo eso desde el mismo instante que comience el nivel.

    El '0' es para que la secuencia se repita indefinidamente.



    Texturas animadas con máscaras de transparencia:

    También puedes usar texturas con transparencias si copias en la misma carpeta los ficheros Alpha de transparencia de cada uno de los cuadros de la secuencia animada. Como siempre, los nombres de estos ficheros Alpha deben comenzar con a_ .

    Por ejemplo:


    Ficheros hotel1.bmp y hotel2.bmp


    Y los ficheros Alpha a_hotel1.bmp y a_hotel2.bmp


    Resultado final

    Para el correcto funcionamiento de este tipo de texturas con transparencia es recomendable que las uses sobre bloques sin grosor marcados como 'Sheet' en la sección 'Brush Attributes' y la cara de aplicación de la textura marcada como 'Transparent' en la sección 'Face Attributes'.




    Procedimiento BumpMap

    Sintaxis:


  • textura:
  • Nombre de la textura aplicada en el nivel (usando World Editor) y que se desea sustituir por el efecto.



    Ejemplo:

    wbm: floor24 BumpMap();

      


    Procedimiento Water

    Sintaxis:


  • textura:
  • Nombre de la textura aplicada en el nivel (usando World Editor) y que se desea sustituir por el efecto.



    Ejemplo:

    wbm: waves18 Water();


      


    Procedimiento Plasma

    Sintaxis:


  • textura:
  • Nombre de la textura aplicada en el nivel (usando World Editor) y que se desea sustituir por el efecto.


  • movi_vel:
  • Velocidad del movimiento (Valores entre 0.01 y 0.6).


  • expa_vel:
  • Velocidad de expansión (Valores entre 2 y 25).


  • transparencia:
  • Transparencia (Se recomienda usar ' f ').


  • desplazamiento:
  • ' f ' si se usa 'paleta_colores'

    ' t ' si no se usa 'paleta_colores'


  • paleta_colores:
  • Es opcional. Grupo de tres colores definidos cada una de ellos por componentes RGBA (Red, Green, Blue, Alpha) que determinan los colores y transparencia del plasma.



    Este efecto sólo funciona sobre texturas de un tamaño de 256 x 256.


    Ejemplo 1:

    Plasma multi-color sin usar la textura original con una paleta de colores.

    wbm: cloth23 Plasma(0.01, 4, f, f, trig, 128,128,128,255, 5,1,5,0, 0,0,0,0 );




    Ejemplo 2:

    Plasma negro con transparencia sin usar la textura original con una paleta de colores:

    wbm: cloth23 Plasma(0.01, 4, f, f, trig, 10,1,5,255, 128,128,128,255, 0,0.5,0,0 );




    Ejemplo 3:

    Plasma ondulando la textura original:

    wbm: cloth23 Plasma(0.01, 4, f, t );


      


    Procedimiento ElectricFx

    Sintaxis:


  • textura:
  • Nombre de la textura aplicada en el nivel (usando World Editor) y que se desea sustituir por el efecto.


  • paleta_colores:
  • Paleta de colores que se aplicará al efecto. Deber ser una de estas: Fx_PalSlime, Fx_PalFire, Fx_PalOrange o Fx_PalBlue


  • tipo_rayo:
  • Tipo de rayos que se mostrarán. Puede ser uno de estos: Fx_EnergySpin o Fx_Spark


  • x_pos y_pos:
  • Para ajustar la posición del efecto sobre la textura.



    Este efecto sólo funciona sobre texturas de unos tamaños de 128 x 128 o 256 x 256.


    Ejemplo 1:

    wbm: cloth29 ElectricFx(Fx_PalFire, Fx_EnergySpin, 1, 2);




    Ejemplo 2:

    wbm: cloth29 ElectricFx(Fx_PalBlue, Fx_Spark, 1, 2);




    Procedimiento Fire

    Sintaxis:


  • textura:
  • Nombre de la textura aplicada en el nivel (usando World Editor) y que se desea sustituir por el efecto.


  • fuego_bajo:
  • Usar ' T ' para un efecto de menos altura y más rápido. Usar ' F ' para un efecto con una altura normal.


  • bordes:
  • Usar ' pow ' para bordes de color normal. Usar 'pol' para bordes multi-color.


  • R,G,B,A:
  • Cuatro valores para definir el color del efecto.

    R para el nivel de rojo (Valores de 100 a 800).

    G para el nivel de verde (Valores de 100 a 800).

    B para el nivel de azul (Valores de 100 a 800).

    A para el nivel de transparencia (Valores de 100 a 800).


  • VR,VG,VB,VA:
  • Cuatro valores para definir las variaciones que realizará el efecto sobre el color definido mediante RGBA.

    VR para variación del rojo (Valores de 0.0 a 1.0 ).

    VG para variación del verde (Valores de 0.0 a 1.0 ).

    VB para variación del azul (Valores de 0.0 a 1.0 ).

    VA para variación de la transparencia (Valores de 0.0 a 1.0 ).



    Este efecto funciona sobre texturas de unos tamaños de 64 x 64, 128 x 128 o 256 x 256.


    Ejemplo 1:

    Fuego de color naranja:

    wbm: cloth26 Fire(F, pow, 230,230,255,500, 0.2,0.5,1.0,0.4);




    Ejemplo 2:

    Fuego rojo con bordes multi-color:

    wbm: cloth26 Fire(F, pol, 230,230,255,500, 0.2,0.5,1.0,0.4);




    Ejemplo 3:

    Fuego amarillo con llamas más definidas:

    wbm: cloth26 Fire(F, pow, 630,630,255,400, 0.2,0.5,1.0,0.2);




    Ejemplo 4:

    Humo:

    wbm: cloth26 Fire(F, pow, 250,250,250,150, 0.2,0.2,0.2,0.1);




    Procedimiento Smoke

    Sintaxis:


  • textura:
  • Nombre de la textura aplicada en el nivel (usando World Editor) y que se desea sustituir por el efecto.


  • paleta_colores:
  • Paleta de colores que se aplicará al efecto. Puede ser una de estas: Smoke_PalFire, Smoke_PalSlime, Smoke_PalOrange o Smoke_PalBlue


  • número_partículas:
  • Cantidad de partículas usadas para el efecto (Valores de 1 a 500).


  • x_pos, y_pos:
  • Para ajustar la posición del efecto sobre la textura.


  • z_pos:
  • Normalmente es 25.0

    En algunos casos permite ajustar el tamaño del origen de las partículas (Valores de 1 a 40).


  • vx:
  • Variación de x_pos en el tiempo (Valores de 1 a 80).

    Permite ajustar el tiempo de existencia de las partículas.

    Si se usan valores altos como 40, se replican múltiples efectos.


  • vy:
  • Variación de y_pos en el tiempo (Valores de 1 a 180).

    Usar el valor 5 para una dispersión lateral.

    Usar el valor 180 para una dispersión más central.


  • vz:
  • Variación de z_pos en el tiempo (Valores de 1 a 40).

    Normalmente es 1.0



    Este efecto funciona sobre texturas de unos tamaños de 64 x 64, 128 x 128 o 256 x 256.


    Ejemplo 1:

    wbm: floor19 Smoke (Smoke_PalFire, 64, -25.0, 64.0, 25.0, 4.0, 5.0, 1.0);




    Ejemplo 2:

    wbm: floor25 Smoke (Smoke_PalSlime, 128, -25.0, 64.0, 25.0, 4.0, 5.0, 1.0);




    Ejemplo 3:

    wbm: floor27 Smoke (Smoke_PalBlue, 250, 6.0, 64.0, 25.0, 4.0, 180.0, 1.0);




    Ejemplo 4:

    wbm: floor19 Smoke (Smoke_PalOrange, 64, -25.0, 64.0, 25.0, 30.0, 5.0, 1.0);




    Ejemplo 5:

    wbm: floor19 Smoke (Smoke_PalSlime, 32, -25.0, 64.0, 25.0, 4.0, 160.0, 1.0);




    Procedimiento Particles

    Sintaxis:


  • textura:
  • Nombre de la textura aplicada en el nivel (usando World Editor) y que se desea sustituir por el efecto.


  • número_partículas:
  • Cantidad de partículas usadas para el efecto. (Valores de 1 a 300)


  • paleta_colores:
  • Paleta de colores que se aplicará al efecto. Puede ser una de estas: opaquefire, fire, steam o oil


  • suavizado:
  • Nivel de suavizado del efecto (Valores de 0 a 8)

    Normalmente 1


  • radio_suavizado:
  • Radio de suavizado del efecto (Valores de 0 a 8)

    Normalmente 1


  • patrón_efecto:
  • Patrón de movimiento del efecto. Puede ser uno de estos: bounce, wrap o hard


  • hay_magnetismo:
  • Usar ' F ' para no aplicar fuerzas magnéticas.

    Usar ' T ' para indicar a continuación tres datos (mag_x, mag_y, mag_z) que definen el magnetismo que se aplicará (Valores de 0 a 300)


  • hay_atracción:
  • Usar ' F ' para no aplicar fuerzas de atracción.

    Usar ' T ' para indicar a continuación cinco datos (fuerza, F, atr_x, atr_y, atr_z) que definen la fuerza de atracción que se aplicará.

    'fuerza' para indicar la cantidad de fuerza de atracción. Usa valores negativos para aplicar repulsión.

    'atr_x, atr_y, atr_z' (Valores de 0 a 512)


  • x_pos, y_pos, z_pos:
  • Permite reposicionar y reorientar la dirección de las partículas (Valores de 0 a 512)


  • x_vel, y_vel, z_vel:
  • Esto permite definir la velocidad a la que se mueven las partículas (en pixeles por segundo) y sobre qué eje (Valores de 0 a 256)


  • t_part:
  • Permite ajustar el tiempo de vida de las partículas (Valores de 1 a 80)


  • vx, vy, vz:
  • Variación de x_pos, y_pos y z_pos en el tiempo (Valores de 0 a 180)


  • vx_vel, vy_vel, vz_vel:
  • Variación de x_vel, y_vel y z_vel en el tiempo (Valores de 0 a 80)


  • v_t_part:
  • Variación de 't_part' en el tiempo (Valores de 0 a 80)


  • frec:
  • Permite variar la frecuencia de aparición de las partículas (Valores de 0 a 256)

    Normalmente con valor 0


  • t_emision_part:
  • Similar a 'frec'. Permite variar la frecuencia de aparición de las partículas (Valores de 0 a 30)

    Normalmente con valor 0.01


  • zona_mov:
  • Permite limitar la zona de movimiento de las partículas.

    Usa valores como: 0.00000, 0.00001, 0.0001 o 0.001



    Este efecto funciona sobre texturas de unos tamaños de 64 x 64, 128 x 128 o 256 x 256.


    Ejemplo 1:



    Ejemplo 2:



    Ejemplo 3:



    Ejemplo 4:



    Ejemplo 5:




    Aplicación de los efectos ElectricFx, Fire, Smoke y Particles:

    Para que estos efectos se muestren correctamente, debes aplicarlos sobre una textura de una cara transparente (activar 'Transparent' de 'Face Attributes' de Word Editor) con un valor de transparencia de 255 o menos ('Transparency Value' de 'Face Attributes' de Word Editor).

    La transparencia del resto de las caras del 'brush' depende del efecto que quieras mostrar. Si quieres que se vean el resto de texturas del 'brush', las caras deben estar con un valor de transparencia de 255, mientras que si lo que quieres es que no se vean deben estar con un valor de transparencia de 0.



    ¿ Para qué sirven todas estas texturas animadas ?:

    - Fluidos más realistas (lava, agua, residuos, barro, cascadas, gotas).

    - Presentar animaciones en pantallas y monitores.

    - Crear habitaciones psicodélicas.

    - Publicidad dinámica en paredes de calles o estadios.

    - Letreros luminosos.

    - Objetos del escenario con texturas cambiantes.

    - Paredes vivientes tipo 'Silent Hill 3'.

    - Portales inter-dimensionales que muestran formas ondulantes sólo cuando son atravesables por el jugador.

    - Fuego y humo en restos de vehículos recien destruidos.

    - Oráculo mágico con efectos de partículas cuando el jugador lo activa.

    - Secuencias animadas que reproduzcan la rotura de cristales o lienzos.

    - Secuencia animada que muestre la aparición de un 'graffiti' cuando el jugador lo dibuje.



      



    Consulta los comandos 'TEA1', 'TEA0' y TEXTURA_ANIMADA_PRC para saber como activar y desactivar texturas animadas durante el transcurso del juego.


    Usa las propiedades de las caras donde apliques las texturas animadas ('Face Attributes' de Word Editor) para por ejemplo ajustar su posición, tamaño, orientación o transparencia.