I work for CodeWeavers, a small US-based company that provides porting services for Windows-based software to Linux and Mac using the Wine project. Our employees contribute a large chunk of the changes to Wine.
Obviously this port was botched, and the article is right to be annoyed at such a low effort port. I'm here to say that it is a really hard problem, even for experienced porters like ourselves. Proprietary software, especially games, on an open source operating system is hard. You've got libraries changing underneath you in incompatible ways, so you've got to support both versions of the library, or even ship your own build of the library. You've got any number of different desktop environments, which makes integration with the native environment hard. You've got about the same number of different window managers, each of which handles window messaging, stacking, etc in different ways. Each operating system, and often even each operating system version, has different package names, making dependency resolution a special hell.
Shipping proprietary software on Linux is a Hard Problem. You can target specific distros, but you'll still have unhappy users who (rightly) want their distro supported. It's a very long tail.
This port was botched, but I bet they're trying to get in on the SteamOS wave. It's hard to blame them for wanting some nominal support for Linux, and thus SteamOS, but they clearly chose the wrong contractor to provide the service.
All that said, I do have one issue with this article:
> They did not communicate the fact that it was not a proper native version, but simply a wrapped Windows version. It was fully advertised as “now available for SteamOS”, giving the false impression it was recompiled for it. Not a very good idea to hide stuff like that.
We get this complaint a lot. When your application is built using DirectX and other Windows APIs, doing a native port to another platform's API can be very expensive. It's not as easy as switching the Linux switch and running make.
Properly done ports are nearly indistinguishable from a game built natively on Unix APIs. In a kind of perverse way, you can actually get better forwards compatibility with a non-native port like this. As the old binaries rot and fall out of compatibility with modern desktops, you can just pull out the Windows executables and run them in a modern version of Wine.
Think of Wine (or this Eon thing, if it were done properly) not as a wrapper, but as a library that the authors decided to target their application for. You can then upgrade your library and still run the application that targeted it.
I know CodeWeavers and if I am not mistaken this is your technnology that was used for the Linux port of Limbo by the Humble Bundle a couple of years ago. Thanks for coming here to give your opinion.
> We get this complaint a lot. When your application is built using DirectX and other Windows APIs, doing a native port to another platform's API can be very expensive. It's not as easy as switching the Linux switch and running make.
Yup, but the point I mentioned in the article is that Witcher 2 now runs almost perfectly under Wine and it would have been a much better port if they just used Wine instead of Eon, and the cost would have virtually be free (of course, testing would cost money).
> You've got libraries changing underneath you in incompatible ways, so you've got to support both versions of the library, or even ship your own build of the library.
I thought steam provided a runtime with libraries so that this isn't a problem?
> Shipping proprietary software on Linux is a Hard Problem.
I would think this is a hard problem for everyone except Steam, which happens to also be a digital distribution method.
People complaining about Wine ports is a personal pet peeve of mine. I'd much rather the money spent on ports go to e.g. Codeweavers where it will improve an open source project everyone will benefit from.
Honestly, I wouldn't hold it against you if the game runs well only on Ubuntu's default window manager. I routinely run games in a separate X server with just openbox running to prevent such problems. I can and if I have to, I will download an older version of libjpeg or libgnuc++ or whatever, build them and install them.
The problem with Witcher 2 (an excellent game btw) is that it didn't run well even in Ubuntu's default wm, or in openbox, or on Linux at all.
I think Wine-based ports are a sane choice for the large backlog of older games that aren't feasible to port natively, and don't suffer from the performance hit involved.
I've certainly played a lot of games on Wine over the years, and it's frequently been an excellent experience.
Oddly on my Mac I have to rely on wine ports or similar to run some games I used to be able to run until OS X dropped support for the older setup; I think rosetta did the emulation prior
> We are looking into the performance issues as a serious task, as obviously this will affect any other Linux games we do as well as Witcher 2. Despite various claims made, we want to get the best performance we can!
We will confirm support for AMD's fglrx driver when they have shipped a non-beta release that allows the game to run correctly, though it does seem that the 14.4 rev2 driver largely addresses this. On my personal machine with a Radeon HD 7750, I get an ASIC hang with this driver after playing for roughly half an hour - so I am currently hesitant to "officially recommend" it.
On my machine, using PlayOnLinux, Witcher 2 performance is worse than our port is. However, with the CSMT patch, it does appear to be much better. We are looking into why this is, and suspect that the issue comes down to poor multithreading in GL currently, which is exactly what CSMT avoids by making all GL operations occur on a single thread.
Witcher 2 is making use of multi threaded Direct3D 9 support, and we are implementing this in eON by using shared GL contexts, one for each thread. The context share resources such as textures and vertex buffers. We are investigating whether this turns out to be a big performance hit or not.
"People who are commenting in this way completely miss the point. Linux gaming is a growing opportunity. Nobody expects it to remain at 1% forever."
I'm sure SOMEBODY does, and anyway that's a bit of a strawman -- if Linux triples its marketshare it's still under 5% of the PC gaming market, which itself is often not given the same amount of attention as the primary two consoles. And if the bulk of big AAA game ports to Linux are badly-wrapped Windows games, or even well-wrapped Windows games, then it seems hard to see what will motivate more than a small portion of gamers to leave Windows.
EDIT: And Valve can throw as many resources as it wants at Linux gaming, the general problem of making Linux into a desktop OS capable of competing alongside Windows and OS X has had a lot more resources thrown at it in the past, and unless and until that effort finally pans out, having Linux gaming as a functional subset of Windows gaming is not going to induce people to switch en masse.
> And if the bulk of big AAA game ports to Linux are badly-wrapped Windows games, or even well-wrapped Windows games, then it seems hard to see what will motivate more than a small portion of gamers to leave Windows.
There are many ways to develop games nowadays for multiplatforms. If you use C++/SDL it will run on all systems in the very same way and you don't need to spend time porting. If you use Unity3D you can export for all formats including Linux (x86). If you use Unreal Engine, CryEngine you can now export to Linux as well.
Seeing the massive amount of support for Linux in the middleware/engine area, I'd be very surprised if most future Linux versions are not Linux native ones. Of course Witcher 2 was developed way before this current state of things so it could not benefit from the same tools and it was anyway built for Windows in mind in the first place.
> I'm sure SOMEBODY does, and anyway that's a bit of a strawman
You'll probably have to explain to me how having more games being developed and released for the platform is going to attract LESS gamers in the future. It can only go up, and more so when the Steam Machines are out. Maybe it will go to 2% only, maybe 10%, who knows, but betting on it stagnating is not very credible.
"Hopefully other publishers and developers take note of this, and see the excellent work done by 4k Games on Metro Last Light as an example of what should be done instead"
Except the Linux version of Metro LL is inferior (not by much though) to the Windows version.
> Except the Linux version of Metro LL is inferior (not by much though) to the Windows version.
Yeah, but the framerate is excellent and the game is very close to the Windows version apart from some missing effects. There are videos on youtube comparing both and it's clearly what I call a "good port", even if not exactly as good as the Windows version.
Just an FYI for those of you that missed it, the Metro series is being updated across the board with Redux versions, 2033 will be on the new engine, etc:
These will also have linux ports, it'll be interesting to see how the Metro LL port fares this time around. I can't get my wireless Xbox controller to work right on LL so I might as well wait for the Redux versions.
I believe it's an economics problem at its heart. How do you justify the costs of porting for maybe a 1-3% increase in sales. I don't think you can. And that's why most ports are terrible. It's the classic chicken and egg problem. You see it with console vs pc games and that's a much bigger increase in sales...
[+] [-] coldpie|11 years ago|reply
Obviously this port was botched, and the article is right to be annoyed at such a low effort port. I'm here to say that it is a really hard problem, even for experienced porters like ourselves. Proprietary software, especially games, on an open source operating system is hard. You've got libraries changing underneath you in incompatible ways, so you've got to support both versions of the library, or even ship your own build of the library. You've got any number of different desktop environments, which makes integration with the native environment hard. You've got about the same number of different window managers, each of which handles window messaging, stacking, etc in different ways. Each operating system, and often even each operating system version, has different package names, making dependency resolution a special hell.
Shipping proprietary software on Linux is a Hard Problem. You can target specific distros, but you'll still have unhappy users who (rightly) want their distro supported. It's a very long tail.
This port was botched, but I bet they're trying to get in on the SteamOS wave. It's hard to blame them for wanting some nominal support for Linux, and thus SteamOS, but they clearly chose the wrong contractor to provide the service.
All that said, I do have one issue with this article:
> They did not communicate the fact that it was not a proper native version, but simply a wrapped Windows version. It was fully advertised as “now available for SteamOS”, giving the false impression it was recompiled for it. Not a very good idea to hide stuff like that.
We get this complaint a lot. When your application is built using DirectX and other Windows APIs, doing a native port to another platform's API can be very expensive. It's not as easy as switching the Linux switch and running make.
Properly done ports are nearly indistinguishable from a game built natively on Unix APIs. In a kind of perverse way, you can actually get better forwards compatibility with a non-native port like this. As the old binaries rot and fall out of compatibility with modern desktops, you can just pull out the Windows executables and run them in a modern version of Wine.
Think of Wine (or this Eon thing, if it were done properly) not as a wrapper, but as a library that the authors decided to target their application for. You can then upgrade your library and still run the application that targeted it.
[+] [-] ekianjo|11 years ago|reply
> We get this complaint a lot. When your application is built using DirectX and other Windows APIs, doing a native port to another platform's API can be very expensive. It's not as easy as switching the Linux switch and running make.
Yup, but the point I mentioned in the article is that Witcher 2 now runs almost perfectly under Wine and it would have been a much better port if they just used Wine instead of Eon, and the cost would have virtually be free (of course, testing would cost money).
[+] [-] jcastro|11 years ago|reply
I thought steam provided a runtime with libraries so that this isn't a problem?
> Shipping proprietary software on Linux is a Hard Problem.
I would think this is a hard problem for everyone except Steam, which happens to also be a digital distribution method.
[+] [-] asb|11 years ago|reply
[+] [-] anon4|11 years ago|reply
The problem with Witcher 2 (an excellent game btw) is that it didn't run well even in Ubuntu's default wm, or in openbox, or on Linux at all.
[+] [-] msl09|11 years ago|reply
[+] [-] sho_hn|11 years ago|reply
I've certainly played a lot of games on Wine over the years, and it's frequently been an excellent experience.
[+] [-] Shivetya|11 years ago|reply
[+] [-] ekianjo|11 years ago|reply
[+] [-] pronoiac|11 years ago|reply
[+] [-] shmerl|11 years ago|reply
> We are looking into the performance issues as a serious task, as obviously this will affect any other Linux games we do as well as Witcher 2. Despite various claims made, we want to get the best performance we can!
We will confirm support for AMD's fglrx driver when they have shipped a non-beta release that allows the game to run correctly, though it does seem that the 14.4 rev2 driver largely addresses this. On my personal machine with a Radeon HD 7750, I get an ASIC hang with this driver after playing for roughly half an hour - so I am currently hesitant to "officially recommend" it.
On my machine, using PlayOnLinux, Witcher 2 performance is worse than our port is. However, with the CSMT patch, it does appear to be much better. We are looking into why this is, and suspect that the issue comes down to poor multithreading in GL currently, which is exactly what CSMT avoids by making all GL operations occur on a single thread.
Witcher 2 is making use of multi threaded Direct3D 9 support, and we are implementing this in eON by using shared GL contexts, one for each thread. The context share resources such as textures and vertex buffers. We are investigating whether this turns out to be a big performance hit or not.
[+] [-] cwyers|11 years ago|reply
I'm sure SOMEBODY does, and anyway that's a bit of a strawman -- if Linux triples its marketshare it's still under 5% of the PC gaming market, which itself is often not given the same amount of attention as the primary two consoles. And if the bulk of big AAA game ports to Linux are badly-wrapped Windows games, or even well-wrapped Windows games, then it seems hard to see what will motivate more than a small portion of gamers to leave Windows.
EDIT: And Valve can throw as many resources as it wants at Linux gaming, the general problem of making Linux into a desktop OS capable of competing alongside Windows and OS X has had a lot more resources thrown at it in the past, and unless and until that effort finally pans out, having Linux gaming as a functional subset of Windows gaming is not going to induce people to switch en masse.
[+] [-] ekianjo|11 years ago|reply
There are many ways to develop games nowadays for multiplatforms. If you use C++/SDL it will run on all systems in the very same way and you don't need to spend time porting. If you use Unity3D you can export for all formats including Linux (x86). If you use Unreal Engine, CryEngine you can now export to Linux as well.
Seeing the massive amount of support for Linux in the middleware/engine area, I'd be very surprised if most future Linux versions are not Linux native ones. Of course Witcher 2 was developed way before this current state of things so it could not benefit from the same tools and it was anyway built for Windows in mind in the first place.
[+] [-] ekianjo|11 years ago|reply
You'll probably have to explain to me how having more games being developed and released for the platform is going to attract LESS gamers in the future. It can only go up, and more so when the Steam Machines are out. Maybe it will go to 2% only, maybe 10%, who knows, but betting on it stagnating is not very credible.
[+] [-] shmerl|11 years ago|reply
* Unofficial community bugtracker for the Witcher 2: https://github.com/KillaW0lf04/The-Witcher-2-Issues
* Witcher wiki - howtos and workarounds (Linux version): http://witcher.gamepedia.com/The_Witcher_2_howtos_and_workar...
* Linux issues and user solutions: http://forums.cdprojektred.com/threads/29958-Linux-issues-an...
[+] [-] ekianjo|11 years ago|reply
http://steamcommunity.com/app/20920/discussions/0/5227281809...
[+] [-] ekianjo|11 years ago|reply
[+] [-] kkedacic|11 years ago|reply
[+] [-] mariusmg|11 years ago|reply
"Hopefully other publishers and developers take note of this, and see the excellent work done by 4k Games on Metro Last Light as an example of what should be done instead"
Except the Linux version of Metro LL is inferior (not by much though) to the Windows version.
[+] [-] ekianjo|11 years ago|reply
Yeah, but the framerate is excellent and the game is very close to the Windows version apart from some missing effects. There are videos on youtube comparing both and it's clearly what I call a "good port", even if not exactly as good as the Windows version.
[+] [-] jcastro|11 years ago|reply
- http://store.steampowered.com/app/286690/ - http://store.steampowered.com/app/287390/
These will also have linux ports, it'll be interesting to see how the Metro LL port fares this time around. I can't get my wireless Xbox controller to work right on LL so I might as well wait for the Redux versions.
[+] [-] shmerl|11 years ago|reply
[+] [-] ekianjo|11 years ago|reply
[+] [-] FollowSteph3|11 years ago|reply
[+] [-] ekianjo|11 years ago|reply