Codeweavers On DX11 in WINE, Steam Machines & Porting

By

Last week, following the announcement that Codeweavers would soon provide DirectX11 support for games and applications, I decided to get in touch with James Ramey, President of Codeweavers, in order to learn more about their plans and their progress on that front. He was kind enough to make himself available to answer some of our questions.

The recent news of WINE/Crossover supporting DX11 is significant, because up until now there were no FOSS solutions to get such support. Sure, the eON wrapper from Virtual Programming was one commercial option for game companies to develop ports for Linux, but it was not available for end users. With WINE supporting DX11, this opens up a whole new library of recent Windows games for the Linux platform.

James Ramey, President of Codeweavers James Ramey, President of Codeweavers

James was not too familiar with what Virtual Programming and their eON wrapper actually does and could not comment on their technology, but WINE/Crossover will surely become another option in the market of porting DX10-11 games, fairly soon. While the announcement of DX11 support is fairly new, they have actually been at work on it for quite a while.

James Ramey (JR): It has taken about 9 months to get to where we are today. We are about 4 months to having a framework for DirextX 11 in Crossover/WINE. We anticipated it was going to be a one man/year project. We’ve been working on this since the fall of 2014, and we anticipate sometime in November to have that framework in place.

Wait, a one man/year project. Do they literally mean a single contributor, or several people working on it part time ?

JR: It’s been one person actually. It’s high level, detailed work. Henri Verbeet is the person actually doing it. I am sure there are other people who contribute a little, but all is pretty much depending on the work that he does at this stage. Henri has been working on the WINE project for years. He is the foremost authority on Gaming and Graphics in the WINE community, he is considered to be an expert by most peers regarding his experience in this particular area of WINE. So for anything graphics related, it comes down to Henry. He is really at that rock-star level in what he does.

The announcement of DX11 support also hinted at better GPU performance - and that is apparently not going to be limited to DX11.

JR: GPU improvements will be from DirectX 9 up, as well as the command stream. There will be improvements to a couple of different things. We expect games support to be better across the board and not just DirectX11.

ON PORTING TO LINUX

Crossover is a commercial WINE distribution (with additional tools bundled with it), but Codeweavers also generates revenues from other sources (such as porting and maintaining Linux ports for other companies). But how much revenues come from each side of the business?

JR: It’s actually probably about 50% coming from our Crossover product, and 50% comes from supporting specific applications for developers (games and other applications).

There are actually a number of different attitudes when developers reach Codeweavers to consider Linux ports. Some are driven by a desire to make a port as low cost as possible, some other want to see what is possible and then judge what they should do next… but cost is definitely what seems to drive them to Crossover first.

JR: We see a lot of game companies - they see WINE/Crossover as a stopgap solution:* “is the Mac and Linux market big enough for us to go in or not, is there enough interest?”* And they employ us to do the port for them, then they gauge demand and determine what they do from there. Often the port that we provide is good enough, or equivalent to the Windows client and if that’s the case they don’t feel they need to build their own client any more. We have one client with whom we have been working for 2 years now and who is very happy with the work that we have done, and who have no interest in building their own solution. But it usually starts off like this: WINE/Crossover is a very low cost way to get into the market, and once they are in the market, they are fairly surprised by the results that they see. Everybody we have talked to have been fairly surprised, positively surprised, by how big the market is and how it has expanded their bottom line.

When we are talking about low cost, how low can that number actually be? What is the ballpark figure to get the game to work on Linux with WINE/Crossover?

JR: The average cost is about $15,000 USD. About a month’s worth of work for Mac or Linux. The range can be as low as $5,000 USD or as high as $50,000 USD. It really depends. What we tell companies at the start of the process is that we try to figure out what the actual port might be worth to them. For some companies it’s priceless: whatever the cost is the cost that they take. For some other companies there are several options with different price points. At some point, they can just build it themselves. We try to figure out what their price points are, and determine something that makes sense for them. If so, we are very happy to do it, but if not, we are happy to work with them to build their own solutions too. We want them to be happy, but more importantly we want them to be able to move their product to the Mac and Linux market. That ultimately is our goal.

Crossover has been good at making porting more accessible in terms of costs, and reducing those costs over time. Native ports through 3rd parties are probably sensitively more expensive.

JR: For a native port, it really depends. Every game is a little different. For some games, it’s fairly simple. For some others, it can get a lot more expensive. It’s very difficult to assess to what degree. Our developers have been very good at making toolsets to make a lot of our work fairly straightforward. We have spent 3 years working on the toolsets to more readily port games to Mac and Linux. On top of that, the more games we port, the more the next game becomes a little easier to port, as the toolsets get better refined. What used to take us 6 months worth of work now takes 4 weeks of work. In another couple of months that may be down to 3 weeks worth of work. The process gets better with each additional game.

