NGLE Manual

 

Manual del NGLE

Calles Transitadas

Por AkyV
Traducido por Pemon

Existen dos tipos de criaturas, neutrales (inofensivos) en los juegos del Tomb Raider:

A- criaturas que son parte orgánicas del juego: GUIDE, BABOON_NORMAL, TROOPS etc.
B- criaturas que tan solo son decorativas: los lizards del nivel “Race for the Iris” del TR4, los peces inofensivos del objeto FISH_EMITTER etc.

El tema de este tutorial es el del tipo B: este tutorial muestra algunas soluciones interesantes para las criaturas del tipo B.

En este tema se dan muchas situaciones: “animales animados de un bosque”, “peces y buzos nadando en el océano”, “gente en el teatro viendo la función y los actores moviéndose en el escenario” etc. Pero en esta ocasión solo nos vamos a centrar en una sola situación: “gente andando/conduciendo en las calles”. (Usa tu imaginación, y date soluciones para otros tipos de situaciones.)

Este tutorial se ha creado para el TRNG 1.2.2.6

1. Usar un objeto ANIMATING como peatón

La primera solución es el hombre del paraguas de la escena de introducción del TR Chronicles:




Usa a este hombre en el wad de tu nivel en cualquier slot ANIMATING. Por ejemplo,  ANIMATING1. Ahora este es uno de tus peatones. Cuando sea activado, empezará a andar. Al llegar al final de su recorrido, será colocado nuevamente al principio de su recorrido. Desde ahí (como no es desactivado (antitriggered) seguirá andando de nuevo hasta llegar al final de su recorrido. Donde se volverá a colocar nuevamente al principio del recorrido. – Y así de forma continuada.

Existen dos cuestiones sobre esto:

1. Como se le va a recolocar al principio del recorrido?
2. Porqué seguirá andando una y otra vez?

1. Un trigger HEAVY marca el final del recorrido. Si pisa sobre el sector con este trigger, lo activará. (Lo puede activar gracias a la constante  NEF_EASY_HEAVY_ENABLING del comando Enemy en el script. – Ver más en la pestaña Referencia del NG Center.) Este trigger está en el “Enemigo. Mover inmediatamente <#> enemigo en lara_start_pos con el (E) OCB” ACTION trigger. #= este objeto ANIMATING1, (E): OCB del objeto LARA_START_POS con un número en la ventana de su OCB (elige cualquier número).

Este trigger transporta a este hombre a la posición del objeto LARA_START_POS que está en el sector donde se le colocó en el NGLE (eje. Al principio de su recorrido). – Cuidado: quizás debas rotar el objeto LARA_START_POS de manera que el hombre camine a partir de aquí en la dirección correcta.

2. Con esta secuencia de animación infinita este ANIMATING representa, no solamente un hombre andando pero varios de ellos. Quiero decir que el jugador puede pensar de que ve un hombre andando desde A a B, y piensa que ve a otro hombre andando también desde A a B etc. – De manera que el jugador cree que puede ver varios peatones andando uno después del otro. Así que es una calle muy concurrida, con muchos peatones – pero solo has usado dos objetos y dos triggers, sin hacer mucho uso de memoria ni de trabajo en la creación de la edición. (Más aún: esta secuencia sin fin quiere decir que hay infinidad de peatones sobre este recorrido. No puedes hacerlo de otra manera.)

Notas:

1. Naturalmente, puedes tener más rutas peatonales, si colocas más ANIMATING1, y un trigger de inicio, un trigger HEAVY y un objeto LARA_START_POS por cada  ANIMATING1. Más aún: naturalmente, puedes usar cualquier otro objeto en cualquier otro ANIMATING slot si no deseas que todos tus peatones sean el mismo personaje.

(No te olvides: los HEAVY triggers no son añadidos a cualquier activador. Por ejemplo, si el ANIMATING1 “A” pasa por un HEAVY que ha de transportar al  ANIMATING1  “B” activará el trigger y entonces el  ANIMATING1 “B” será transportado.)

2. Cualquier ruta ha de ser bien planificada. – Por ejemplo:

El jugador no puede ver cuando el hombre del paraguas comienza a andar ya que el hombre es colocado en un pequeño lugar cerrado en el NGLE. Cuando el hombre es activado, la puerta también es activada: justo delante del hombre. Así que con Lara en la calle, verá al hombre salir del edificio a la calle abriéndose la puerta. (La puerta es temporizada de manera que se cerrará detrás de él.) Entonces el jugador verá que el hombre seguirá andando hasta llegar a la boca del túnel. El hombre se introduce en el túnel para desparecer en la oscuridad del interior. Entonces, de nuevo el jugador verá otro hombre saliendo de nuevo a la calle a través de la puerta del edificio, y así continuamente.

Dos cosas más:

- El pequeño lugar cerrado donde se coloca al hombre y el túnel no deben ser accesibles a Lara. (O el jugador podrá ver como el hombre es transportado de un lugar a otro. Por supuesto esto no es realístico.) Así que debes usar objetos PANEL – ver el proyecto demo sobre Colisión – para evitar que pueda introducirse en el edificio o en el túnel. – ANIMATINGs, como el hombre ignoran estos objetos PANEL, así que no son ningún obstáculo para ellos.

(Hay otras razones para evitarlo. Veamos por ejemplo el túnel: en teoría va a algún sitio, pero, en la práctica no lo es, y que al jugador no se le permita ver el final (que no existe) por supuesto, no permitiendo acercarse demasiado a él.)

- Estas zonas prohibidas tienen grandes posibilidades de serlo. Veamos por ejemplo el pequeño lugar cerrado: el jugador no puede ver el tamaño de ese pequeño lugar, así que puede imaginárselo de cualquier tamaño, como un gran hall. Así que debes editar la fachada del edificio de forma que el jugador se lo imagine como tú quieres que lo haga. (Aunque, si el jugador pudiese apreciar el tamaño de ese pequeño lugar, usa más obstáculos en el camino de Lara o la posición de visión para el jugador, POV para que no pueda apreciarlo – En ese aspecto la puerta cerrada del edificio también es un obstáculo.)



Línea roja: objeto puerta para el hombre
Línea verde: objeto puerta para que Lara salga de la calle
Línea azul: Objeto PANEL
LSP: objeto LARA_START_POS más el objeto del hombre

3. Si estos ANIMATINGs dejan sus lugares durante las rutas, quizás funcionen de una manera errónea. Lo que quiero decir es, que estos objetos puedan aparecer y desaparecer de forma intermitente (o desaparecer) después de salir. Puedes resolver este problema dividiendo la ruta en partes:


 


El hombre empieza desde el objeto LARA_START_POS con el valor 0 en la ventana OCB (LSP0). Llega a su primer HEAVY trigger (H1) que le transportará hasta el objeto  LARA_START_POS con el valor 1 en la ventana del OCB (LSP1). Después el hombre alcanza el Segundo HEAVY trigger (H2) que le transportará hasta el objeto  LARA_START_POS con el valor 2 en el OCB (LSP2). Seguidamente el hombre llega hasta el tercer HEAVY trigger (H0) que le transportará hasta la posición inicial (LSP0).

Todos estos HEAVY triggers son  “Enemigo. Mover inmediatamente <#> enemigo en lara_start_pos con el (E) OCB”.

Tres cosas más:

- El gran salto entre los sectores H1 a LSP1 o H2 a LSP2 es algo feo. Si te preocupa, entonces usa trucos o coloca la ruta en un solo cuarto. (Por ejemplo, un truco: Los sectores de H1 y LSP1 son ocultados a la visión del jugador por un objeto estático, una pared o cualquier otra cosa.)

- Después de esta tercera nota, puede que notes que este pequeño lugar de ruta-calle-túnel de arriba quizás no funcione bien si cada uno de los pequeños lugares, la calle y el túnel solo consta de un solo cuarto. Puedes resolver este problema si colocas más  HEAVYs y LSPs en esa ruta – como arriba. O si el pequeño lugar-calle-túnel consta de de un solo cuarto y las paredes al principio y al final son sectores del cuarto con el botón verde “Wall” creando paredes en ellos:




 

- Ten cuidado! En algunas ocasiones puedes notar que todos/algunos objetos Moveables del cuarto (donde el salto ocurre) se vuelven invisibles al realizar el salto entre cuartos.

4. No olvides: los ANIMATINGs no reaccionan al llegar a una pared, un techo, una pendiente o cualquier otro objeto. Por ejemplo, cuando un ANIMATING se mueve horizontalmente y llega a una pendiente se introducirá en la pendiente y lo que no hará es subir o bajar por ella. Así que, cuando planifiques la ruta para el hombre y, por ejemplo, si quieres que baje por unas escaleras, entonces usa:

un Move ACTION trigger* o
un tipo PARAM_MOVE_ITEM de comandos Parameters en el script y un trigger FLIPEFFECT para activarlo y así hacer que el hombre se mueva de manera vertical  durante su recorrido.

Este ACTION/FLIPEFFECT es un HEAVY trigger y es activado por el hombre cuando alcance la parte superior de las escaleras.

*: Introduce un número en la ventana OCB del objeto: esta es la velocidad de este movimiento.

5. Si lo deseas puedes hacer que el hombre gire por una esquina. Todo lo que debes hacer es usar un trigger Girar ACTION o un PARAM_ROTATE_ITEM type comandos Parameters en el script y un trigger FLIPEFFECT para activar que el hombre gire a su  alrededor.

Este ACTION/FLIPEFFECT es un HEAVY trigger y es activado por el hombre cuando alcance la esquina.

6. Si Lara está luchando con un enemigo en una calle concurrida, los peatones saldrán corriendo y después de finalizar la pelea volverán de nuevo a su lugar. – Oh, esto sería estupendo si supiera como conseguirlo, pero no lo sé. Si la pelea comienza los peatones no harán nada tan solo continuarán con su movimiento normal.

Por supuesto esto es ilógico. Si quieres evitar esto, definitivamente hay algunas soluciones. Una de ellas es prohibir peleas en esta calle – por ejemplo, hacer algo como esto:

a- No permitir que Lara lleve armas en la mano cuando se encuentre en una calle concurrida. (Por ejemplo, usando los FLIPEFFECTs: “Lara. (Armas) Retirar las armas o bengala de las manos de Lara” o “Lara. (Armas) <&> Activar/Desactivar el uso de armas para Lara”.) Cuando Lara se vaya de la calle, entonces puedes permitirla usar de nuevo las armas (con otro trigger “Lara. (Armas) <&> Activar/Desactivar el uso de armas para Lara” trigger).

b- Usar el botón gris “Box” (o un objeto puerta que cierre justamente delante del enemigo) de forma que este enemigo no pueda seguir a Lara a la concurrida calle.

7. Aliviar la memoria: antitrigger estos peatones justo cuando estén fuera del alcance de visión del jugador POV (se quedarán parados justo donde se encuentren en ese momento), y vuelve a activarlos cuando el jugador pueda de nuevo volver a verlos (comenzarán a moverse justo en el punto donde se quedaron quietos).

8. Por supuesto no necesitas estas rutas infinitas en todos los sitios. Quiero decir, que si quieres colocar un solo peatón en su ruta, no necesitas transportarlo desde el punto final al punto del principio. En ese caso todo lo que debes hacer es colocar el peatón, activarlo y colocar un HEAVYANTITRIGGER al final de su recorrido para que él solo se desactive.

9. Mi experiencia: La constante NEF_EASY_HEAVY_ENABLING nunca será válida para los movimientos que son animados por los emitters.

2. Usar un enemigo como peatón

La segunda solución es sobre el bueno del viejo BADDY_1:




Pero esta vez el BADDY_1 no es malo. Solo es un peatón sin que te ataque (andando con sus armas….) – porque lo usarás en tu WAD en el ANIMATING slot. Por ejemplo,  ANIMATING2. (No se requiere del MESHSWAP.)

De las animaciones de este ANIMATING, tan solo hay una animación que nos ocupa ahora – la animación de andar: Animación32. Debes copiar esta animación a la  Animation0 en el Animation Editor de WADMerger, debido a que la Animation0 es por regla  general la animación del principio de todos los ANIMATING.

Después de hacerlo, cambia un poco esta animación:

a- Comprueba que algunos de los valores son iguales a los del BADDY_1 a las animaciones de andar: FrameRate=2, Speed=32, Accel=0. (O, si quieres, cámbialos de una manera lógica.)
b- Esta Animation0 es una animación continuada, así que NextAnimation=0 y NextFrame=0.
c- El StateID es el estado general de cualquier ANIMATING: 0.
d- El State Change Editor debe estar completamente vacío.

Después de ello, haz todo lo necesario sobre este peatón como harías con el hombre del paraguas de arriba.

Notas:

1. "La Animation0 es por regla  general la animación del principio" lo que quiere decir que el ANIMATING puede usar otra animación al ser activado. Quiero decir que el  ANIMATING usará otra animación al principio de su movimiento (y no la de andar,  Animation0) si existe un trigger Force ACTION solapada con su trigger de iniciarla. En este caso el ANIMATING usará el principio de la animación que elijas en la ventanilla (E)xtra: de esa ACTION. (Cualquier animación que use el ANIMATING, no olvides los mismos tipos de cambios que los que hiciste en aquella animación del Animation0.)

Si lo deseas activa un ACTION como este más tarde, cuando este ANIMATING esté activo: de esa manera el ANIMATING cambiará su animación (También puedes cambiar la animación si unes las animaciones, usando la ventana del  NextAnimation.)

Más aún: puedes usar algunas condiciones de (GlobalTriggers etc.) para hacer cambiar la animación en ciertas circunstancias. (Con animaciones inteligentes, editando/cambiando/usando condiciones inteligentes quizás puedas crear una buena solución –ver arriba- el caso de " los peatones saldrán corriendo y después de finalizar la pelea volverán de nuevo".)

Ten cuidado: si esta configuración es demasiado compleja, entonces el ANIMATING podría evitar algún HEAVY que no le está permitido evitar.

2. Vamos a suponer que deseas colocar un perro inofensivo andando por la calle. Debes hacer lo mismo con el perro (colocando el DOG enemigo en un ANIMATING slot) como hicistes con el ANIMATING baddy: coges la animación de andar, la colocas en el  Animation0, y la cambias.

Pero que pasa si lo que deseas es que este perro sirva como mascota del hombre del paraguas? Entonces los colocas uno al lado del otro en el NGLE y los activas al mismo tiempo. En el juego el jugador verá al “hombre andando con su mascota”. (Si el ritmo de la animación de andar de ambos no son iguales, y si uno de ellos se adelanta, entonces tendrás que modificar la animación de uno de ellos o ambos: Speed y/o los valores del FrameRate, para sincronizar sus animaciones.)

3. Coches

La tercera solución es sobre el taxi (ANIMATING9) del nivel del TR4 “Street Bazaar”




Copia este ANIMATING9 a tu WAD.
Este coche has de usarlo igual al del hombre del paraguas, excepto en lo siguiente:

a- El coche no tiene una animación de movimiento. Así que debes crear una.
b- El coche debe tener un sonido de motor. Así que debes ponérselo.
c- El coche debe poder atropellar a Lara. Así que debes configurar esta posibilidad. (Este es el punto donde el tipo de “coche” decoración es una trampa.)

a, Por supuesto debes usar de nuevo el Animation0. Puedes verlo aquí ahora: FrameRate=1, Speed=0, StateID=0, Accel=0, NextAnimation=0, NextFrame=0. Todo lo que debes hacer aquí es poner un valor de speed (velocidad). En este momento debes poner un valor negativo o el coche se moverá hacia atrás. (Creo que -200 es un buen valor para un coche rápido.) – Ten cuidado: un signo menos sin números en la ventanilla de Speed puede que cierre el WADMerger.

(Así que por ahora eso es todo sobre la edición de la animación. Si lo que quieres es una animación perfecta – como que las ruedas del coche giren – entonces necesitas editar más.)

b, Los sonidos siempre son un tema difícil en la edición del Tomb Raider– justo como ahora:

- No puedes usar un objeto de sonido: porqué el coche está en movimiento.

- No puedes usar un FLIPEFFECT de sonido (colocado, exportado a un TriggerGroup o exportado como un AnimCommand), porqué estos sonidos siempre son reproducidos al mismo volumen, independientemente de la extensión del espacio entre Lara y el coche. (Podrías ajustar el volúmen del sonido con variables pero es demasiado difícil par este caso.)

- Así que vas a usar el “Play Sound” AnimCommand en el Animation Editor de WADMerger. Pero un sonido repetitivo (loop sound)  no se reproduce bien con Play Sound – a pesar del “moving jeep” loop sound (JEEP_MOVE, ID: 155) sería perfecto para esta finalidad.

Así que vas a usar un solo sonido (single sound): añádelo a la única frame (frame0) de la Animation0, usando el  Play Sound AnimCommand.

Esta es una animación continua (loop animation) (ver: NextAnimation=0, NextFrame=0) y este sonido será reproducido en todas las frames. Debido a esta densidad el jugador pensará que es un sonido continuado. (Quizás sea algo denso. Quiero decir el tiempo que conlleva un frame puede que sea algo corto para que este sonido sea reproducido correctamente. Si eso es lo que notas, entonces usa más frames para la animación: todas las frames son como la frame0 pero no hay frames añadidas con este sonido a parte del frame0.)

Yo he elegido el sonido SCALE1 (ID: 98) como este sonido único. (Ya sé que es algo… Pero he pensado que sería bueno como ejemplo.) Puedes elegir otro si así lo deseas. (Usa el Sound Editor de WADMerger para añadirlo a tu WAD y Sound en la barra del menú desplegable del Animation Editor para añadírselo a este objeto antes de añadirlo a ese frame.)

- Si usas PARAM_MOVE_ITEM o PARAM_ROTATE_ITEM para moverlos entonces quizás puedas necesitar hacer uso de estas constantes para añadir sonidos al coche.

c, Necesitas estos GlobalTrigger en el NG Center\Script:

GlobalTrigger= 1, FGT_PUSHING_COLLISION, GT_COLLIDE_SLOT, ANIMATING9, IGNORE, 1, IGNORE
TriggerGroup= 1, $2000, 89, $12

FGT_PUSHING_COLLISION: constante técnica
GT_COLLIDE_SLOT, ANIMATING9, …, 1: dice que el TriggerGroup#1 ocurrirá si  Lara toca cualquier objeto taxi

; Exporting: TRIGGER(18:0) for FLIPEFFECT(89)
; <#> : Lara.
(Health) Damage Lara, decreasing life by <&>percentage of full vitality in (E) way
; <&> : 10 Percentage
; (E) : Immediatly, one-shot
; Values to add in script command: $2000, 89, $12


Este trigger reduce la vida de Lara en un 10 por ciento.

Lo que nos dice el GlobalTrigger: “cada vez que Lara entre en contacto con un taxi perderá un 10 por ciento de vida”.

Notas:

- Este 10% quizás no sea  la cantidad exacta. Depende de la velocidad del coche.

- Estos daños no serán realísticos ya que podrías editar el nivel en la manera de que Lara no vaya hacia un taxi parado o uno lento. (O permitir que este coche no le cause ningún daño: olvídate de la habilidad de poder sobrepasarlo, desactiva el  GlobalTrigger.)

(Es posible usar diferentes velocidades para la Animation0 del ANIMATING9 durante el juego: puedes cambiar los valores de la Velocidad (Speed) de la animación con variables. Además, un taxi al que no se le activa/es desactivado, se queda parado.)

- Si Lara es tocada por la parte trasera de un coche esto no es realístico. Pero si el coche que lleva la suficiente velocidad cuando Lara va corriendo hacia él para cogerlo pero no puede alcanzarlo. (No vamos ahora a preocuparnos de coches dando marcha atrás.)

- Creo que causarla daño por tocarla con el lateral de un coche no es realístico: “el coche aparta a Lara”.

- Lara puede ser dañada si cae encima de un coche desde una gran altura. En este caso no importa si el coche está o no en movimiento. (Pero si es una pequeña caída desactiva el GlobalTrigger.)

- Los coches no deben atropellar peatones o enemigos. Así que no permitas a los peatones (que sus rutas se crucen sobre las rutas de los coches) o de los enemigos (por ejemplo usando el botón “Box” del editor) cerca de los coches.

- Si solo vas a usar un coche, no es necesario utilizar un trigger del inicio ni un HEAVYANTITRIGGER, (ver Capítulo#1 nota#8). Lo que quiero decir es que como el coche no tiene la animación con más frames, (ya que la única animación solo tiene un frame) puedes hacer eso, colocar el coche y moverlo ahora tan solo con la constante  PARAM_MOVE/ROTATE_ITEM (o con triggers ACTION similares).


CONCLUSION

Esto, realmente es una calle concurrida:

Quizás demasiado activa. Esta imagen tiene 8 rutas: 4 rutas de hombres con paraguas, la ruta del ANIMATING  “1 baddy” y 3 rutas de coches. Quizás sea demasiado para el motor del juego, con lo cual no hay razón para sorprenderse si algunos de estos  ANIMATINGs no funcionen correctamente. (lo que quiere decir es que el  ANIMATING ignorará el trigger HEAVY de transportar, de manera inmediata o después de alguna activación).
Creo que el problema (ante todo) no es cuantas rutas existen o (cuales) son los objetos que están activos al mismo tiempo en el juego. Pero cuantas activaciones HEAVY de transportar ocurren durante un pequeño espacio de tiempo. (No de la problemática del HEAVY de transportar un objeto si no del la transportación de cualquier HEAVY eb el nivel.)

Nota:
Al fondo puedes ver un túnel al que se le debe de prohibir el acceso a Lara. (No el mismo túnel que hay en el ejemplo de arriba.) Puedes usar objetos PANEL para evitar  introducirse ahí o (si la calle y el túnel no están en el mismo cuarto, haciendo de  la entrada del túnel un portal)  puedes usar texturas totalmente transparentes en la boca del túnel con el modo “Toggle Opacity”.

Back to Top