UP844 Posted September 22, 2023 Posted September 22, 2023 Premessa Per ulteriori materiali di riferimento, vedere i link in questa discussione (quasi tutti in inglese, uno estremamente tecnico) 1.1 Come prima cosa, definiamo le variabili nella sessione: non è strettamente necessario. Si può fare anche più avanti nel corso della sessione e in teoria, si può anche non fare, ma la risposta di N3V a cosa succeda in questo caso è stata "Non lo sappiamo, non fatelo". Le prime quattro regole nella schermata definiscono: la variabile "time", che indica il tempo in secondi trascorso dall'inizio della sessione. la variabile "232", che indica la posizione del merci incrociante lungo la linea (serve per gestire la sede di incrocio) la variante "Ranking_Points" (nome obbligatorio) che tiene conto del punteggio e viene visualizzata in alto a destra la variabile "next weather [change]" che indica tra quanti secondi avrà luogo il prossimo cambiamento del tempo atmosferico 1.2 Le variabili sono impostate con una regola "Variable Modify": Nella prima riga si seleziona: prima l'operazione da compiere sulla variabile: l'opzione "Change variable to" può essere sostituita da "Add to variable" o "Subtract from variable". poi il nome della variabile coinvolta infine il valore a cui la variabile deve essere impostata, o che deve essere aggiunto o sottratto alla variabile. Due caselle di spunta permettono di impostare un valore massimo e minimo per la variabile 2. Il secondo gruppo è costituito da 2 regole "Variable Modify Continuously": è una variante della regola "Variable Modify" che ha le stesse impostazioni, più "every [xxx] seconds". La prima regola "Variable Modify Continuously" aggiunge 1 alla variabile "time" ad ogni secondo La seconda toglie 1 alla variable "next_weather" a ogni secondo 3. La regola "Display Custom HUD" permette di visualizzare sullo schermo le variabili della sessione. Ha una solo impostazione: può essere reso visibile o meno 4. L'ultimo gruppo è costituito da 5 regole "Variable Show": le due possibili impostazioni sono di visualizzare/non visualizzare la variabile "NomeVariabile" nel Custom HUD con l'etichetta "EtichettaVariabile". Ed ecco il risultato: in alto a destra viene visualizzato il valore di "Ranking_Points" (qui ancora a 0 perché non è stata completata la prima fase della sessione, ovvero la formazione del treno) poco sotto, appare il rettangolo nero del Custom HUD in cui appaiono le etichette ed il valore delle variabili definite dalle regole "Variable Show" la riga "Time" indica che il valore della variabile "time" è 218 (sono i secondi passati dall'inizio della sessione) e questo valore aumenta di 1 ad ogni secondo, come definito dalla rispettiva regola "Variable Modify Continuous". la riga "spadtime" non indica alcun valore della variabile "spadtime" perché non è stata definita con un "Variable Modify" (mio errore) la riga "Progress" indica che il valore della variabile "232" è 0 (non ha ancora lasciato la stazione di Heldenbergen) la riga "Weather" indica che il valore della variabile "weather" è 2 (nuvoloso) la riga "Next change" indica che il valore della variabile "next weather" è 500 (tra 500 secondi il tempo cambierà) e questo valore aumenta di 1 ad ogni secondo, come definito dalla rispettiva regola "Variable Modify Continuous". Quando il valore scende a zero, verrà generato un nuovo valore di "weather", vedremo dopo come. Il Custom HUD - come i messaggi emessi dagli script - serve essenzialmente solo durante la fase di sviluppo, per verificare che le variabili si comportino come devono ed abbiano l'effetto desiderato sulle altre regole. (segue...) 1
UP844 Posted September 28, 2023 Author Posted September 28, 2023 Vediamo come si implementano le penalità per il giocatore (i punti vengono assegnati al completamento delle varie fasi: formazione treno, piazzamento treno, arrivo nelle stazioni, completamento delle operazioni di carico/scarico, rientro in rimessa). Dal momento che la "Zementzug" è una sessione con un treno merci, non ci sono penalità legate al rispetto dell'orario. Nella sessione "REG 1910" con gli ATR ci sono, e in questa mi ero baloccato con l'idea di aggiungere penalità nel caso in cui il merci causi ritardi ai Regio. Però è un'eventualità abbastanza improbabile, perché il merci del giocatore parte circa 10 minuti prima del Regio dalle 9.22 da Bad Vilbel e al ritorno parte dopo quello delle 9.48 da Heldenleben. Inoltre non ho voluto complicarmi la vita, trattandosi della mia prima sessione funzionante dopo anni (la REG 1910 è da rifare di sana pianta). 1 - regola "Ranked Session Begin". 1.1 Le impostazioni di questa regola sono due: il punteggio corrispondente a 1, 2, 3, 4 e 5 stelline (in questo caso, 400, 800, 1200, 1600 e 2000), nonché la modalità con cui viene conteggiato il tempo. Adesso, all'avvio della sessione appare il valore impostato (vedi post precedente) per la variabile "Ranking_Points" 2 - regola "ATP Speed Limiter" 2.1 Questa regola ha una sola impostazione: a quante miglia orarie scatta il dispositivo di sicurezza e vengono azionati i freni. In questo caso, l'ho impostato al valore corrispondente a 3 km/h [Nota: non fidatevi troppo dell'indicazione dell'HUD, può avere uno scarto di +/- 1 km/h] 2.2 Impostata come regola figlia (rientrata), che scatta quando è verificata la condizione della regola madre, una regola "Variable Change" sottrae 50 punti dal valore di "Ranking_Points" 3 - regola "Signal Passed at Danger Check Rule" 3.1 La regola non ha impostazioni: si limita a rilevare se il treno del giocatore passa un segnale a via impedita. Le conseguenze sono determinate dalle regole figlie. 3.2 Impostata come regola figlia, una regola "Variable Change" sottrae 100 punti dal valore di "Ranking_Points" 4 - regola "Wheelslip Check" [versione beta "Cavia 2"] 4.1 La regola ha un'unica impostazione: il nome del macchinista a cui si applica. Nella versione attuale, controlla ogni 5 secondi se la locomotiva del macchinista impostato sta slittando e nel caso sottrae 10 punti dal valore di "Ranking_Points". Non ha effetto in caso di guida in modalità DCC, e quindi non ne ha su un treno guidato dall'IA 5 - Regola "Coupler Breakage Check" 5.1 Verifica se ci sono ganci spezzati, che possono essere causati da eccessi di trazione o, più facilmente, da un aggancio a velocità eccessiva (più di 5 km/h). Il valore predefinito a cui si rompono i ganci è di 2.500 kN, corretto per i ganci automatici ma eccessivo per quelli a tenditore. Nelle varie regole "Vehicle Physics" (le vedremo più avanti) l'ho impostato a 800 kN. Il valore massimo della velocità di aggancio dovrebbe essere impostato a 6 km/h, vista l'inaffidabilità dell'HUD: mi è capitato di rompere i ganci con l'HUD che segnava 5 km/h. 5.1 bis Una regola figlia "Message Popup" avvisa il giocatore dell'avvenuta rottura dei ganci e mette in pausa il gioco fino a quando non viene chiusa la casella 5.2 Una regola figlia "Ranked Session Complete" chiude la sessione come "fallita" e fa apparire la valutazione a centro schermo (vedi ultima immagine del post precedente) 6 - Regola "Wait for Derailment" 6.1 Verifica la presenza di rotabili deragliati, e nel caso, attiva le regole figlie 6.1 bis Una regola figlia "Message Popup" avvisa il giocatore dell'avvenuta rottura dei ganci e mette in pausa il gioco fino a quando non viene chiusa la casella 6.2 Una regola figlia "Ranked Session Complete" chiude la sessione come "fallita" e fa apparire la valutazione a centro schermo (vedi ultima immagine del post precedente) Le regole "Message Popup" ai punti 5.1bis e 6.1 bis sono provvisorie: sono state inserite per controllare il corretto funzionamento della regola madre. Sia nel caso della rottura dei ganci, sia nel caso del deragliamento, la sessione finisce perché, a parte che si tratta di eventi che nella realtà non si risolverebbero in pochi minuti, la sessione contiene numerosi controlli della composizione del treno e quindi non potrebbe proseguire. Per esempio, se durante la formazione del treno la loco e il primo gruppo di vagoni urtassero il secondo gruppo rompendo i ganci dei due vagoni, sarebbe possibile proseguire con parte dei carri agganciati alla locomotiva, ma lo spezzone di treno non supererebbe i controlli successivi. (continua - prossima puntata: il tempo atmosferico) 1
UP844 Posted October 1, 2023 Author Posted October 1, 2023 Esistono una serie di regole per variare il tempo atmosferico, ma per una serie di ragioni non le ho trovate soddisfacenti: quindi, a costo di usare 20 regole al posto di una, ho concepito questa sequenza: Sezione 1 - Determinazione delle condizioni atmosferiche e della durata della condizione attuale 1.1 - Regola "Ordered List" Questa regola è sempre attiva (non è rientrata), esegue le regole figlie in sequenza ed e impostata per ripartire una volta completata la sequenza delle regole figlie (può essere impostata anche per eseguire la sequenza una sola volta) 1.2 - Regola "Variable Check" Controlla - ad ogni secondo - se la variabile "next_weather" è uguale a 1 [secondo]. Se tale condizione è vera, vengono eseguite le successive regole figlie della "Ordered List" di cui al punto 1.1 La variabile "next_weather" diminuisce di 1 ogni secondo (vedi primo post, punto 2). A inizio sessione è impostata a 2, quindi dopo 1 secondo parte questa sequenza. 1.3 - Regola "Variable Random" Genera un valore casuale da 1 a 5 per la variabile "weather". Tale valore verrà utilizzato in seguito per impostare l'aspetto grafico del tempo e influenzare la fisica del moto dei treni. 1.4 - Regola "Variable Random" Genera un valore casuale da 300 a 1800 per la variabile "weather" (da 5 a 30 minuti). Tale valore diminuisce di 1 a ogni secondo (vedi primo post, punto 2) e quando arriva a 1 fa scattare la regola "Variable Check" di cui al punto 1.2 qui sopra, provocando una nuova esecuzione delle regole 1.3 e 1.4. Sezioni 2, 3, 4, 5 e 6 - Implementazione degli effetti delle condizioni atmosferiche Queste 5 sezioni corrispondono ai valori della variabile "weather" e sono tutte uguali, a parte i valori impostati in ogni regola "Vehicle Physics" 2.1 - Regola "Variable Check" Questa regola è sempre attiva (non è rientrata), controlla - ad ogni secondo - se la variabile "weather" è uguale a 1 e se tale condizione è vera, vengono eseguite le figlie 2.2 - Regola "Weather" Imposta il tempo su "Clear" (sereno) con i relativi effetti grafici. Non ha alcun effetto sul comportamento dei rotabili. 2.3 - Regola "Vehicle Physics" Imposta alcuni parametri (sono indicati a fianco del nome della regola), ovvero: Aderenza [per "sereno": 100%] = coefficiente applicato alla forza di trazione massima ammessa, oltre la quale la locomotiva slitta. Per esempio una locomotiva la cui massima forza di trazione ammessa è di 300 kN, con un questo coefficiente al 90% slitta a 270 kN. Aderenza in caso di slittamento [per "sereno": 25%] = coefficiente applicato alla forza di trazione sviluppata dalla locomotiva. Per esempio, la locomotiva di cui sopra, se eroga 320 kN slitta, ma erogherà comunque una forza di trazione di 0,25 x 320 = 80 kN che potrebbe essere sufficiente per vincere tutte le resistenze del treno o no: dipende da molti altri fattori. Efficacia della sabbia [per "sereno": 10%] = coefficiente applicato alla forza di trazione sviluppata dalla locomotiva. Sempre facendo riferimento alla locomotiva di cui sopra, con l'uso della sabbia slitterà a 300 + 10% = 330 kN anziché ai normali 300. Le sezioni 3, 4, 5 e 6 sono identiche alla sezione 2, a parte il tempo che viene impostato nella sezione x.2 e i parametri impostati nella sezione x.3 Nota: il sistema è piuttosto rozzo, dal momento che è perfettamente possibile passare da un rovescio fortissimo a un cielo completamente sereno: mi è capitato, per esempio di partire con un cielo privo di nuvole e trovarmi improvvisamente sotto un diluvio mentre stavo partendo con i motori al massimo dello sforzo, con conseguente slittata. Ho provato a rendere graduale la variazione di aderenza in base a quanto sono bagnate le rotaie, ma il sistema che funzionava benissimo in TS12 non funziona in TRS19 . Teoricamente, è anche possibile realizzare una sequenza in cui ad inizio sessione si determina un andamento generale del tempo (per esempio: stabile, variabile, variabile tendente al miglioramento, variabile tendente al peggioramento) e in base a questo variare il modo in cui cambia la variabile "weather" e i valori di "next_weather". E con questo - con grande sollievo di tutti - termina la parte sulle "regole base" applicabili a tutte le sessioni 2
Recommended Posts