NGLE Manual

 

Manual del NGLE

Animaciones en el Nuevo Motor del Juego

Por Titak
Traducido por Pemon

TRNG – Animation Scripting

Como el TRNG no es compatible con el TREP, movimientos nuevos para Lara han de ser escritos (scripted).

Recuerda que para crear los scripts!! has de usar el NG Center si no los nuevos comandos del script, como el Animation= no funcionarán en el juego. En este tutorial doy por hecho que sabes como se modifica y se construye tu script en el NG Center.

Con este comando en el script, puedes crear cualquier movimiento que desees para Lara. Es bastante complicado conseguir hacer que los movimientos tengan un movimiento fluido, aunque, como con otras tantas cosas con la practica se consigue. Casi siempre será necesario realizar pruebas y modificar errores para aprender a usar las muchas y diferentes condiciones que se puedan necesitar a introducir en el comando Animation= para conseguir que un nuevo y concreto movimiento funcione perfectamente.

En este tutorial voy a tratar de explicar las bases sobre animation scripting. También he incluido algunos scripts para hacer que algunos de los movimientos del TREP sean posibles.

En General

Para conseguir que sean posibles nuevos movimientos para Lara, necesitas usar en tu script el comando Animation=

El sintaxis general es:

Animation= AnimIndex, KEY1_, KEY2_ , FAN_ flags, ENV_ Environment,
Distance for Env, Extra, StateId or AnimationId array


Este comando debe ser introducido en la sección [Level]. Esto quiere decir que debes poner este comando en todos los niveles de tu script si quieres que Lara realice el movimiento en todos los niveles.

Como puedes ver, el comando Animation= contiene varios campos separados por comas. El número de campos debe ser igual en todo momento. En algunos casos puedes añadir más comandos/condiciones a un campo. Estas condiciones debe ser separadas por un +. Si un campo no es de aplicación, necesitas introducir IGNORE en él.

Es recomendable mirar el archivo help (ayuda) de la pestaña Reference, Show SCRIPT NEW commands, del NG Center para una explicación detallada de lo que quieren decir los campos y que condiciones puedes poner ahí. Lo mejor es copiar todo el texto de explicación de la ventana verde y llevarlo a un archivo de documento en Word e imprimirlo para así verlo mejor. Léelo completamente de forma cuidadosa porque te dice mucho sobre las diferentes condiciones que puedes configurar.

Otra parte de interés de la pestaña Reference es la de; show _MNEMONIC CONSTANTS for new script commands box. Aquí es donde son listadas todas las condiciones de comandos que pueden ser usados en el script. Cuando seleccionas una de las constantes de la lista, se muestra una pequeña descripción en la ventana verde.

Que significan los campos Comando/Condición?

Para comenzar, he creado una pequeña descripción sobre los campos que necesitas introducir en la línea de comando Animation=  Para mayor información necesitas leerte el archivo help descrito anteriormente.

AnimIndex
Este es el campo donde debes poner el número de la animación que deseas que Lara realice. Puedes encontrar el número correcto de la animación usando el WADMerger Animation Editor.

KEY1_
Aquí es donde debes poner la tecla que el jugador debe pulsar para que Lara realice la animación. Puedes poner más de una tecla, Si quieres que Lara solo haga la animación cuando el jugador presione la tecla flecha arriba y salto, necesitas poner en este campo KEY1_UP + KEY1_JUMP. En este tutorial solo uso las teclas asignadas por defecto del teclado.
Puedes asignar otras teclas, pero esto requiere algo de scripting extra. 

Las posibles teclas para este campo son:

KEY1_ACTION                      TECLA1_ACCIÓN
KEY1_DOWN                        TECLA1_ ABAJO
KEY1_DRAW_WEAPON     TECLA1_SACAR_ARMA
KEY1_LEFT                          TECLA1_IZQUIERDA
KEY1_LOOK                         TECLA1_MIRAR
KEY1_RELEASED               TECLA1_SOLTAR
KEY1_RIGHT                       TECLA1_DERECHA
KEY1_ROLL                         TECLA1_VOLTERETA
KEY1_UP                              TECLA1_ARRIBA
KEY1_WALK                       TECLA1_ANDAR

