Copy a Steam game to another computer

Valve’s Steam ecosystem makes purchasing and installing games much easier compared to CDs. I do like that. There is one thing that is rather impractical when playing with multiple people, though: Everybody has to download the game from the internet.

This is not that bad when you have already downloaded the games at home before you come to a party. The really bad part is when you decide to buy a game at a party. Then several people have to download the game before you can start playing. With my current 16 MBit/s ADSL connection, you have to wait quite some time to download a game. Downloading with five people means that the party is over before you start playing.

Even worse, somebody on the network might already have the game (that is why everybody ought to buy it). One could just transfer the data over the 1000 MBit/s network, right?

Getting a faster internet connection will make this problem less prominent, but it still does not really get around this. Dropbox syncs your data peer-to-peer in the local network. That might be a nightmare for firewall admins, but it is really great to save time. It would be really cool if the Steam software was able to do so as well.

Until they implement this feature, there is something you can do yourself to transfer the games faster.

First, locate the game files on the source computer:

../../_images/01-explorer.png

Then use an archiving software like 7zip to browse this directory. This is my second Steam library. I have to in order to install some games on the 250 GB SSD and others on the 1 TB HDD. Either way, I want to transfer BioShock 2 and Battlefield 2 over. They are in the other directory:

../../_images/02-7zip-index.PNG

Now create a ZIP archive. Be careful to choose store and not deflate. Game assets are already compressed and therefore it will just waste CPU power to compress it even further.

../../_images/03-7zip-dialog.PNG

Then you can see it working along …

../../_images/04-7zip-progress.PNG

Now one needs to transfer the files to the target machine. One can use an USB thumbdrive to do this. I just set up an Apache HTTP Webserver using XAMPP on my Windows 10 machine. There I have a directory from where I can serve those game files.

On the target machine, I can then open a web browser and download the huge file over the network:

../../_images/05-browser.PNG

After that, it needs to be extracted into the right location:

../../_images/06-extract.PNG

That will again take some time:

../../_images/07-progress.PNG

In the meantime you can copy the app manifest. This is a numbered file one directory above the one where the games are located:

../../_images/manifest-1.png

You need to figure out which number corresponds to the game you want to copy. Just open the library page in Steam for your game. There will be a link to the shop page:

../../_images/manifest-2.png

The built-in browser will show the URL of the game, in there you can read off the URL.

../../_images/manifest-3.png

Copy the corresponding manifest file to the target machine into the same directory.

Then comes the critical moment. Log into Steam where you have already purchased the game and click on Install.

../../_images/08-library.PNG

Then you need to acknowledge the space it will consume on disk.

../../_images/09-install.PNG

Steam will then look at the files which are already present.

../../_images/10-progress.PNG

After that is finished, it will download the remaining files. I suspect that some of those files are customized to the given machine. If you are unlucky (like me here), all the game files must be downloaded again.

../../_images/11-download.PNG

This method has worked for me a few times now.

Keep in mind that you have to buy the game for the second account as well. This does not get around any copyright mechanism, which would be illegal to do. It is just about saving a few hours of download time for large games.