You know that dreaded "The session or its dependencies are not built-in" error you've undoubtedly gotten in TS12 multiplayer? Well, it's been happening to me, and it's started to piss me off a bit. What I have is a clean copy of TS12 for the sole purpose of playing multiplayer sessions. This copy has no locally-modified content, and the only DLC pack on it is Aerotrain (which obsoletes <kuid:-3:16010> Passengers).
Here's what I think the problem is.
- The route, session, or dependencies reference obsolete KUIDs. These KUIDs have later versions installed from the DLS or built-in to Trainz. However, the specific versions referenced in the kuid-table containers of the offending assets are not available on the DLS due to the cleanup operation currently underway. Unfortunately, content creators are not aware of this or are unsure of how to edit their kuid-tables to get around this quirk. So content updates are continuously being released which reference obsolete, unavailable KUIDs, and the multiplayer session thus bars the player from joining the session because of these bad KUID references.
Here's a possible solution which I hope to be implemented in the next update to Trainz.
- Rather than checking the kuid-table itself, the software should perform, on session initiation, an automatic check much like this manual check which can be done in Content Manager:
1) Revert all local modifications to built-in assets and to any asset that is an update to a built-in asset. Store the modified versions in Userdata/Backups.
2) View the session's dependencies.
4) View the dependencies of the remaining assets and go back to 2a).
5) Repeat this process until the asset lists become cyclic.
Here's what I think the problem is.
- The route, session, or dependencies reference obsolete KUIDs. These KUIDs have later versions installed from the DLS or built-in to Trainz. However, the specific versions referenced in the kuid-table containers of the offending assets are not available on the DLS due to the cleanup operation currently underway. Unfortunately, content creators are not aware of this or are unsure of how to edit their kuid-tables to get around this quirk. So content updates are continuously being released which reference obsolete, unavailable KUIDs, and the multiplayer session thus bars the player from joining the session because of these bad KUID references.
Here's a possible solution which I hope to be implemented in the next update to Trainz.
- Rather than checking the kuid-table itself, the software should perform, on session initiation, an automatic check much like this manual check which can be done in Content Manager:
1) Revert all local modifications to built-in assets and to any asset that is an update to a built-in asset. Store the modified versions in Userdata/Backups.
2) View the session's dependencies.
a) If any of these are locally modified, attempt to revert; store the modified versions in Userdata/Backups.
b) If any of these are on the download station, attempt to download.
c) If any of these have updates on the download station, attempt to download.
d) If any of these have errors, prevent the player from joining the session.
3) Filter out any assets that are built-in or are updates to built-in assets.b) If any of these are on the download station, attempt to download.
c) If any of these have updates on the download station, attempt to download.
d) If any of these have errors, prevent the player from joining the session.
4) View the dependencies of the remaining assets and go back to 2a).
5) Repeat this process until the asset lists become cyclic.