|

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