Logo of blog type

Capire il tracks.bin – Parte 1

Andrea66
2.734

Come detto nel post “Riguardo il tracks.bin”, uno dei file fondamentali di TS è il tracks.bin.
Scopo di questo e di successivi tutorials, è dare una infarinatura generale di come RW gestisce i file della route e poi nello specifico vedremo come interpretare questo importante file e cosa è memorizzato al suo interno.
Questo tutorial non pretende di essere esaustivo e completo, in quanto è il risultato di mie analisi fatte recentemente per cercare di risolvere problemi di crash e errori che si verificavano sulla mia route e sicuramente ci sono tutorial sul web più completi, ma è un buon punto di partenza per capire come maneggiare e come verificare una route e il tracks.bin.
In questa prima parte del tutorial, iniziamo con il capire la struttura tipica di una route e come gestire i suoi file.
La route risiede in una cartella che ha come nome una sequenza di caratteri generata da RW in fase di creazione (in gergo chiamata GUID o Globally Unique Identifier) che è una stringa che per il numero di combinazioni possibili di 2 elevato a 128, può essere considerato davvero ragionevolmente unico.
Per definizione la stringa è formato da una sequenza di 8-4-4-4-12 caratteri, separati appunto da un trattino.
All’interno della cartella, la struttura tipica è rappresentata nell’immagine:

Folder structure image

Il file RouteProperties.xml è un file di tipo xml contenente le info generali della route quali nome, posizionamento a livello di coordinate, il modello su cui si è basata, tipi di texture applicate, le stagioni e l’elenco di tutti i provider e product degli asset inclusi e che devono essere inclusi al caricamento della route in game (è buona norma evitare di lasciare provider e product che non si usano perché rallentano il caricamento della route e occupano inutilmente memoria). Per completezza il provider è il nome che si è dato il creatore di una serie di contenuti utilizzabili dai creatori di route. Nel mio caso per esmpio il provider è CAST. Product invece è una sottocartella di CAST che aiuta a suddividere sottoinsiemi di asset. Nel mio caso io ho creato un product ADDON generico e un product TORINO-BARDONECCHIA specifico della route. E’ ovviamente una struttura ampiamente personale e soggettiva.

Passiamo ora alle varie cartelle.

MixMap contiene per ogni piastrella (di seguito tile) la “pittura” del terreno, ovvero i dettagli di come tile per tile siamo andati a cambiare l’erba standard con i materiali che ci servivano (fango, roccia, etc)

Scenery contiene per ogni tile gli oggetti scenario (case, panchine, luci, etc) posizionati. Per oggetti scenario si intendono praticamente tutti gli oggetti che non siano strade o loft (dopo spiegherò cosa si intende con loft) e che non siano relativi alla guida di un treno. Per intenderci, non sono oggetti scenario i binari, i segnali, i milepost o paline chilometriche, i passaggi a livello, gli scambi e tutto quello che usa queste tecnologie. Fare una categorizzazione è un po’ complicato vista la varietà di tipi di asset che si possono creare, ma in linea di massima con l’esperienza diventa chiaro.

Terrain contiene per ogni tile l’andamento altimetrico del terreno, così’ come caricato dai dati altimetrici o modificato a nostra scelta.

Scenarios contiente invece tutti gli scenari di guida creati, e non richiede un grande approfondimento.

Prima di passare alla cartella più complessa, Networks, qui sotto si può vedere il contenuto di parte della cartella Scenery (il contenuto di MixMap e Terrain e delle altre che vedremo dopo non varia da questo se non per la dimensione dei singoli file).

image of scenery folder

Questo per spiegare cosa intendo con “per ogni tile”. RW gestisce il tavolo di gioco in tile, quadrati di 1km x 1km (approssimato, in realta sono 1024m x 1024m).

Ad ogni tile assegna una coordinata X e Y, a partire dall’origine della route in fase di creazione che è quindi -000000-000000 (nel mio caso avendo preso come partenza una route esistente, i valori sono molto spostati, ma non è importante).