Nota1: El valor especial KEY1_RELEASED puede ser añadido al campo Key1 para invertir la condición de la tecla. Cuando está presente KEY1_RELEASED, la condición solo es verdadera cuando las teclas especificadas NO están pulsadas.
Así que puedes usar esto para que Lara realice una animación concreta cuando está colgada de algo y el jugador deja de pulsar Acción.


KEY2_
Básicamente igual al campo KEY1_ pero solo puedes poner un pequeño número de teclas en este campo:

KEY2_DASH                             KEY2_SPRINTAR
KEY2_DUCK                             KEY2_AGACHARSE
KEY2_USE_FLARE                   KEY2_USAR_BENGALA

FAN_ flags
Puedes poner una o más flags FAN_  para configurar el comportamiento del comando animación (animation command).

Un ejemplo de un FAN_flag es; FAN_SET_FREE_HANDS. Este flag ejecuta una acción específica para informar al motor del juego de que cuando las manos de Lara estén libres pueda agarrarse, subir y recoger objetos o armamento.

ENV_ Environment
En el campo Environment (Entorno) puedes configurar una y muy específica condición sobre el entorno alrededor de Lara. Debes usar este campo solamente cuando tu animación requiera un correcto entorno alrededor de Lara: paredes escalables, huecos, paredes, etc.

Unos pocos ejemplos de condiciones de ENV_  son:

ENV_HOLE_FLOOR_IN_FRONT
Esto nos asegura de que Lara solamente realizará la animación cuando se encuentre delante de un hueco en el suelo, o enfrente de ella.

ENV_FRAME_NUMBER
Esto puede ser usado para realizar la animación solo cuando Lara se encuentre en un número de frame específico de una animación en concreto. El número del frame debe ser introducido en el campo Distance for Env . El número de la animación (o StateID para esa animación) debe ser introducido en el StateId, o en el campo AnimationId array.

ENV_MONKEY_CEILING
Esta condición es verdadera (true) cuando Lara está por debajo de las barras de trepar. Entonces puedes introducir la Distancia a las barras de trepar (monkeybars in the Distance) para el campo Env field. El valor que se requiere introducir en el Distance for Env field se calcula con la siguiente formula: MinClick + MaxClick * 256.

Por ejemplo, si quieres que una condición sea verdadera (true) cuando las barras de trepar están dentro del rango de 3 clicks (min.) hasta 4 click (max.), debes introducir el valor (3 + 4*256) = 1027 en el campo distance field. (De hecho se requiere este particular valor para que Lara efectúe el movimiento de escalar a trepar, tal como se muestra en la sección de Ejemplos.)

Distance for Env
En este campo debes introducir los valores que se necesitan para algunas de las condiciones ENV_Environment. Ver también algunos de los ejemplos en el ENV_Environment.

Extra
Este campo puede albergar diferentes valores relacionados con FAN flags.

StateId o AnimationId Array
Después del campo Extra puedes introducir uno o más valores para poner índices de la Animación o del State-Ids para usar como condición para comenzar tu animación especial.

Por ejemplo, en la siguiente tabla se muestra los state-ids más importantes:

