A lot of the files, such as assets (images, textures, models), config files etc, are shared between Windows & Mac - They are the same files and can be used on both Windows and Mac without problems as proved here:
Do Mac and Windows versions of Source games contain the exact same files?.
However, the actual executables (.exe
for Windows, .app
for Mac) and library files .dll
for Windows, .a
for Mac) differ greatly (and are written differently, so you can't just change the extension and hope for the best).
Assuming Steam doesn't remove the Windows executables when you verify game cache on the Mac side (as SevenSidedDie fears), then theoretically you could get away with installing Steam (just Steam!) on the Mac side of things, and creating symbolic links to the files and folders that you need.
You will need to create symbolic links to
- The Game's directory in the
steamapps
folder
- Any Source
.GCF
files in the main directory (I can't remember what they're called off the top of my head, I will have a look when I get home, otherwise feel free to edit them in!)
Here is an answer I posted about creating symbolic links in Windows: Team Fortress 2 won't install on custom location.
Just remember to create Directory links for entire directories, and File links for individual files.
Edit:
Thanks to SevenSidedDie, I now know how to create symbolic links on a Mac! :) The command is:
ln -si <real file/folder path> <link name>
As pointed out, some programs wont follow symbolic links, but I've never had a problem doing this for Steam on Windows.
For each installation of Steam, you can add your SteamApps folder from your drive from the settings. (Settings > Downloads > Steam Library Folders - See image)
As long as the SteamApps folder layout is the same for all systems you'll be using, there will be no problems with installation. Possible problems with this include savegames inside the game folders, patching from multiple computers at the same time and that installing and deleting games requires you to restart Steam on other computers.
Note that only games that use the new content management support this. This includes most modern AAA-titles and almost, if not all recent releases.
Best Answer
It's possible to save most of the additional disk space and download volume, but you'll need to put some work in, it's not automatic.
To save the disk space, the steam libraries need to be on the same disk and partition and the file system needs to support hardlinks. If the OS combo is Windows and Linux, NTFS is supported by both (you can even just use the Windows C: partition if you want). I advise against ext4 because I didn't get it to work well on Windows, maybe ext2 would work. FAT does not work (no hardlinks). Other OS combinations might be more tricky, I would still use NTFS because 2/3 have good support for it and for Mac OS there are drivers you can buy.
Once you have a suitable partition, you move your steam library folders onto it, say as
Then you can use one of a selection of hardlinking tools to find duplicates in those folders and hardlink them. For example there is this script which is very careful (i.e. it might not save as much disk space as possible, but it's really unlikely it links too many files). In this example, you would run
When you install a new game, you install it for just one platform, then copy its directory in steamapps/common into the steamapps/common folder of the other platforms, then install it on the other platforms. Steam will notice that most files are already there and only download what is missing. Then run the hardlinking utility again to get rid of the duplicates.
Game updates are more tricky. A game update on one platform might also update the game on the other platform, but more likely it will leave the other platforms in an inconsistent state. Usually it should be best to just do the update on each platform separately (then run the hardlinking tool again). But if download volume is really expensive and the update is large (adding many new files), then copying the game folder from steamapps/common on the up to date platform over the respective folders of the other installations might save some download volume (then verify/update on the other platforms, then hardlink).