M3ales

Possible Uses of Steam Workshop

Recommended Posts

So I've been playing quite a bit of TSL again after the steam version got it's widescreen update, and as a consequence have been downloading a whole host of mods both from here and from the Workshop: Which brought me to an interesting idea using the workshop. I've seen that because there is a lack of merging support in the functionality of the steam workshop, much of the mod content requires merging is unlikely to find it's way onto the workshop. I've also noticed that steam doesn't modify the game files in anyway when installing mods, rather opting to 'mod' the game at runtime. This is a novel idea which keeps the game files clean and mods easy to uninstall/delete. Steam also doesn't seem to automatically delete the files of unsubscribed mods, when unsubscribing, rather leaving them in the workshop content directory. (Atleast this has been the case as far as I have seen) Additionally steam doesn't verify the content of these folders unless there is an update (in my week or so of testing it atleast) , which means you could change the content of the folders, and they stay that way.

 

So TSLpatcher's primary feature would be merging, something the workshop clearly lacks. My idea involves treating a subscribed mod directory as a 'main' game directory. At the moment I copy over much of TSL's game content to one of my mod folders. (I've made a custom 'mod' for this purpose, which is pretty much just the empty game folder structure) Then install any mods I'd like to try out/use into the folder. The needed merges happen, and the game files are swapped for the modded ones at runtime.

 

Folders Copied:

  • data
  • lips
  • Modules
  • override
  • StreamSounds
  • StreamMusic
  • StreamVoice
  • TexturePacks

 

My current method is a bit ham-handed so I'd like some experienced opinions on the topic of what the most commonly altered files are. Because currently the idea involves having two copies of TSL, or taking a look at the altered files in each mod. The functionality reminds me of Mod Orgainizer for Skyrim actually.But I've a feeling that there is no real answer to which files to include: it depends on the mod. Maybe I should just keep a list of what is overwritten in each mod somewhere?

 

For this to be viable with mutliple mods I'm going to  have to figure out how and where steam stores the list of subscribed mods for each game. (if I can figure it out I might write a small app to change between 'game states', without the need for symbolic workshop links online - which probably isn't going to happen because I have a feeling it's stored in userdata) The order which Steam loads the mods is also a problem, but so far it's been loading my TSLRCM before my custom mod. But otherwise it works fine, and it keeps my base game, TSLRCM and 'other' mods seperate, so if I need to get past points due to mods conflicting with TSLRCM, I should be able to swap out the subscription. That is, unless the save is screwed up by it.

 

 

EDIT: Maybe can figure out something on a per mod basis from the changes.ini

 

EDIT:

 

Also Steam doesn't work the way you say it does. Unsubscribing DOES indeed clean out the folder, only files that weren't part of the mod remain. For example if I unsubscribe to TSLRCM right now, only my Whereami armband files will remain in the Workshop folder, all else will be gone.

Workshop deletes files which are specified in the mod, it does not delete folders though, if files not specified by the depotcache manifest (I believe) are present, then it leaves the folder intact and removes specific files.

Edited by M3ales

Share this post


Link to post
Share on other sites

Test mod is up here if anyone wants to try it out.

 

I've found a vdf in the userdata folder which details your subscriptions, going to do some tinkering but at the moment it seems like modifying it only prompts downloads rather than just changing the loaded folders.

 

You can find it in Steam>userdata>your user id>ugc>208580_subscriptions.vdf

Seems like ascii text file, could be wrong.

 

Snippet:

"subscribedfiles"
{
	"appID"		"208580"
	"time_last_updated"		"1452203478"
	"0"
	{
		"publishedfileid"		"485537937"
		"time_subscribed"		"1447777301"
	}
	"1"
	{
		"publishedfileid"		"489492598"
		"time_subscribed"		"1451778283"
	}
	"2"
	{
		"publishedfileid"		"486299564"
		"time_subscribed"		"1451780201"
	}
	"3"
	{
		"publishedfileid"		"595358556"
		"time_subscribed"		"1452207326"
	}
}

The ordering in here may have an effect on the load order of the mod folders, will do some testing.

 

EDIT:

Ok I've established that direct changes to this file have no effect (I changed the time_last_updated value to 99999999 to ensure i wasn't updating and overwriting my custom mod (which was id 987654321))

This file probably is used by the workshop to download mods, I'll look for something that looks like it controls the mods directly.

 

EDIT:

Spent a few hours chasing depot cache files (encrypted to hell, in the same way game permission keys are or something), turns out there's a 208580_appworkshop.acf file in the workshop folder. Feeling pretty stupid now, should have looked there first xD, but atleast knowing more about manifests helps.

(Found the file in: SteamApps/SteamLibrary Folder>workshop>208580_appworkshop.acf, opens with notepad)

 

Anyways the file has a block of code in it:

"WorkshopItemsInstalled"
	{
		"485537937"
		{
			"manifest"		"6616433435764076607"
			"size"		"341092258"
			"timeupdated"		"1447541185"
		}
		"486299564"
		{
			"manifest"		"4385277548226738399"
			"size"		"1671240"
			"timeupdated"		"1437593413"
		}
		"489492598"
		{
			"manifest"		"7042094556303312934"
			"size"		"64163"
			"timeupdated"		"1438052634"
		}
		"595358556"
		{
			"manifest"		"5442604241875013174"
			"size"		"10165016"
			"timeupdated"		"1452215014"
		}
	}

