Installing Steam on Mac OS with a Case-sensitive boot partition

So Steam has now been released for the Mac. Whilst this is a massive step forwards for the Mac as a platform – finally giving Apple a credible position regarding gaming (after the 2007 deal with Electronic Arts, which didn’t even promise Mac native games but merely wrappers around Windows titles*, apparently went nowhere) – there are still clearly rough edges which makes Steam feel more like a late beta.

There are minor issues regarding connectivity, with logging in and especially downloads taking several attempts and with downloads randomly pausing themselves before completion. The application still needs to be made more Mac-like, since the white background of the “Updating” window is jarring and the main window can’t be moved between Spaces by picking up the window and moving the active space with the keyboard. Mainly though, Steam needs to support case-sensitive filesystems.

Update: Whilst the connectivity improved with time, Steam on Mac still feels like a second-class citizen.

Installing to a case-sensitive filesystem is a standard OS X installation option. Especially for people coming from the UNIX world, opting for this filesystem brings many benefits. The only development house I’m aware of with the audacity to remain incompatible with this fully Apple-supported option are Adobe – and they’re hardly a great example to follow. I really think that not supporting case-sensitivity on Mac would be entirely equivalent to not supporting FAT32 filesystems on Windows.

Update: Windows 7 now no longer supports installation to FAT32 😉

More interestingly, it’s widely suspected that a Linux version of Steam is also imminent – and this can only support case-sensitive filesystems, as on Linux case-sensitivity is sacrosanct. Hopefully, the situation on the Mac is purely a reflection that Valve were struggling to meet their launch-deadline, and will soon be resolved.

Update: Steam on Linux never happened, Valve seem to have zero interest in robust Mac support.

In the meantime, here is a method to get Steam to run on a Mac which does have a case-sensitive boot partition without needing a reformat and reinstall(!) Steam tries to access the following paths, and may create the following directories:

~/Library/Application Support/steam
~/Documents/steam content
/volumes

Luckily, this can be relatively easily fixed without imposing too much of a performance penalty:

  • Launch Disk Utility.app and choose File > New > Blank Disk Image…. In the following dialog window, create an image named “Steam” with a Format of ‘Mac OS Extended’ (a journaled filesystem sitting within a journaled filesystem doesn’t bring any benefits), no Partitions (this isn’t a physical device, so there’s no need), and an Image Format of ‘sparse bundle disk image’ (which means that the image can be of an arbitrary size regardless of filesystem space, but which is split into chunks of just over 8MB each so as not to cause fragmentation issues as the used size of the image expands). Now choose a Custom size with a sufficiently large value (I created a 1TB disk image) and name the new volume “Steam”;

  • Download Steam and copy Steam.app to the mounted Steam disk image created above. ‘Get Info‘ on Steam.app, click on the steam icon in the top-left of the information dialog and press Command-C to copy the icon. Likewise, ‘Get Info‘ on the Steam disk image on the desktop, select the disk’s icon, and press Command-V to replace the disk icon with the Steam icon. Repeat for the Steam.sparsebundle package created above, but also choose the ‘Hide extension‘ option under ‘Name & Extension‘;

  • Open Terminal.app, and run the commands:
    mkdir -p /Volumes/Steam/Application\ Support/Steam /Volumes/Steam/Documents/Steam\ Content /volumes
    ln -s /Volumes/Steam/Application\ Support/Steam ~/Library/Application\ Support/
    ln -s /Volumes/Steam/Documents/Steam\ Content ~/Documents/
    ln -s /Volumes/Steam /volumes/steam

    If you have the developer tools installed, then you can now also run:
    /Developer/Tools/SetFile -a V /volumes
    /Developer/Tools/SetFile -a V ~/Documents/Steam\ Content

    … in order to keep the Finder view tidy;

  • Update: Regardless of whether you have Developer Tools or not, you can instead run:
    chflags hidden /volumes
    chflags hidden ~/Documents/Steam\ Content

    … in order to keep the Finder view tidy;

  • Now simply launch Steam.app, and everything should just work! All you have to do is to remember to unmount the Steam disk image when it’s no longer in use.

Hopefully, a steam update will remove the need for this before too long – I’d be surprised if this is still an issue after the launch of Steam on Linux.

Update: <sigh>

* Although there is evidence that Steam on the Mac will be implementing a DirectX wrapper for non-OpenGL games. This is still an immeasurably preferable approach compared to having to run every API call through a translation layer. Potentially, just as adoption of the iPod Touch, iPhone, and iPad has apparently started a transition away from Flash video towards HTML5/H.264 video, is it just possible that the rise of the Mac as a gaming platform could drive more developers to adopt OpenGL instead of DirectX. Whilst Microsoft’s XNA allows code reuse between the PC and XBox360 platforms, the PC does appear to be in decline as a gaming platform and if the Mac is gaining gaming market-share then cross-platform development in this direction could become very attractive. There are many PC games whose complexity or control systems don’t fit well in the more constrained environment a console provides, and it’s possible that (possibly for novelty value alone, initially) Mac revenue on Steam will be higher in comparison to the platform’s market-share then PC revenue. It’s my impression that Mac owners will be more willing to spend more money on quality games than PC owners. In opposition to this, the Mac may just not be sufficiently accepted as a gaming platform for sales to significantly take-off.

Update: Just recently there has been press regarding the decline of consoles as game-playing platforms and the resurgence of the PC. On pay-what-you-want sites such as humblebundle.com the amount that people choosing to identify themselves as Mac users choose to pay is reliably half as much again as what Windows users pay. Linux users, on average, reliably pay twice what Windows users pay. Go figure…