(Escalar) Climbing: $38 , $39, $3A, $3B, $3C, $3d
(Caer) Falling: $09, $1d
(Saltar) Jumping: $19, $1A, $1b, $1C, $03
(Moverse a gatas) Moving on all fours: $50, $51, $47, $48
(Voltereta) Rolling: 5
(Correr) Running: 1
(Andar)Walking: 0
(Movimiento mono) (Monkey: $4b, $4c, $4d, $4e, $4f, $52, $53
(Posición quieta) Still, stand up: 2

Nota 2: El signo '$' quiere decir "valor hexadecimal". Puedes usar la calculadora de Windows en el modo Científica para convertir el valor decimal a hexadecimal. También puedes introducir los valores en decimal, pero entonces tendrías que introducir los números en negativo, así que la animación 164 debes ponerla como -164. Los números de la animación o de los state-ids que introduzcas en este campo son usados por el motor del juego para determinar cuando tu animación está permitida o no.

(Ejemplos)

He recreado algunos de los movimientos del TREP usando el comando Animation= en el script  para poder hacer que esos movimientos funcionen con el TRNG ya que el TRNG no es compatible con el TREP. Más abajo están los movimientos que he conseguido que funcionen correctamente. Puedes usar libremente esos comandos.

También he explicado las condiciones que he usado, y que quizás te puedan ser de ayuda para entender mejor el uso de las condiciones.

De escalera a movimiento mono

Este movimiento le permite a Lara agarrarse a la barra del techo por encima de ella cuando se encuentra en una pared escalable.

Descarga de la Animación – esta animación fue originalmente creada por Geckokid. Este es el script que he conseguido que funcione con esta animación.

Script command

Animation= 446, KEY1_ACTION + KEY1_UP, IGNORE, IGNORE, ENV_MONKEY_CEILING, 1027, IGNORE, -164 ;ladder to monkey*

446
Este es el número de la animación de trepar de la pared al techo. (ladder-to-monkey animation)

KEY1_ACTION + KEY1_UP
Para activar la animación debes pulsar Acción y flecha arriba.

IGNORE
No KEY2_ se ha asignado, por ello se pone IGNORE en este campo.

IGNORE
No se requiere de FAN_flags por ello se pone IGNORE en este campo.

ENV_MONKEY_CEILING
Como es el movimiento de the ladder-a-monkey, solo debe ser realizado cuando Lara está justo debajo del techo escalable.

1027
Esta es la Distancia para el Env fvalue para asegurar que Lara solo puede agarrarse a las barras del techo escalable cuando justo debajo de ellas. Se calcula con la formula: 256 * MaxClicks + MinClicks = 256 * 4 + 3 = 1027)

IGNORE
No se requiere del valor/condición Extra por ello se pone IGNORE en este campo.

-164
Este es el número de la animación de Lara para trepar por una pared. Es la animación de trepar cuando se encuentra en la posición quieta sin poder continuar con los pies apoyados.

¡¡Recuerda que si usas un número de animación en vez de un StateID, debes usar un número negativo!!


Imagen


Giro de 180 grados en las barras del techo

Este movimiento le permite a Lara realizar un giro de 180 grados mientras se encuentra colgada de las barras del techo.

Descarga de la Animación - esta animación fue originalmente creada por Geckokid. Este es el script que he conseguido que funcione con esta animación.

Script command

Animation= 257, KEY1_ROLL, IGNORE, IGNORE, IGNORE, IGNORE, IGNORE, -234
;180 degree turn on monkeybars*

257
Este es el número de la animación del giro 180-degree-on-monkeybars.

Cuando reproduces este número de animación en el editor de animación del Wadmerger puedes ver que tan solo es una simple animación de giro. Por eso puedes usar esta animación sin necesidad de crear una animación adicional.

KEY1_ROLL
Para que Lara realice este movimiento, necesitas pulsar la tecla VOLTERETA.

IGNORE, IGNORE, IGNORE, IGNORE, IGNORE
No se asigna KEY2_, no se requiere de FAN_flags, no se requiere de la condición ENV_Environment, no se requiere de valores para Distance for Env ni para los de Extra, por eso se introduce IGNORE en todos estos campos.

-234
El número de la animación en la que Lara debe realizar el movimiento.
It is the number of the hanging-still-on-monkeybars animation.

NOTA:
He notado que esta animación tiene una pequeña demora en el movimiento. Necesitas mantener pulsada la tecla VOLTERETA durante un segundo para que Lara realice el movimiento.

Imagen


Voltereta en un hueco (Roll in Crawlspace)

Lara puede realizar una voltereta hacia delante en un hueco lo que la hace moverse hacia delante de forma más rápida que la normal de gatear. Las animaciones para ello se encuentran en el objeto de Lara en uno de los Revised wads, así que no es necesario añadirla.

Script command

Animation= 218, IGNORE, $4000, FAN_KEEP_NEXT_STATEID, ENV_MULT_CONDITION, 4, IGNORE, -222, -353, -354 ;roll in crawlspace