One additional positive thing about WINE/Crossover is that the barrier to produce a port for Mac when you have a Linux version, or vice-versa, is very small. So unless there is no reason to do so, it makes sense for game developers to support both.

JR: Linux and Mac ports with WINE are fairly similar. There are some difference between GPUs on Mac vs Linux - for example the nVidia drivers for Mac are different from the Linux ones. But if we do a Mac port, we get 90% of the work done for a Linux port or vice-versa and they are mostly GPU related.

There are often cases of software compatibility being broken when moving from one WINE version to another - actual regressions. This is not uncommon and James is well aware of it, while they have a strict testing process in place to minimize their occurrence.

JR: Regressions come with any software over time. You build on top of patches that were submitted, and could not be properly tested. What makes the WINE project a bit different, every patch is thoroughly inspected by Alexander Julliard, and they are vetted by the community, thousands of users who are testing those patches. While there are regressions, they are fairly minor in numbers. It does happen and they are identified pretty quickly and sorted out. While we have regressions, they don’t linger from one version to the next in most cases. What you see instead is that new versions bring new regressions that were not there before. It’s a very slow, time consuming process. It does not move as fast as it possibly could, since there are a lot of checks in place. There is some frustration in the WINE community because things don’t move as fast as they wish, but it’s only done out of real, strong conscious efforts from preventing regressions from entering the code stream.

While being a useful tool, if you throw WINE in a discussion among Linux users, it is always going to be a hot potato of a topic. You get the native zealots who swear only by native ports, and more pragmatic people (I belong in that group) who think that whatever works, works, no matter how it’s done, as long as it works well. But whenever I see such discussions and so much WINE hate going around, I’m sure that people at Codeweavers and other WINE contributors must feel a little upset by what they come across despite their efforts to help Linux Gaming.

JR: I think that this position of rejecting WINE for porting is fairly uneducated, to be frank. These people have every right to want to get a native version (of a game) for their platform, but at the same time, they do not understand the cost involved in doing so and the return on investment. It’s very easy to build for the Windows platform. Say whatever you want about Microsoft, but they have made it easy for developers to build on their platform. And 85% of the Market is Microsoft today. If I am a game developer, obviously, I want to build my game for a large platform. It’s very simple and straightforward. If I decide to make it only for 14% of the market which the Mac platform today or 1% which is the Linux platform, I can not possibly expect the same kind of return on investment. So it’s very difficult to understand why someone would rather just want to have a native application or nothing, rather than having at least an application running in WINE. People complain that it’s not native. Sure, it’s not native, but it’s still better than not having anything at all. WINE provides the toolset for developers to gauge the interest in their games in other platforms. So, if a company like EA sees this significant Mac or Linux market, and they support that market initially through the use of WINE, they may eventually build their games for that platform natively. So I would think that the Linux and Mac users would be happy that someone is taking enough of an interest in their platform to provide an option for a game to start with. But people tend to be very closed-minded when it comes to WINE. In many cases it’s not even due to a bad experience, its not due to having used WINE, but primarily due to the fact that it’s not exactly what they want. Until the Mac and Linux market gets bigger, it’s going to be difficult for game developers to build specifically for those platforms. If they are not willing to look at WINE/Crossover at least to start, it becomes difficult. It’s very frustrating for us, because all we are trying to do is to open up the window for applications and games to other platforms, but there a number of people who are very closed minded to that. Overall, I feel it is a very vocal minority in the Linux community, but in the Mac community it is even less so. The Mac is treated a little better, they have more options… it’s a very vocal minority in the Linux community that detests the use of WINE. A good example is the Humble Bundle with Limbo, that we supported a couple of years ago. I remember reading one review of all the games in that bundle, and the reviewer pointed out that most of the games in the bundle did not work. Then he came to the game that we ported (Limbo), everything was working perfectly but since it was using WINE, it was not good. To me that kind of comment does not make sense. Somehow a game that uses WINE is worse than a game that does not work at all.

VALVE AND STEAM MACHINES

WINE has been a key component of Linux Gaming before Valve started getting involved. I was curious whether Codeweavers had any kind of business relationship with Valve in any way.

JR: We have talked to Valve a number of times. We have a good business relationship with them. They are a very confident company when it comes to porting their own games. We have worked with them - they have provided access to SteamOS as well as engineers who can help make our work easier, but in regard to an actual business relationship, we have not done business for them. We are on very good terms but they have never employed us for any project.

