I have been using TS_Tools and Excel to produce a listing of all my locomotives and rolling stock to build a searchable data base to make it easier to find specific assets in order to build consists and find rolling stock to place as background in scenarios. Is anyone interested in these instructions on how to do this and helping me in proofing these for a possible Guide for Steam TSC Communities? This will require a basic knowledge in formatting an Excel workbook. See post #13 for instructions.
are you using TS Tools to get a list of your assets or do you have another method? Im reluctant to get TS Tools to unpack all the bin files so that it can catalogue them as sometimes I feel it is unpacking things that dont need unpacking but I could be wrong there.
I'll be happy to support that and double check and add to the list. Many times I went "where was this loco again...?" specifically for stock that comes with routes and not separately, where SteamDB.info/Steam store gives a quick answer.
You don't need to unpack anything, you can just browse .ap files like a normal folder with 7zip File manager.
Yeah I do that with WinRar as well, but how are you converting into a single csv file? I just run an index with TS Tools and come up with 30115 pieces of rolling stock but I couldnt get the AP Asset editor in TS Tools to work so there is probably some still not listed, I would be interested in another method for sure
Looks jolly. I assume some code extracts it. Is it yours? What do you think about sharing it on Github? I did something similar for my photos and I have some ideas for other tools but probably won't do them. Regarding TS Tools - it is possible to read these files without extracting, but of course that means in-memory management. Some libraries may not be fond of it. One unresolved step is the serz. I can read xml but not the compressed versions. As such, crawling ScenarioProperties.xml is fine, but assets are a different animal. Might not be actually difficult to read, though. Just been a while since I've analysed file formats.
It's also not a very big deal to do this manually. Open the assets, browse the RailVehicles and even in a bin file (which just is a tokenised format crunching numbers not text) the DisplayName shows up right on top of the file after "English". Quick copy paste to Excel (or in my case, LibreOffice). Even manually this can be done in a few evenings' hours. We won't set ourselves a deadline. Also let's agree on only filing the English <DisplayName> of the vehicle, if provided. Once you got through your RSC and DTG folder, the rest is easy. Don't bash me on being so spartanic - I always prefer the low level way of doing stuff (helps a lot in understanding how stuff works). I hardly ever use TSTools. Even its missing assets check is unreliable. Back on topic, we should not lose ourselves in repaints, just because of the sheer mass. Better as a separate project if anyone has time for this, which I doubt. Finally, linking or including the LocoInformation\image.png would round this off.
What I did (with my tagging) was to create a hierarchy. Sometimes it's a bit silly with the letters, such as the SD40T-2, which led me to rotate some. I am actually interested in versions / liveries. A GE ES44AC CP is fine for this week's contest but CSX isn't. Also, many people are fans of railroads, took me a while to realise Blacknred is SP. I also separated Class 66 EWS v1 (Settle-Carlisle) and v2 (standalone). People also distinguish between the EMD GP9 RG v1 (old) and v2 (Soldier Summit). Looks like the format is relatively standard, with some quirks I don't see yet. It uses 32 bit integers to tell the length of the following block. Suspicion is, this is just an encoded xml which might have a tiny gain in file size, otherwise just expensive (extra stutter). SERZ file format 64 kbytes (exactly - doesn't match file size which is 20804, this is a buffer overflow right there) start object, name of 16 characters: cBlueprintLoader, sequence of 0.0.0.0.1.0.0.0 unknown (class?) start object, name of 9 characters: Blueprint, same sequence of 0.0.0.0.1.0.0.0 (class?) start object, name of 16 characters: cEngineBlueprint, sequence of 0.0.0.0.10.0.0.0 (missed a few here, but you can follow the logic) start string, length of 12 characters, BR294 Engine start object, name of 17 characters, BrowseInformation The XML by the way If reading until this section is sufficient, this should be relatively straightforward yet. Using a streamreader, read these sections and asserting everything is fine, we get all this info. The result would be a fairly big table that could be also merged (if multiple people run the crawler) and then the rest can be edited in a big table (public Google Sheets)
If you can write such an extractor, would be brill. Note the <Localisation> name is what is shown to you in the editor, not the top <Name> entry which is for internal use only. At the moment, I'm revisiting Donner Pass. I'm adjusting the couplers which are sticking out too far, defined a separate rigid coupler for the Chair Car, have improved the headlights which were over the top, adjusting cab cameras and less springy sway using my new values, and fixing the Career scenarios to be of 1000 points at start type without using clones. (And fixing the "Director Special" to be of "Passenger" type correctly, allowing higher speed.) Also fixing the "sun in the north" bug for its default TimeOfDay files. You wouldn't believe how many routes are shipped with this simple to fix error, RSSLO still haven't got it as of today. And I found why some locos do not stay stationary on grades with brakes applied, but very slowly moving. Just too low friction defined (this was seen as a TSC bug, but again it's content not core related.). Also fixed this for DP.
Is there a way to use the RailVehicleDatabaseCache from your Content folder, i.e. Content\RVDBCache.bin This is the file that gets created when you use the 'Create New' function from the Quick Drive window. Unserialize it into an .xml file, and it shows comprehensive information which can easily be parsed by a competent Excel programmer into a nice table. Here is the top section of mine: Code: <?xml version="1.0" encoding="utf-8"?> <Scenario_f2611fe7-1e89-4615-b545-5866349b6126 xmlns:d="http://www.kuju.com/TnT/2003/Delta" d:version="1.0"> <cRailVehicleDatabase d:id="6115312"> <SaveVersion d:type="sInt32">5</SaveVersion> <Language d:type="cDeltaString">en</Language> <SteamRailVehicle> <cRVDRailVehicle d:id="40102510"> <DisplayName d:type="cDeltaString">(2017 Flying Scotsman) Engine - BR Green</DisplayName> <EngineType d:type="cDeltaString">Steam</EngineType> <IsWagon d:type="bool">0</IsWagon> <IsDrivable d:type="bool">1</IsDrivable> <Mass d:type="sFloat32" d:alt_encoding="00000060B84E5A40" d:precision="string">105.23</Mass> <Length d:type="sFloat32" d:alt_encoding="0000008066662A40" d:precision="string">13.2</Length> <BlueprintID> <iBlueprintLibrary-cAbsoluteBlueprintID> <BlueprintSetID> <iBlueprintLibrary-cBlueprintSetID> <Provider d:type="cDeltaString">RSC</Provider> <Product d:type="cDeltaString">FlyingScotsman</Product> </iBlueprintLibrary-cBlueprintSetID> </BlueprintSetID> <BlueprintID d:type="cDeltaString">RailVehicles\Steam\Scotsman\2017_BRGreen\Engine\Scotsman Engine.xml</BlueprintID> </iBlueprintLibrary-cAbsoluteBlueprintID> </BlueprintID> </cRVDRailVehicle> <cRVDRailVehicle d:id="40102970"> <DisplayName d:type="cDeltaString">(2017 Flying Scotsman) Engine ML Lamp - BR Green</DisplayName> <EngineType d:type="cDeltaString">Steam</EngineType> <IsWagon d:type="bool">0</IsWagon> <IsDrivable d:type="bool">1</IsDrivable> <Mass d:type="sFloat32" d:alt_encoding="00000060B84E5A40" d:precision="string">105.23</Mass> <Length d:type="sFloat32" d:alt_encoding="0000008066662A40" d:precision="string">13.2</Length> <BlueprintID> <iBlueprintLibrary-cAbsoluteBlueprintID> <BlueprintSetID> <iBlueprintLibrary-cBlueprintSetID> <Provider d:type="cDeltaString">RSC</Provider> <Product d:type="cDeltaString">FlyingScotsman</Product> </iBlueprintLibrary-cBlueprintSetID> </BlueprintSetID> <BlueprintID d:type="cDeltaString">RailVehicles\Steam\Scotsman\2017_BRGreen\Engine\Scotsman EngineML.xml</BlueprintID> </iBlueprintLibrary-cAbsoluteBlueprintID> </BlueprintID> </cRVDRailVehicle> <cRVDRailVehicle d:id="40102730"> <DisplayName d:type="cDeltaString">(2017 Flying Scotsman) Engine ML Lamp - BR Green + HB FS</DisplayName> <EngineType d:type="cDeltaString">Steam</EngineType> <IsWagon d:type="bool">0</IsWagon> <IsDrivable d:type="bool">1</IsDrivable> <Mass d:type="sFloat32" d:alt_encoding="00000060B84E5A40" d:precision="string">105.23</Mass> <Length d:type="sFloat32" d:alt_encoding="0000008066662A40" d:precision="string">13.2</Length> <BlueprintID> <iBlueprintLibrary-cAbsoluteBlueprintID> <BlueprintSetID> <iBlueprintLibrary-cBlueprintSetID> <Provider d:type="cDeltaString">RSC</Provider> <Product d:type="cDeltaString">FlyingScotsman</Product> </iBlueprintLibrary-cBlueprintSetID> </BlueprintSetID> <BlueprintID d:type="cDeltaString">RailVehicles\Steam\Scotsman\2017_BRGreen\Engine\Scotsman EngineML HB FS.xml</BlueprintID> </iBlueprintLibrary-cAbsoluteBlueprintID> </BlueprintID> </cRVDRailVehicle> <cRVDRailVehicle d:id="40102650"> <DisplayName d:type="cDeltaString">(60163 Tornado) Engine - ex Works BR Apple Green</DisplayName> <EngineType d:type="cDeltaString">Steam</EngineType> <IsWagon d:type="bool">0</IsWagon> <IsDrivable d:type="bool">1</IsDrivable> <Mass d:type="sFloat32" d:alt_encoding="00000060B84E5A40" d:precision="string">105.23</Mass> <Length d:type="sFloat32" d:alt_encoding="00000000D3CD2940" d:precision="string">12.902</Length> <BlueprintID> <iBlueprintLibrary-cAbsoluteBlueprintID> <BlueprintSetID> <iBlueprintLibrary-cBlueprintSetID> <Provider d:type="cDeltaString">RSC</Provider> <Product d:type="cDeltaString">TornadoPack01</Product> </iBlueprintLibrary-cBlueprintSetID> </BlueprintSetID> <BlueprintID d:type="cDeltaString">RailVehicles\Steam\Tornado_ex-works\Engine\Tornado Engine.xml</BlueprintID> </iBlueprintLibrary-cAbsoluteBlueprintID> </BlueprintID> </cRVDRailVehicle> <cRVDRailVehicle d:id="40102460"> <DisplayName d:type="cDeltaString">(60163 Tornado) Engine - ex Works BR Brunswick Green</DisplayName> <EngineType d:type="cDeltaString">Steam</EngineType> <IsWagon d:type="bool">0</IsWagon> <IsDrivable d:type="bool">1</IsDrivable> <Mass d:type="sFloat32" d:alt_encoding="00000060B84E5A40" d:precision="string">105.23</Mass> <Length d:type="sFloat32" d:alt_encoding="00000000D3CD2940" d:precision="string">12.902</Length> <BlueprintID> <iBlueprintLibrary-cAbsoluteBlueprintID> <BlueprintSetID> <iBlueprintLibrary-cBlueprintSetID> <Provider d:type="cDeltaString">RSC</Provider> <Product d:type="cDeltaString">TornadoPack01</Product> </iBlueprintLibrary-cBlueprintSetID> </BlueprintSetID> <BlueprintID d:type="cDeltaString">RailVehicles\Steam\Tornado_ex-worksBRGreen\Engine\Tornado Engine.xml</BlueprintID> </iBlueprintLibrary-cAbsoluteBlueprintID> </BlueprintID> </cRVDRailVehicle> Problem is, there aren't enough categories to differentiate and catalog your rolling stock, Like: locomotive has steam, diesel and electric, which is OK, But there is no distinction between tenders, wagons (freight cars) and carriages (passenger cars); nor in era, country, or the categories on the Quick Drive selection screen? This information is compiled from the .bin files and entirely depends on this. Several of these useful additional categories are available in the .bin files, when properly filled and assigned of course, because a lot of dev's don't bother with these small details. TS_Tools doesn't read .ap archives by default, and I like to keep my assets packed in .ap, to make backups so much faster. The nifty and very usuful LocoSwap tool also reads certain files and I believe even parses the contents of .ap files.
I have been creating my own version using TSTools - the RailVehicles will need extracting from *ap files. The basic report gives this After I have changed the Columns and added new I get this rwaday - Are you using another method?
Yes Peter, I am using TS_Tools to extract the data and compiling it into an Excel spreadsheet very similar to yours. Here is the method I am using: Open TS_Tools Go To Scenarios tab and open Select Scenario Properties .xml and let it run Go to Route Building Tools and open Select Extract Route Properties .xml and let it run Go to Edit Assets/Content Open Assets Editor. Check the boxes for Rolling Stock Only, Exclude PreLoad, and Default Folders. Click Add to list. Let this run, it may take an hour or more if you have a lot of assets. After it is finished, select Save List, then select save as an EXCEL Workbook file. Open Reports/OpenExcel reports and drop where you want to store it. Note: you will need of a basic knowledge of Excel to configure your new spreadsheet. Once you have created your EXCEL file you will need to modify it using tools in EXCEL to set the text, column name, width, height, and sort alphabetically. Then save it as an Excel Workbook to your desktop. To search for an Asset, use Ctrl+f and insert the name of what you are searching for e.g CN, caboose or GP40-2. Then select find next or all. Expand the search box and scroll through the list and select the asset that you want and the the row will be highlighted and the Asset folder where the asset is stored. You can then add this folder to the asset drop down in the editor. Please be free to make comments and suggestions and corrections. For me this is easier than reading the .XML file directly.
I have just realized that if you use Cobra's Raildriver and Joystick program it will extract a copy of all .bin files within the RailVehicles folder when you run the extraction process meaning that if you run an index in TS Tools afterwards you will capture all rolling stock. It unpacks only the .bin files and the scripts files (advanced mode only for scripts), the downside is that it will also unpack any bin files that are not rolling stock like couplers etc. but this also means it captures all rolling stock including wagons, passenger cars etc. and it doesnt unpack them if there are already existing copies outside the ap file so it wont overwrite any mods either. Being that I already use Cobra's program I can run the index routine in TS Tools and be 99% confident that I have a full reference of rolling stock available on my system. I hadnt run a full extraction with Cobras software since the last great Steam verification so I will do that today and then run a new Index file and compare the difference to the previous one, I had run the extraction process on both Kuju, RSC and DTG folders already though so I dont expect a huge increase in the list but there are some other providers who use ap files, mainly stuff released on Steam but some like TTB have stuff hidden away in ap files as well.
I unpack those files in scenarios and in routes. They are not unpacked within the assets folders. They stay as .ap files.
Yeah I have tried it in both modes, just to clarify, the asset editor where you create the index csv works fine it is just the AP asset editor where you append it to the index file that is not working. It finds the ap files but it will not add the contents to the middle panel, at best it will do nothing and at worst it throws up some errors
Neither as we are talking about the rolling stock itself, not scenarios or routes. For reference though the ap file extraction in TS Tools for scenario and route properties files works fine. I must stress that the AP Asset editor in TS Tools that is not working for me could well be system specific. As a note I just did a fresh extraction with Cobras Raildriver and Joystick program which as mentioned above will extract the .bin files inside the RailVehicles folders inside your Assets folder including the ones inside .ap files and the results are below if anyone is interested Railworks folder size before extraction - 1.27TB File count in Railworks folder before extraction - 2,860,214 Rolling stock in Index.csv before extraction - 30114 Railworks folder size after extraction - 1.28TB File count in Railworks folder after extraction - 2,864,434 Rolling stock in Index.csv after extraction - 38057 So I lost about 100MB for extracting the bin files from the RailVehicles folders which added approx 8000 items of rolling stock to my Index list from TS Tools. Just to confirm it will extract only .bin files from the RailVehicles folder so it does catch some extra stuff that is not needed like couplers etc. but TS Tools only index's rolling stock.
For a test, could you compare the rolling stock count obtained by using the Cobra Raildriver with deserializing the Content\RVDBCache.bin and parsing it likewise? After you've updated your Quick Drive rolling stock index, obviously. It would be interesting to find if there are any difference in such a large install. Thank you for your effort.
My RVDBCache file has no info in it, it is only 1kb. I dont really run QD all that much but I have done on previous occasions so not sure what is going on there. Im off to bed now but I will have a look at it tomorrow and see what I can come up with
OK. In the meantime, I tried for myself, the simplest way, in 10 minutes, to get a catalog of my Railwork's content without unpacked the .ap archives by using the built in QD => Create New function. I've put all the routes and assets in .ap files as much as possible to make backup up the 600 GB Railworks folder so much more faster. Yes, I do make weekly (incremental) backups to my WD MyCloud NAS by running a scheduled job in Acronis TrueImage that came with the NAS. I have parsed the RVDB as .xml through Excel's Import Data's XML parser into a PowerQuery and gotten myself a nice workbook with 4 worksheets, Steam, Electric, Diesel and Rolling Stock. It found 1673 steam locomotives, 4047 Diesel, 1673 electric and 11385 pieces of rolling stock. I think with some clever functions one can have the rolling stock sorted by included keywords like Tender, Coach/Carriage and assign the remainder as Wagon? Obviously, it's a pity the RVDB doesn't take this into account since the info is actually present in the blueprints. No doubt, somebody clever in VBA macro programming can come up with a fully automated solution where Serz.exe is involved in deserializing the RVDB.bin and automatically importing and parsing the xml and refreshing the Workbook.
Thank you all for your input. I have been using this method for several years and thought that I would share it. It is an easy way to find what I need for a project. I update this list every 2 weeks to keep it current. My reasoning for running the extraction of routes and scenarios is to allow TS_Tools to find rolling stock within the .ap files. I am given to understand that TS_Tools will not recognize these files unless they are extracted. A few of you have a much deeper understanding of this process than I do. My list is long at around 11,700 items. I never intend to print this list but it is easy to open and peruse it.
Whatever works best obviously. The RVDB method using the QD is a bit more foolproof, as it only lists the rolling stock that is complete. When you add mods and repaints, especially those that require execution of a .bat file to copy shapefiles, or even more important, make use of geomod.exe or PowerShell commands to edit shapefiles in situ, there is a fair chance you end up with a broken locomotive that will crash already in the QD selection. I am currently trying to use the TS_Tools functions to get a listing of all the locomotives and rolling stock for comparison. It is a bit slow process and I find TS_Tools quite delicate/finicky when a .bin file is out of order, throwing errors, dumping or quitting. Also, it has a file size limit of 2 GB in .ap files, which have to be parsed separately. It lists more details from the blueprints compared to the RVDB. Perhaps in a future TSC update these can be amended to the selection screens when trying to create a QD consist.
I tried using 'create new' in QD to create a RVDBCache file but it crashed about 15% of the way in, I have had this in the past where there is a faulty asset and it doesnt even have to be a item of rolling stock, the last time it happened it was a dodgy street light that did it. Ill see if I can narrow down the asset causing the dump and get a clean build
Well after about 3hrs of figuring out what assets were dodgy I finally got a working RVDBCache file but then I couldnt get Excel to play nicely with it, it just kept returning no data in Power Query so in the end I just got ChatGPT to write a Python script to turn it into a csv instead. So according to the RVDBCache there is 39032 pieces of rolling stock but there are some dubious entries such as in the screenshot so removing these (although they might still represent a piece of rolling stock) the result is 38736 so still slightly more than what TS Tools was reporting but I wonder if there are other dubious entries I have not come across. Either way I think both methods are suitable enough for finding stock for the purposes of replacement etc. Anyway back to my other project of writing a plugin for Simhub so that we can have all telemetry available instead of the only some that it currently ships with
PreLoad need to be created by the developer to be able to use their DLC in QD scenarios. Using the Blueprint Editor, he creates Fragments of locomotives and some carriages or wagons and with these Fragments he puts Consists together you find back in the QD window per locomotive. In the Scenario Editor, you can put these whole Consists on a track in the Scenario you create. When using the Blueprint Editor or TS_Tools you can also create these Fragments and Consists, with some additional control over in which routes the Consists can appear as AI trains of a certain rank to be controlled by the frequency parameter in the QD Scenario. You can also set an Era appropriate for the Consist, so for instance pre-WW II LNER steam trains do not appear in today's electrified ECML. The the quick and easy way you can make your own Consists (in one piece) by using the Create New feature of the Quick Drive window. It parses all your rolling stock, including .ap files. Hence it is faster than the TS_Tools method to get a complete catalog of the locomotives and rolling stock in your game. Unfortunately, it makes no distinction between the Wagons.
I am aware of this but it did not answer my Question in the post above this one. I know I have a number of items of rolling stock that don't have a PreLoad folder. So WITHOUT me creating lots of PreLoad Consists which I might not use "So if items of rolling stock don't have PreLoad entries for Quick Drives do they get included?"
That's right. You can create a QD consist out of every piece of rolling stock it finds when Create New has been pressed and the list is populated. Some developers don't create QD consists at all, when you add a repaint of a locomotive, it will not have a QD fragment/consist by default. You can load an existing QD consist and swap the provided locomotive for your repaint and save it back under a meaningful name. I do play QD a lot and create lots of QD consists and scenarios, so a complete catalog with all your locomotives and rolling stock comes in handy. Because the names provided aren't always conclusive, and some pieces of rolling stock exist in many variations over different DLC, sometimes with different features even.
I'm like you and do a lot of QD runs because it's more enjoyable than running to a schedule which is not always workable. This started as a BR 120 and IC Stock from vR and got the loco swapped before running the QD scenario Have you seen the Real Drives that Kim Olesen has made on RailSim.de? These are very good and you won't get a clear run but you are still using any train and calling where you want. https://rail-sim.de/forum/filebase/entry-list/?userID=13496
Thanks for the tip, must look over that rai-sim.de more often. RW Austria is down and out? Correction to the above: apparently late December they suffered a system crash on their server and are slowly recovering from it, bringing the forum and the download library back online.
I managed to make a list without affecting my TS Classic installation. I first made a backup of the whole installation to my external hard drive. Next in the TS Tools options I set the TS2020 path to the RailWorks64.exe file within the backup I had just made. Next I used used file > find all .ap files and used the extract rolling stock from all .ap files option. Then went to Edit Assets/Content > Asset Editor, with Rolling Stock Only and Exclude PreLoad checked I clicked Add To List I saved the resulting report as an XLS file, which is now easy to search for stock replacements. If you use TS Tools to swap rolling stock in scenarios, don't forget to set your TS2020 path to the location of your playable installation I prefer to use Loco Swap 1.5.1.0 Nick
I'm not sure why you needed to backup your files to an external location as TS Tools does not affect the files in this process. And how long did it take for TS Tools to complete the list? For most scenario swaps I use Loco Swap except it does not allow you to delete a consist so I use TS Tools in such cases.
I made my list from a backup as extracting rolling stock from .ap files adds 34728 files / 17GB and I didn't want that in my main installation.
Creating a searchable database for your locomotives and rolling stock is a great idea. I’ve been using Excel for my own hobby, and it really helps keep everything organized. I once put together a list of all my model cars, and it made finding specific ones for display so much easier. If you’re looking to share those instructions, I’d definitely be interested in checking them out. Having a guide could help a lot of folks in the Steam TSC community. Also, if anyone needs a hand with Excel formatting, there are some awesome Free Microsoft Excel Tutorials online that can really help brush up those skills.
I typically use MS Power BI for this type of analysis. Excel will LOVE out at approx 56k lines in one sheet.
When doing an Assets list you can specify to use Rolling Stock and to Ignore pre-loads Doing that I have never filled up an excel sheet