MultEnvCondition= 4 ,ENV_NO_BLOCK_IN_FRONT, 256, IGNORE, ENV_NON_TRUE + ENV_HOLE_FLOOR_IN_FRONT, 512, IGNORE
;roll in crawlspace*

Como puedes ver se requiere de dos script commands diferentes para hacer que este movimiento funcione correctamente.

Animation=

218
Número de la animación de la voltereta en un hueco. (roll-in-crawlspace)

IGNORE
No KEY1_ es asignada, por ello IGNORE se introduce en este campo.

$4000
El valor hexadecimal para la tecla Esprintar. Como alternativa, también puedes introducir KEY2_DASH.

NOTA:
El valor hex. de una tecla en concreto o condición se puede ver en la lista show _MNEMONIC CONSTANTS for new script commands list.


FAN_KEEP_NEXT_STATEID
Esto asegura que Lara volverá al stateID de sus animaciones de arrodillarse.

ENV_MULT_CONDITION
Debido a que se requieren más condiciones ENV_Environment, debes usar esta condición. Le dirá al motor del juego que también use el comando MultEnvCondition= donde todas las condiciones ENV_Environment son listadas.

4
El número del comando MultEnvCondition= que debe ser usado por el motor.

IGNORE
No es necesario el valor/condición Extra por ello IGNORE es introducido en este campo.

-222, -353, -354
Estos son los números de las animaciones de arrodillarse de Lara. Estas son las animaciones desde donde Lara puede realizar el movimiento.

MultEnvCondition=

4
El número del comando, según es asignado en el comando Animation= . El motor ahora sabrá que debe usar este MultEnvCondition= conjuntamente con el comando Animation= .

ENV_NO_BLOCK_IN_FRONT, 256, IGNORE
ENV_Environment, Distancia para los campos ENV y Extra y que se den las condiciones que eviten que Lara pueda realizar la voltereta cuando está delante de una pared/bloque a una distancia menor de un bloque y medio.


ENV_NON_TRUE + ENV_HOLE_FLOOR_IN_FRONT, 512, IGNORE
ENV_Environment, Distancia para los campos ENV y Extra y que se den las condiciones que eviten que Lara pueda realizar la voltereta cuando está delante de un agujero en el suelo igual o mayor de 2 clips, de forma que Lara no pueda realizar este movimiento para salir de un hueco que no sea menor de 1 clic por encima del suelo.

Imagen


Ledge Climb Control

Este particular parche del TREP te permite añadir dos o más StateID’s a la animación 96 que le permite a Lara realizar dos movimientos extras cuando está colgada de un saliente.

Con TRNG y el comando Animation= en el script, puedes añadir todas las animaciones que desees a la animación 96. No es necesario decir que estos movimientos extras son improbables que existan en el objeto Lara, así que será necesario que tú mismo crees la animación para ello.

Como ejemplo he creado dos comandos scripts con dos de mis animaciones que permite a Lara saltar hacia arriba, por ejemplo a otra grieta o saliente justo encima o hacer que salte a otro saliente detrás de ella.

Ledge-jump-up

Script command


Animation= 448, KEY1_JUMP, IGNORE, IGNORE, ENV_FRAME_NUMBER, 21, IGNORE, -96 ;ledge jump up*

448
Este es el número de mi animación.

KEY1_JUMP
El movimiento es activado pulsando la tecla SALTO cuando Lara se encuentra quieta colgada de un borde (animación 96)

IGNORE
No se asigna KEY2_ por eso IGNORE es introducido en este campo.

IGNORE
No se requiere de FAN_flags por eso IGNORE es introducido en este campo.

ENV_FRAME_NUMBER
He usado esta condición para asegurarme de que Lara solo realizará el movimiento en el frame asignado de la animación asignada.

21
El número del frame en el cual el movimiento será activado. Así que, siempre que Lara NO esté en el frame 21 de la animación 96 no realizará el movimiento.

IGNORE
No se necesita el valor/condición Extra por ello IGNORE es introducido en este campo.