SteamOS and Steam Machines will be finally hitting the market at the end of the year. While it’s not directly linked to what Crossover/WINE does, this could definitely expand the Linux user base from a gaming standpoint - what James seemed to be pretty positive about this platform’s outlook:

JR: I think that SteamOS will be revolutionary. It will bring real PC AAA titles to the living room. It will be a significant advancement in gaming. A lot of game developers are going on-board early. A significant number of game developers are still waiting to see what’s going to happen first before jumping in. I think there is some hesitancy at that point, but I believe that it will change the way people look at Linux across the board. It will standardize the gaming platform for Linux. There are many variations for distributions for Linux today, there are many addons, homebrews, mutations to help modify the version of Linux that they are running. SteamOS will standardize what an optimized gaming version of Linux is. If Linux gamers want to play games, that is the distribution they are going to want to have. That will be the Linux flavour for gaming. Game developers will have a target to shoot for. Users will have a platform to build from. The combination of the two will make that very significant. And when that happens you will see that every Windows developer out there who is looking at supporting other platforms will build a Linux version of their games too.

While being positive, I’m always wondering what does success look like in the case of Steam Machines. Is that 100 000 units sold ? 1 million ? Do the number even matter at the early launch stages, is it more of a long-term thing ?

JR: I think that’s tough to gauge. When Microsoft or Sony release a new version of their console, they expect to sell between 4 to 20 millions of units in the first year. If the Steam Machines fall into that kind in scale, that will be success. But Valve is very different from Microsoft and Sony, they do not have to be successful out of the gate for it to be successful. They make money out of their game library, they do not need to make money on SteamOS. If it takes time it’s OK, there is nothing for them to worry about. But if the Steam Machines were to sell like 10 millions units the first year, I think it would be considered to be extremely successful.

One of the common criticism for Steam Machines is that the specs are going in different directions depending on what version you consider for purchase, and there is no standard whatsoever. For the end user who is not familiar with PC parts, it may be confusing. James also thinks this was not a good thing.

JR: That is probably the biggest mistake Valve did so far. They were not interested in building the hardware so they opened it up to other manufacturers, and all of them have different specs, different graphic cards, and ultimately one of those machines will come out as becoming the de-facto standard. But in the meantime there will be people who will be upset that they bought the wrong one. Valve should have been firm on the standardization of the device itself. They were trying to avoid the mistake of Microsoft and Sony where they produce the hardware and are responsible for everything. Valve did not want to do that. But there is one benefit to having a standard, it makes it much easier for the End user. That could come back and bite them later on.

GOOD OLD GAMES (GOG) AND CROSSOVER/WINE

We have talked about Steam, but GOG is actually one of the most obvious clients of Crossover/WINE kind of services: they have a catalogue mostly composed of older games, they are pushing for more Linux versions of their games, and WINE has great potential there to bridge the gap between what is available on Windows and what can run on Linux with minimal effort there. Surprisingly, Codeweavers is not working directly with GOG yet.

JR: We do not have a direct partnership yet. I believe we will be affiliated with them fairly shortly, but we are supporting some of their games that do work inside crossover, and we have supported a number of games in their catalogue for years. At one point in time GOG was buying Crossover from us and reselling our product to run specific games on Linux and Mac as well. We have a good relationship with GOG, Bigfish and other companies out there, trying to expand their user base outside of Windows games and open up their offer to Mac and Linux users as well. And I sometimes think that GOG and Bigfish see a bigger market opportunity using the virtualization tools because some of those games appeal to users who are now running Linux. They were playing on Windows before and now they have grown older, but they still want to play their favourite games even on Linux. They get a lot of nostalgia purchases.

THE FUTURE OF WINE BEYOND DX11

There is a lot of activity around graphic APIs recently. The Kronos Group is looking at the next version of OpenGL, called Vulkan. Microsoft is developing DirectX12, and Apple is going on their own with Metal. While all these APIs are going to be different, the general assumption is that they will be all relatively low level by providing a more direct access to the hardware. Would that actually make it easier for future versions of WINE to develop compatibility layers between each of them ?

JR: Henri has been looking at that a bit. He is still waiting to see what is going to come out of that. He has been very patient in determining what that would be. When that is finalized he will determine what to do accordingly. It should theoretically easier, but again that is all speculative. It should be easier than what Henri has had to do with DX9 and DX11 so far.

Many thanks to James for his availability again, and all the best to his team at Codeweavers as they plan to roll out the DX11 support hopefully later this year.

If you liked this article, you may want to check our follow up feature on the Number of Units to Sell to Generate Profits with Linux Ports.