Jump to content
McKay Development

Can there be LanCache Support?


Recommended Posts

Reviewing the files, I noticed that the CDN.js file can be used to download chunks and manifest records for apps. However it appears to only be able to download by first getting the steamcache servers via the steam api. A while back Steam supported Lancache, a project aimed to store a local copy of CDN files for quicker download, used for places with slow bandwidth or even LAN parties or eSports events. Could this also use Lancache, if detected on a local network?

A Lancache server wouldn't have a limitation of only having certain files, like some steamcache CDN servers, because it would pull and grab from any CDN server that has the files and save them locally.

Link to comment
Share on other sites

In many regards, yes. I have a personal LanCache server that I use to store games, and update them regularly. This basically just grabs the raw CDN chunks, Manifest, and Patch files and saves them to drive on the server. The purpose of a LanCache server is primarily used for large network parties, but my personal reason is due to limited space on my PC, a lot of games that I like to play, and slow internet speeds. Imaging instead of redownloading a game at whatever speeds your ISP offers, you download them at the speed of your home network, not to mention this doesn't cut into any bandwidth limits that an ISP may or may not have after the first download. Looking at solutions that can run on any system where it can use lancache to save a copy of the chunks without needing to have a steam client running to download and save the files.

The other reason is because I'm reviewing the CDN.js file, and am looking at using it for No-Intro purposes. That community is trying to find a more direct way of getting checksums of every game file, like md5, sha1, sha256. So far their only method is to download and extract the files from the chunks and getting checksums and file sizes of those, but they are looking for a more direct approach, getting the checksums of the chunks themselves and of the raw manifest file, all before decompression/decryption, etc. You can look up the community if you like, they do a lot of work in providing a standard for the preservation of game content and ways of determining if what you have is original or corrupted. Also if the lancache chunks get corrupted, this would be a nice way to force a redownload of those chunks, as there isn't any way to directly see that.

Edited by Dimensional
Link to comment
Share on other sites

To help clarify, I use my personal Lancache as a means of storing my games when I need to free space on my computer, by storing them on a NAS. This has benefits over using backups, like Steam's natives, because of multiple reasons:

  1. The process of backing up takes time to compress, possibly even storing in multiple blocks.
  2. The game that gets backed up could get an update, resulting in said backup being out of date.
    1. In order to get the updates, I'd have to reinstall said backup, then download the update, and then save it again.
    2. Reinstalling the backup takes space and possibly lots of time as it's decompressing large blocks.

Using Lancache, I get around this by having it automatically stored in the raw CDN setup, ie encrypted and compressed manifest and depot chunks. It's basically pre-backed up. If I uninstall the game from my PC, I don't need to run a backup process before uninstalling it, saving me time, and if I need to reinstall, I don't have to wait for Steam to grab each block I created and extract the data. Only down side is that in order to install updates, I'd have to reinstall the game to my PC, which will grab the cached 1MB chunks from the Lancache server, and cause it to grab any chunks from the update that I don't have.

If this software could use Lancache, which steam has natively supported for some time, it just needs to detect that Lancache is running on the local network, then what it could do is use that to grab the chunks from any of the Steam CDN servers, not having to figure out which ones have the game depot, and have it store them to the lancache drive. If it doesn't actually save the chunks that it gets cached, then I wouldn't have to worry about needing free space for them, but it would also provide the benefit of allowing one to regularly run to any cached apps and games that received an update since the last time files were downloaded.

I brought up No-Into earlier, but that'll be for another post/thread.

Link to comment
Share on other sites

I'm familiar with what lancache is and how it works. If you want hashes of chunks, SHA1 hashes of every chunk is in the manifest.

I'm not really seeing how downloading files through a lancache will help you to hash them, but your project is your business.

Adding lancache support is pretty simple, but validating that it works is a little less so since I'll have to set up a cache server to test with.

Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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.

  • Create New...