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
Llegado
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