Can I download Steam games on one computer (mac), then install them on another (Windows)?

My gaming PC (which runs on Windows) has very limited bandwith: I can connect to the internet, but cannot download a game. However I do have a macbook with access to a network with unlimited bandwith. Is there any way I can download Steam games (for Windows) on my mac and then transfer them to the Windows PC?


Solution 1:

Most multi-platform games share a large amount of data between platforms, even though the actual executable is different.

Let's look at Half-Life 2 and other Source games. They have lots of *.gcf files inside the Steam\steamapps folder. Those files contain all the multimedia assets (levels, audio, textures, 3D models...), and such data is identical to both Mac and Win versions. Thus, you can safely copy such files from your Mac Steam to your Windows Steam, saving you a few gigabytes of downloads. Then, the Windows Steam will still download Windows-only files, but they are quite small, maybe less then 100MB.

It also works the other way around: copying files from Windows to Mac.

What I've described should also work on most steamplay titles, that are available on Steam for Mac and Windows. (but you might need to copy files from subdirectories inside Steam\steamapps\common)

However, if you want to download a Windows-only game, then you might need to run the Windows version of Steam. You may achieve that using one of the many virtualization options (VMware, VirtualBox, Parallels), or even try your luck running Steam under Wine (but that might be too buggy).

Solution 2:

Valve's SteamCMD does just that.

  1. Download and unpack steamcmd.
  2. Cast this spell to log in, set a game directory and download the game. Fill in <your login>, or replace with "anonymous" if you're downloading a free game. Replace a 740 with your app id - you can see the app id in game URL on store.steampowered.com.

./steamcmd.sh +@sSteamCmdForcePlatformType windows +login <your login> +force_install_dir ../csgo_ds +app_update 740 validate +quit