Cider, Wine, and Cheese

Cider, Wine, and Cheese
Photo by Camille Brodard / Unsplash

Editor's Note: This legacy article is reprinted from where it was originally published: MacGameCast. It's presented here as a technical writing sample and has NOT been updated for modern versions of MacOS.

Do you have a pile of old Windows games that you've been longing to dive back into if not for the lack of a Windows machine? Are looking to play something new but not satisfied with the current crop of available OSX titles? Then I might know just the thing you're looking for.

Despite all the serious work that gets accomplished on personal computers, it’s hard to deny that games have a history of being major catalysts for change on many different computer platforms. Many a computer was purchased with the ulterior motive being to be play games like Doom and Quake. Similarly, the rise in the popularity of smartphones is surely influenced in no small part by the availability of so many great mobile games. It’s no surprise then, that Mac gamers are also often on the lookout for new and interesting games to play.

Variety is the Spice of Life

Being a Mac gamer, you’ve probably noticed that we haven’t historically had access to as many top tier titles as our contemporaries on the Windows platform. Sure, we get many of the multi-million dollar marquee titles like Diablo 3 or Minecraft, and some of the smaller independent titles like Trine, but we tend to miss out on a large number of good mid-tier titles. Titles from major publishers that aren’t quite blockbuster successes, but still fun experiences. The “proper” way to deal with this situation would be to build up a healthy ecosystem that supports developers and publishers while helping to build a customer base. That, however, takes time and as consumers there are limits to the amount of influence our dollars can wield. But these are all social problems. Isn’t there a technological solution to this problem? Yes there is, and that’s where something called “Wine” come in to the picture.

What is Wine?

I’d like to introduce you to the Wine project. The word Wine is what’s commonly referred to as a recursive acronym, or an acronym that refers to itself. Wine stands for “Wine Is Not an Emulator”. While also a funny name for a software project, it’s actually a very important technical distinction. Emulators work in very different ways when compared to systems like Wine.

How does Wine work?

What follows is a VERY broad explanation of what goes on when thinking about how Wine works, so please excuse the huge oversimplification. If you’re an expert on this sort of thing, please excuse me while I bumble through your field of expertise knocking over tables and dishes on my way to the larger point.

Minotaur China Shop from Flashbang Studios

How Does Wine work?

As stated before, Wine is NOT an emulator, it’s a compatibility layer. Every computer operating system has it’s own way of storing, reading and executing data. It has it’s own way of organizing hardware devices, and it’s own naming conventions for all these types of system objects and devices. Wine is basically an additional layer of software that sits between the Windows program you’d like to run and your operating system and acts as a translator or an interpreter between the two. When you launch a Windows program on a Mac, you can imagine the Windows software and your Mac having a much more technical and complicated version of the following conversation:

Windows Software: Hello, I’m Windows software XYZ! Can I access your speakers to play a sound?

OS X: What do you mean there’s a banana in my memory bus?

Windows Software: I don’t understand. Why did you just return a URL for a cat video? That’s not what I asked for!

Not very productive. Neither side of that conversation had any idea what the other side was talking about, so the whole exchange went nowhere fast. Now, let’s imagine that same conversation using a translation layer like Wine to play the part of the proverbial Babel Fish:

Windows Software: Hello, I’m Windows Software XYZ! Can I access your speakers to play a sound?

Wine: -= TRANSLATE =-

OSX: Why hello there! You most certainly can. I have two sets of speakers. Which ones would you like to use?

Wine: -= TRANSLATE =-

Windows Software: Oh, I’ll try the first one. Thank you!

Wine: -= TRANSLATE =-

OSX: No problem at all, thank you! Please let me know if you need anything else

Wine: -= TRANSLATE =-

That exchange was much more productive.

On paper, that process seems pretty straightforward, but it’s actually pretty complicated for a number of reasons: key among them being that there are literally thousands and thousands of different types of communications that need to be translated this way. Sure sometimes tens or hundreds of these types of interactions can be “decoded” in one go and translation rules coded for them, but many of these exchanges need to be handled individually. That’s because many of these interactions are not documented thoroughly by Microsoft.