-96
Valor negativo del número de la animación desde donde ha de realizarse el movimiento.

Imagen

Ledge-jump-backwards

Script command

Animation= 450, KEY1_DOWN, IGNORE , FAN_SET_FREE_HANDS, ENV_FRAME_NUMBER, 21, IGNORE, -96
;ledge jump backwards*

450, KEY1_DOWN, IGNORE
L
legado este momento, estos tres primeros campos deben hablar por si solos.

FAN_SET_FREE_HANDS
He usado este FAN_flag de forma que el motor sepa que las manos de Lara están libres y permitir que pueda agarrarse a un saliente, grieta, jumpswitch o lo que sea cuando esté en medio del salto.

ENV_FRAME_NUMBER, 21, IGNORE, -96
Lo mismo que con el movimiento ledge-jump-up.

Roll out of Crawlspace

Este movimiento le permite salir a Lara de un hueco con voltereta hacia adelante, en vez de tener que girarla de espaldas para salir.

Script command

Animation= 421, KEY1_JUMP, IGNORE, FAN_SET_NEUTRAL_STATE_ID + FAN_SET_FREE_HANDS, ENV_POS_HORTOGONAL + ENV_HOLE_FLOOR_IN_FRONT + ENV_POS_STRIP_1, IGNORE, IGNORE, 80


Que quiere decir todo esto?

421
Este es el número de la animación roll-out-of-crawlspace. Esta animación se encuentra dentro de los objetos de Lara en los wads revisados.

KEY1_JUMP
Cuando Lara está enfrente de la salida del hueco el movimiento se activa al pulsar la tecla SALTO.


IGNORE
No se ha asignado KEY2_ por ello se pone IGNORE en este campo.

FAN_SET_NEUTRAL_STATE_ID
From the Reference List of NG_Scripter: (De la lista Reference del NG_Scripter)
Este valor fuerza al motor del juego a cambiar el número real del state-id de tu animación, reemplazándolo con un state-id neutral. La ventaja es evitar alguna interferencia creadas en algunas circunstancias por el motor del tomb4.

(Para más detalles ver la sección; Reference section of NG_Scripter.)

ENV_POS_HORTOGONAL + ENV_HOLE_FLOOR_IN_FRONT + ENV_POS_STRIP_1

ENV_POS_HORTOGONAL
Para asegurar que Lara solamente pueda realizar este movimiento cuando se encuentra de frente directamente a la salida de un hueco. No realizará el movimiento si se encuentra colocada de forma diagonal debido a esta condición.

ENV_HOLE_FLOOR_IN_FRONT
Para asegurar que Lara solo realizará el movimiento cuando delante de ella exista un agujero en el suelo o a la salida del hueco.

ENV_POS_STRIP_1
Para asegurar que Lara solo realice el movimiento cuando esté en el borde del saliente, en vez de en el centro del sector.

IGNORE
El movimiento puede llevarse a cabo durante toda la animación de ir a gatas, así que no se requiere de ningún framenumber ni ningún otro valor extra.

IGNORE
No se necesita de Extra value/condition así que pore so se pone IGNORE en este campo.

80
StateID de la animación de Lara de ir a gatas.

Ladder to Crawlspace (De Escalera a Hueco)

Este movimiento le permite a Lara introducirse rápidamente a un hueco cuando está subiendo por una pared escalable. En el TR4, primeramente has de soltarla y rápidamente agarrarse de nuevo y mientras que Lara está sujeta con las manos (antes de que sus pies vuelvan a apoyarse) pulsar el botón AGACHARSE+FLECHA ARRIBA para conseguir que Lara se introduzca agachada en el hueco. Con este movimiento no es necesario hacer todo eso. Todo lo que necesitas hacer es seguir pulsando la tecla FLECHA ARRIBA y Lara se introducirá en el hueco.

Script command

Animation= 445, KEY1_ACTION + KEY1_UP,IGNORE, FAN_KEEP_NEXT_STATEID + FAN_SET_FREE_HANDS, ENV_MULT_CONDITION, 2, -164 ;ladder to crawlspace
MultEnvCondition= 2, ENV_WALL_HOLE_IN_FRONT, 8738, IGNORE, ENV_CLIMB_WALL_IN_FRONT, IGNORE, IGNORE ;ladder to crawlspace