Which provides a link between the manifest ids in depot cache and the file ids used by the workshop.

Changing this is most likely what changes the load order, I'm gonna try making a fake file ID mod aswell, see if it works.

 

EDIT:

:pc:

Welp, it's a red herring. Seems like it only reads from the appworkshop when it wants to change workshop subscriptions or a subscription update happened. It overwrites my fabricated mod ids. Maybe set as readonly? Still isn't file I'm looking for.

Back to searching then...

 

EDIT:

I've found a bunch of decryption keys in a config.vdf file in Steam>config.

They're under a 'depot' header and are preceded by a bunch of hex digits which I think might be the Initialization Vector for an AES encryption step. Atleast that's what I'm guessing it is, I'm not a security expert xD. I'm going to look around and see if I can find something to decrypt one of the workshop depot cache files.

Edited by M3ales
  • Like 1

Share this post


Link to post
Share on other sites

The best approach is to install TSLRCM from the Workshop, then install all other mods the traditional way (via TSLPatcher or otherwise) using TSLRCM's Workshop folder as the destination. Trying to install multiple mods from the Workshop is not worth the effort.

Share this post


Link to post
Share on other sites

I think you missed the point, I'm trying not to install multiple mods from the workshop. I'm trying to use the workshop folders and it's mod-gamefile separation functionality to make moving between mod configurations simple, and mod uninstallation practically instantaneous. (all doable with workshop, just pretty unfriendly atm.) 

 

My current setup has me running TSLRCM from the workshop, then creating an empty workshop mod, which I then install all of my other mods to. At anypoint I can remove all those other mods and just have TSLRCM, and vice versa. I can also revert to the vanilla by just unsubscribing from TSLRCM and my 'empty' mod.

 

Also if you were to ask why I don't just use workshop based mods(to get the functionality), then you'd find that the game actually screws it self up quite nicely if you run more than 5 concurrent workshop mods (in most cases I believe).

 

Sorry if I come across as aggressive, bit frustrated atm. 

 

Amendment: You're right, easier just to have one workshop mod running at a time, however unsubscribing from TSLRCM in your case causes files to be deleted and redownloaded, effectively breaking your mod installation.

Edited by M3ales

Share this post


Link to post
Share on other sites

I think you missed the point, I'm trying not to install multiple mods from the workshop. I'm trying to use the workshop folders and it's mod-gamefile separation functionality to make moving between mod configurations simple, and mod uninstallation practically instantaneous. (all doable with workshop, just pretty unfriendly atm.) 

 

My current setup has me running TSLRCM from the workshop, then creating an empty workshop mod, which I then install all of my other mods to. At anypoint I can remove all those other mods and just have TSLRCM, and vice versa. I can also revert to the vanilla by just unsubscribing from TSLRCM and my 'empty' mod.

 

With that method you'd run into problems as soon as one of the other mods modifies a TSLRCM file. Even if installed with TSLPatcher to the empty workshop mod location, it would copy an unmodified version of the file to the Override and modify this one and when loaded that file would overwrite TSLRCMs changes. You could probably install TSLRCM to that empty mod folder too and it should work as a possibility to switch between installations.

Share this post


Link to post
Share on other sites

Also Steam doesn't work the way you say it does. Unsubscribing DOES indeed clean out the folder, only files that weren't part of the mod remain. For example if I unsubscribe to TSLRCM right now, only my Whereami armband files will remain in the Workshop folder, all else will be gone.

Share this post


Link to post
Share on other sites

Also Steam doesn't work the way you say it does. Unsubscribing DOES indeed clean out the folder, only files that weren't part of the mod remain. For example if I unsubscribe to TSLRCM right now, only my Whereami armband files will remain in the Workshop folder, all else will be gone.

Ok thanks for pointing that out actually, I didn't notice it but workshop does this. At the time I figured it'd delete the entire folder if deleting things. I'll remove the dialog.tlk from the mod because currently that is getting deleted and redownloaded, will cause issues if you modify it and resub.

 

With that method you'd run into problems as soon as one of the other mods modifies a TSLRCM file. Even if installed with TSLPatcher to the empty workshop mod location, it would copy an unmodified version of the file to the Override and modify this one and when loaded that file would overwrite TSLRCMs changes. You could probably install TSLRCM to that empty mod folder too and it should work as a possibility to switch between installations.

Another valid point, maybe run TSLRCM from workshop, then copy over the files into the mod folder before patching, I'll add it to the readme as an option, this mod would probably be most useful if you're running a normal TSLRCM modded playthrough + say for instance a total conversion such as RoR. The only way to do this properly at present would be to have multiple empty mods, which equate to a bunch of empty mods on the workshop, one for each playthrough pretty much. Although hopefully I can figure out how steam decides which mod folders to use so I can trick it into thinking its subscribed to a bunch of fake ids. Still not getting much luck on that front though.

 

Edit: I've removed the dialog.tlk in v0.3, will need to reinstall mods that modify it, and copy over your original one before doing so.

Edited by M3ales

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.