Quindi in tutte le cartelle risiedono una serie di file che identificano chiaramente una tile specifica (lo stesso numero è mostrato in editor in basso a sinistra e varia con il variare della posizione in cui si è). Se esiste un certo file e la dimensione non è solo 1kB, significa che in quella piastrella è stato posato qualcosa (cartella Scenery) o c’è un rilievo altimetrico diverso da zero (cartella Terrain) o il terreno è stato pitturato (cartella MixMap) o c’è un oggetto loft (cartella Lofts) o c’è una strada (cartella Roads) o c’è un binario (cartella Tracks).

Tile di dimensioni di 1kB, previa verifica, sono normalmente cancellabili perché vuote. Può succedere se si era inserito un oggetto e poi lo si è cancellato. Una tile vuota ha normalmente questo contenuto.

image of empty xml

Come è chiaro, esiste solo una intestazione senza nessun contenuto.

Questo discorso vale per Scenery, per Loft e Road, che adesso vedremo. Invece le tile MixMap e Terrain hanno sempre dimensione fissa, dipendendo dalla risoluzione della tile stessa.

Passando alla cartella Networks, questa cartella ha sempre al massimo la seguente struttura:

image of networks folder

Il file Tracks.bin e la cartella Track Tiles esistono sempre nel momento in cui si posa il primo binario.
Il file Roads.bin e la cartella Road Tiles, vengono create se è solo se si posa almeno una strada.
Lo stesso per il file Lofts.bin e la cartella Loft Tiles.

Da notare che il file Tracks.bin ha dimensione proporzionale al numero di binari e oggetti di linea che si decide di posare, mentre il file Roads.bin e Lofts.bin sono file dummy necessari che hanno sempre dimensione di 1kB. Non si devon cancellare comunque.

Tutte e tre le sottocartelle hanno una struttura simile a quella vista per la cartella Scenery, contengono cioè tile per tile gli oggetti Loft / Strade e Binari posati.

Con Loft si intendono tutti quegli oggetti lineari creati appositamente per essere posati in lunghezza (per esempio ringhiere, marciapiedi, catenaria, etc).

Anche le strade alla fine sono oggetti Loft, nel senso che si posano in maniera similare, ma per gestione del gioco sono inserite nelle proprie cartelle specifiche.

Prima di chiudere questa veloce carrellata, vediamo come convertire un file .bin, qualsiasi esso sia, in formato xml, e quindi leggibile e lavorabile con un normale editor di testo, e ovviamente anche come convertire da xml a bin una volta modificato il file.

Per fare questo si usa un programma residente nella cartella principale di RW che si chiama serz.exe. E’ sufficiente trascinare il file .bin sopra il file serz.exe e la conversione avviene automaticamente e il file in uscita con estensione xml risiederà nella stessa cartella e con lo stesso nome del file di origine.

Ripetere l’operazione trascinando il file xml per riconvertirlo in bin. Il programma non chiede conferma di sostituzione, quindi attenzione!

Con serz.exe si può convertire un file alla volta e se per motivi vari dovete convertire una intera cartella, si può utilizzare il file SerzMaster.exe. Una volta aperto il programma, si presenta la seguente finestra di dialogo:

Image of serzmaster

Nella prima riga si deve inserire il path dove risiede l’utility serz.exe. E’ normalmente già correttamente compilata
Convert location è la cartella della route che si vuole convertire, utilizzare il pulsante browse per selezionarla.

Il resto può essere lasciato cosi, ed è comunque auto esplicativo, ma prima di premere il tasto Process, scegliere a destra se si vuole convertire da XML a BIN o viceversa.

Come norma generale su tutte le tile, a eccezione delle tile sotto Tracks, si può agire sui file convertiti in xml senza grossi rischi, a patto ovviamente di lavorare con attenzione e rispettando la struttura del file. Sulle tile Tracks, è molto rischioso per i motivi che vedremo in uno dei prossimi tutorial.

E’ buona norma farsi sempre una copia di backup di tutti i file che si intende modificare, per evitare spiacevoli sorprese e perdita di giorni di lavoro, se non peggio la perdita irrecuperabile di un intera route. Un file Tracks.bin danneggiata senza un backup vuol dire aver perso tutto il piano binari senza possibilità di recupero.
Ci sono parecchi tool che servono allo scopo. Io personalmente uso il tool di Mike Simpson che potete scaricare alla fine di questo pdf.

Con questo primo tutorial introduttivo è tutto. Nel prossimo tutorial cominceremo a guardare il file tracks.bin e i file di tile relativi, che è lo scopo primario di questo tutorial.