Que quiere decir todo esto?

445
Este es el animationnumber de la animación ladder-to-crawlspace (escalera-a-hueco).
La animación para este movimiento se puede encontrar en el objeto Lara del TRC.

KEY1_ACTION + KEY1_UP
Al llegar Lara a la entrada del hueco escalando una pared el movimiento se realiza pulsando la tecla FLECHA ARRIBA.
Mantén pulsada la tecla ACCIÓN para evitar que Lara se suelte.

IGNORE
No se asigna KEY2_  por esa razón IGNORE es introducido en este campo.

FAN_KEEP_NEXT_STATEID + FAN_SET_FREE_HANDS
FAN_SET_FREE_HANDS indica que las manos de Lara's están vacías así que puede realizar cosas como, escalar, gatear, etc.
Más detalles al respecto lo puedes encontrar en la sección Reference del NG_Scripter.

ENV_MULT_CONDITION
En este caso es necesario más de un ENV_*** así que es necesario ser usado el campo ENV_MULT_CONDITION.

ENV_WALL_HOLE_IN_FRONT
Realiza este movimiento solo cuando haya un hueco en la pared delante de Lara.

8738
Este número especifica algunas condiciones que deben darse con el hueco en la pared. Asegura que Lara solo realizará este movimiento cuando el hueco en la pared es del tamaño mínimo para poder adentrarse (2 clics de altura). Si cuando Lara alcanza un hueco de 1 clic de altura, no podrá introducirse en él, y si el hueco es de 4 clics de altura hará el movimiento normal de subir. Mira la sección Reference del NG_Scripter donde podrás comprobar como se determina este número.

ENV_CLIMB_WALL_IN_FRONT
Realiza este movimiento solamente cuando la pared enfrente de Lara es escalable.

2
Este es el número del ENV_MULT_CONDITION (MultEnvCondition=) que solo ha de usarse cuando realice este movimiento.

-164
Animación de Lara escalando.

Imagen

Scripting Tip    (Consejos con el scripting)

Debido a que muchas de las aplicaciones del TRNG necesitan ser escritas, Si empleas demasiadas aplicaciones nuevas para tu nivel, terminarás con una larga lista en el script.

Todavía mi script no es demasiado largo, pero aun así empiezo a tener la dificultad de recordar la relación que tiene con el significado de cada línea, especialmente con todos los comandos animation=  que llevo en estos momentos, y los de MultEnvCondition= que también necesito usar para algunas de las animaciones.

Así que he añadido el nombre de la animación al final de la cada línea del script, usando
;  antes del nombre, como por ejemplo:

Animation= 218, IGNORE, $4000, FAN_KEEP_NEXT_STATEID, ENV_MULT_CONDITION, 4, IGNORE, -222, -353, -354 ;voltereta hacia adelante en un hueco (roll in crawlspace)

MultEnvCondition= 4 ,ENV_NO_BLOCK_IN_FRONT, 256, IGNORE, ENV_NON_TRUE + ENV_HOLE_FLOOR_IN_FRONT, 512, IGNORE ; voltereta hacia adelante en un hueco (roll in crawlspace)

Animation= 448, KEY1_JUMP, IGNORE , IGNORE, ENV_FRAME_NUMBER, 21, IGNORE, -96 ;ledge jump up


El ; le dice al script que no use nada después del ; hasta que pulse la tecla Aceptar (Enter) para continuar con la siguiente línea. El script seguirá funcionando maravillosamente pero además será mucho más fácil entender a lo que cada línea se refiere exactamente.

IMPORTANTE

Usar la Animation= 445 y la Animation= 287 en el mismo nivel causa un bug con el movimiento del LADDER_TO_CRAWLSPACE. Así que usa ambas animaciones solo si usas el scripting para el estilo del movimiento ladder-to-crawlspace del TRC, y dejando los ajustes predeterminados para el movimiento de hanging-to-crawlspace.

Back to Top