RS:Descripción básica del sistema de señales en RS
De TrenSimpedia
Este documento es una explicación del contenido de parte de la documentación oficial de Rail Simulator, en particular de los documentos de las Developer Tools:
- 3.01 Signal Setup & Scripting Guide
- 3.02 Signalling Interface Parameters
Este artículo o sección se encuentra en fase de desarrollo por parte de un contribuidor. Es posible que la información suministrada aquí no sea completa. Ampliándolo ayudarás a mejorar la TrenSimpedia, pero recuerda que alguien posiblemente ya tiene en mente completarlo.
|
Contenido |
Introducción
Cada señal en el mundo ferroviario del simulador es una instancia de un determinado tipo de señal, que viene definido por el blueprint de la señal, por un modelo 3D concreto y por un script que determina sus acciones.
Por tanto, los elementos básicos que disponemos para configurar una señal son:
- el modelo 3D de la señal
- el blueprint
- el script asociado
El blueprint es el nexo común a todos ellos y determina:
- el modelo 3D que utilizará el simulador para esta señal
- el nombre que aparecerá en el Editor de rutas
- el script LUA que se utilizará para controlar el comportamiento de la señal
Los scripts reaccionan a acontecimientos tales como que un tren rebase la señal o la recepción de un mensaje emitido por otra señal, y, en consecuencia, determinan acciones como cambiar el aspecto de la señal, conmutar las luces, activar cualquier animación sobre las piezas móviles que pueda tener la señal o emitir nuevos mensajes a otras señales.
En este artículo se pretende mostrar una visión general sobre estos conceptos.
Funcionamiento del sistema de señalización
El sistema de señalización en Rail Simulator está basado en la existencia de elementos asociados a las vías, las señales, que se activan mediante eventos y que pueden intercambiar mensajes usando la propia red de vías como encaminadora o enrutadora de estos mensajes. Adicionalmente, una composición de tren puede ser a su vez receptora o generadora de mensajes.
Las señales
Son elementos que tienen obligatoriamente un enlace con la vía, el denominado "Link 0". Es en este punto de la vía, el que está asociado al link 0, el que dispara eventos asociados al paso de una composición, o el punto en el que recive o genera mensajes para el resto de la señalización.Opcionalmente, una señal puede tener uno o más enlaces adicionales a vías, los denominados "Link 1", "Link 2", "Link 3", etc.
Físicamente una señal puede ser todo aquello que deseemos, pero típicamente entenderemos por señales a:
- Las señales principales o de parada absoluta.
- Las señales avanzadas, de repetición o de distancia.
- Los indicadores de agujas y los de dirección de ruta.
- Las balizas de los sistemas de señalización.
En resumen, una señal es todo aquel objeto asociado a la vía que puede actuar:
- ante el paso de una composición
- ante el cambio de una ruta
- o bien intercambiando mensajes
Los eventos de las señales
El código asociado a una señal no está en ejecución normalmente. Éste tan sólo se activa ante la reacción frente a un evento que dispara una parte de dicho código: las denominadas funciones. Estas funciones pueden ser invocadas por cuatro tipos de eventos:
Eventos de paso de una composición
Cuando una composición en su movimiento por las vías alcanza el punto donde está situado el "Link 0" de una señal, la simulación invocará una función de la señal para notificar de dicho evento.
En esta situación el código de la señal puede distinguir:
- Si la composición está rebasando el "Link 0" de la señal en el sentido de la marcha (de la señal), es decir en la dirección de la flecha que muestra el "Link 0".
- Si la composición está rebasando el "Link 0" de la señal en sentido de contramarcha (de la señal), es decir en la dirección contraria a la flecha que muestra el "Link 0".
- Si el elemento de la composición que ha rebasado el "Link 0" es la cabeza del tren en el sentido de la marcha de la composición (sea este elemento una locomotora o no). Es decir, el tren está empezando a rebasar la señal.
- Si el elemento de la composición que ha rebasado el "Link 0" es la cola del tren en el sentido de la marcha de la composición (sea este elemento una locomotora o no). Es decir, el tren ha terminado de rebasar la señal.
Eventos de recepción de un mensaje
Cuando un mensaje que está circulando por las vías alcanza un enlace de la señal, una función es invocada y puede:
- Leer el mensaje y sus parámetros, y destruir el mensaje (para que no siga circulando).
- Leer el mensaje y sus parámetros, y dejar que siga circulando.
- Ignorar el mensaje y dejar que siga circulando.
Eventos de cambio de ruta
Cuando una señal además del enlace principal a vía, el "Link 0", dispone de otros enlaces, se establece un estado de "conexión" entre estos enlaces adicionales y el "Link 0".
Se disparará un evento cuando, por la manipulación de las agujas que puedan haber (una o más) entre el enlace principal y alguno de los enlaces adicionales, se produce un cambio del estado de su "conexión". Es decir, deja de existir una ruta válida entre los dos enlaces, o bien se establece una ruta válida entre ellos.
Este evento disparará una función asociada al enlace que ha cambiado su estado.
Eventos del sistema
Además de los eventos señalados anteriormente, y que están ligados al propio sistema de señalización, el simulador puede disparar otros eventos que invoquen funciones especiales de las señales. A título de ejemplo:
- Inicialización del sistema al comienzo de una sesión o actividad.
- Actualización periódica de las señales, por ejemplo al final de cada frame de visualización.
- ...
Los mensajes
Los mensajes los generan siempre las señales, posiblemente inducidos por la lógica asociada a un evento.
Los mensajes se pueden generar:
- En el sentido de la marcha de la señal (dirección de la flecha del "Link 0").
- En sentido de contramarcha de la señal (dirección opuesta al de la flecha del "Link 0").
- En ambas direcciones.
Los mensajes "circulan" por las vías hasta que una señal los intercepta y destruye, o hasta que llegan a una topera o a una interrupción de la ruta por un aguja no establecida, o por un puente giratorio no orientado.
Frente a una aguja tomada de punta, los mensajes seguirán la ruta establecida por la aguja, e ignorarán la ruta o rutas alternativas que pudieran existir.
Los mensajes pueden tener parámetros que los identifiquen y/o cualifiquen.
Los trenes
Adicionalmente a lo expuesto, los scripts de simulación de los trenes pueden también interactuar con los mensajes y tiene a su vez eventos asociados al sistema de señalización. Esto ha de permitir los sistema embarcados a bordo de las locomotoras.
Construcción de señales
Particularidades a tener en cuenta en la construcción del modelo de la señal
Blueprints para señales
Existen dos tipos de blueprint para señales:
- Signal Blueprint Define una señal y su script LUA.
- Anim Signal Blueprint Define una señal, sus animaciones asociadas y su script LUA.
Una señal, como cualquier otro blueprint de RS, puede tener anidados (Container -> Children) otros blueprints de señal. Este caso es especialmente útil para definir una cabeza de señal y diferentes mástiles, y asociar una cabeza de señal a cada mástil o varias cabezas a un mismo mástil. En la situación de una señal múltiple construida de esta manera, tanto se puede definir el script asociado al mástil (un sólo script que controle todas las señales del mástil) o a cada cabeza de señal (scripts específicos e independientes para cada señal en el mismo mástil).
Los atributos principales del blueprint de señales son:
Display Name – Es el nombre con el que esta señal aparecerá en la lista de objetos del Editor, para cada uno de los idiomas que soporta Rail Simulator. El nombre debe ser único, pues en caso contrario una señal esconderá la existencia de otra, que no será seleccionable. Asimismo, debe ser bastante corto, para evitar que no sea totalmente visible en el editor, en particular en monitores con baja resolución.
Category – Las señales deben ser categorizadas como "Infraestructura de vías" (Track infrastructure) para garantizar que aparecen en la sección correcta de la lista de objetos del editor.
Geometry ID – Este es el modelo 3D usado para este tipo de señal.
Signal - Number Of Track Links – Esto establece el número de enlaces que la señal tendrá cuando la coloquemos en la simulación, tal como hemos visto en la introducción a las señales. Será necesario un mínimo de un enlace (Link 0).
Signal - Stopping – Determina si un tren debe parar ante esta señal. En la mayoría de los casos este parámetro debe ser True para que los trenes se detengan en la señal si la vía está bloqueada delante; pero para ciertas señales (como una señal avanzada), el parámetro debe ser False.
Script – El script LUA que se utilizará para controlar el comportamiento de esta señal.
Estructura de nodos
Para que los scripts de las señales puedan interactuar correctamente con éstas, deben referenciar unos nodos determinados que les permitan modificar el estado de las señales. Dichos nodos pueden ser:
Luces
Estos nodos están definidos en el modelo 3D de la señal, como luces glow, y el script debe conocer los nombres que el autor del modelo ha dado a cada punto de luz que deba activar y/o desactivar.
Para ello convendría establecer una convención de nombres que sigan los nodos de luces de las señales. Más que definir los colores de las luces, sería mejor definir los aspectos de las señales, y que el modelo determine la posición y color de cada una de las luces implicadas en dicho aspecto:
Aspecto | Nombre de Nodo | Posibles luces (p.e.) |
---|---|---|
Parada absoluta | SGASP_STOP | Rojo. |
Rebase autorizado | SGASP_PROCEED | Rojo y blanco. |
Parada diferida | SGASP_STOP_ASAP | Rojo y amarillo. |
Anuncio de parada | SGASP_WARNING | Amarillo. |
Anuncio de precaución | SGASP_WARNING2 | Amarillo y verde. |
Vía Libre | SGASP_CLEAR | Verde. (o Blanco) |
... | ||
... |
Animaciones
Los nodos de las animaciones se definen en el blueprint, aspecto éste que no es tan crítico pues puede ser subsanado en caso necesario.
No obstante, convendría también definir unos nombres de nodos establecidos para que un script pueda ser genérico a varias señales si es preciso.
Para señales animadas de dos posiciones:
Acción de la animación | Nombre de Nodo | Observaciones |
---|---|---|
De abierta a cerrada | SGANI_CLEARTOSTOPnn | Siendo nn un valor numérico de dos posiciones que define el número de brazo de una señal de múltiples brazos. Si la señal tiene un único brazo se incluirá igualmente este valor y será 01. |
De cerrada a abierta | SGANI_STOPTOCLEARnn | Siendo nn un valor numérico de dos posiciones que define el número de brazo de una señal de múltiples brazos. Si la señal tiene un único brazo se incluirá igualmente este valor y será 01. |
Para señales animadas de tres posiciones posiciones:
Acción de la animación | Nombre de Nodo | Observaciones |
---|---|---|
De abierta a cerrada | SGANI_CLEARTOSTOPnn | Siendo nn un valor numérico de dos posiciones que define el número de brazo de una señal de múltiples brazos. Si la señal tiene un único brazo se incluirá igualmente este valor y será 01. |
De abierta a precaución | SGANI_CLEARTOWARNnn | Siendo nn un valor numérico de dos posiciones que define el número de brazo de una señal de múltiples brazos. Si la señal tiene un único brazo se incluirá igualmente este valor y será 01. |
De precaución a cerrada | SGANI_WARNTOSTOPnn | Siendo nn un valor numérico de dos posiciones que define el número de brazo de una señal de múltiples brazos. Si la señal tiene un único brazo se incluirá igualmente este valor y será 01. |
De precaución a abierta | SGANI_WARNTOCLEARnn | Siendo nn un valor numérico de dos posiciones que define el número de brazo de una señal de múltiples brazos. Si la señal tiene un único brazo se incluirá igualmente este valor y será 01. |
De cerrada a precaución | SGANI_STOPTOWARNnn | Siendo nn un valor numérico de dos posiciones que define el número de brazo de una señal de múltiples brazos. Si la señal tiene un único brazo se incluirá igualmente este valor y será 01. |
De cerrada a abierta | SGANI_STOPTOCLEARnn | Siendo nn un valor numérico de dos posiciones que define el número de brazo de una señal de múltiples brazos. Si la señal tiene un único brazo se incluirá igualmente este valor y será 01. |