Why is Wine important?

Microsoft has a vested interest in keeping Windows programs running exclusively on their own operating system. So it’s not hard to imagine Microsoft being slow to help programmers find free ways to run Windows programs on other operating systems. During the great Windows 8 uprising of 2012, one of the facts often cited by people who were reluctant to switch to an alternative operating system like OS X was an inability to bring their large library of legacy Windows software with them. That demonstrates how important legacy software can be and how useful a technology like Wine can become in the right situation.

Projects like Wine allow people who use Windows software to have more of a choice in where and how they use the programs they own. It also allows avid gamers without access to a game-worthy Windows PC to play Windows exclusive games that are significant touchstones in game culture. And that doesn’t even get into the greater social good that can be had by allowing people with limited financial resources all over the world to run Windows software on donated hardware with free operating systems. Of course, the simple fact remains that for many people, it’s just down-right fun to get a piece of software working on a piece of hardware it was never intended to run on. It’s a part of the age-old “hardware hacker” ethos that has made the internet such a vibrant marketplace for ideas.

What is Cider?

So we’ve had a short overview regarding what Wine is and how it works. You might still be wondering: “How is that related to Cider”? Wine was originally conceived as a software project to be used on the Linux family of operating systems. Because of the open source nature of the Wine code base, it was relatively simple to modify it for use on OSX. In keeping with the theme of naming software after potent potables, Cider (at least in this context) is what you get when you attempt to make WINE out of APPLES. (Specifically Macintosh apples?) So Cider can be considered an OS X specific implementation of Wine with one very important distinction: Cider is intended to be used by developers, not users.

Wine is a general purpose compatibility layer. That means the Wine developers would like everything from high-end video cards to laser printers to be usable under Wine. Cider however is focused exclusively on games and game technology. Cider takes only the parts of Wine useful to video game and multimedia developers (namely, anything related to video, audio, and input devices like mice or game pads) and packages them into a programming library that can be used during the development of their games. If implemented correctly, this allows the developers to quickly create OSX versions of their titles since much of the code needed to get these titles to run on OSX will already be present in some capacity. The key take away point here is that titles created using Cider come directly from the game publisher themselves and are therefore generally have official support channels you can utilize should the need arise. Should you decide to purchase one of the commercial versions of Wine, you will be entitled to some level of support from the company that created the Wine port, but you will not be able to get support directly from the game publisher themselves. As with most open source projects the community is where you'll need to turn for advice on issues running the community version of Wine.

How do I get started with Wine?

I'm glad you asked. For starters, take a look at the Wine Application Database on the project's homepage. This is your go-to source for up-to-date information on software compatible with Wine. Applications are categorized from best to worst in the following order:

  • Platinum - Almost perfect support. Expect next to flawless installation and operation with zero configuration required.
  • Gold - Almost perfect support, but some special configuration will be required.
  • Silver - These titles work well, but you may be expected to sing for your supper as far as configuration goes but shouldn't run into any show-stopper bugs.
  • Bronze or lower - Sometimes, showing up for the game is hard enough. These titles have potential, but at this point, you might be better off trying something else if you aren't willing to track down bugs yourself and perform some testing.

Unfortunately, there aren't any official ports of Wine for OSX, but there are quite a few free (and commercial) versions of Wine to choose from:

Wineskin - (Free) - Still active

WineBottler - (Free) - Still active

PlayonMac - (Free) - Still active

Crossover - (Paid) - Still very much alive and cooking

These last three are command-line only and NOT recommended for the faint of heart!

OSXWineBuilder - (Free) - Still looks relatively active

HomeBrew - (Free) - This isn't a version of Wine, but an entire open source software repository that happens to have Wine as one of it's available packages

MacPorts - (Free) - This also isn't a version of Wine, but an entire open source software repository that happens to have Wine as one of it's available packages

Go ahead and download one of these and, if you're feeling adventurous, give it a try.