On the Steam Preservation Proposal

Post bug reports and suggestions for the website, forums and DOM here.
Post Reply
TechnoMage6
Datter
Posts: 48
Joined: 27 Mar 2022 20:07

On the Steam Preservation Proposal

Post by TechnoMage6 »

All Steam CDN files are split up into depots, and some Depots are shared between apps, like the Steamworks Redistributables and some games use Source SDK files.

I'm ignorant in how various records can be set up in DoM, but given these details, how would the files get added? Would we have a way to separate each Depot into their own groups for each game/app, and would there be a way to Parent/Child the depots, kind of like how they are recorded in SteamDB, instead of having to do it app wide? Could we have the depots themselves be directly recorded instead of being placed under app records?
User avatar
rarenight
Posts: 872
Joined: 19 Mar 2017 09:41

Re: On the Steam Preservation Proposal

Post by rarenight »

DOM isn't particularly amenable to Steam's shared depot setup. It can add merged entries through XML import and you can import one depot as parent and the rest as children, but you would need to program a script to algorithmically assign those relationships and each new entry on DOM would have to populate all required files.
TechnoMage6
Datter
Posts: 48
Joined: 27 Mar 2022 20:07

Re: On the Steam Preservation Proposal

Post by TechnoMage6 »

Been thinking this over a lot, and I'm wondering if there is a way to decouple things specifically for steam? We record the depots independently from the apps, and the apps only reference the depots, creating the link between the apps and the files, which allows for a the shared depots, like Steamworks/VCRedist to show up multiple times but with a single entry on the database backend.

It's definitely not within the traditional structure of the XMLs, as it would require 2 record types to hold these separate entries, and likely means 2 tables for Steam CDN to achieve this as well.

Something like below, though not as simplified. Due to how metadata is so unstructured when it comes to app information and depot information, it's next to impossible with current xml properties to directly have all of it elsewhere. Cyberpunk 2077 for example supports multiple languages, but said language support isn't in the base game itself but in depots that add in or replace the base language with the others. And as you see below, some games have SteamDeck specific depots, which would contain lower resolution assets to make them run easier on the system.

Code: Select all

<xml>
	<depots>
		<depot id="1" architecture=unknown Platform="Windows" Steamdeck_Version="Yes" Name=Unknown Language="English">
			<file name="123451223123" crc32="123132" md5="abc123".../>
		</depot>
		<depot id="2" Language="Spanish"/>
	</depots>
	<apps>
		<app id="1" name="test" depots="1,2" Language="English,Traditional Chinese,Korean"/>
	</apps>
</xml>
Post Reply