Best Way to Port a Windows Game to Linux?
cliffski asks: "I have a Windows game that may benefit from a port to Linux. It's a complex politics sim based on a neural network, (think NationStates with complexity) and is probably right up the street of many Linux gamers. The problem right now is that I don't have the knowledge or the time to handle a Linux port, myself. What's the best way to arrange for a commercial port of games software to the Linux platform? Is it worth talking to lone enthusiastic hackers about collaborating? Would I save myself a lot of hassle by selling the porting rights to an established Linux games company?"
(Background: I've got my name on six published games, four of them cross-platform - I've written code for games that run on Xbox, PS2, Gamecube, Windows and the Mac).
Short answer: Make sure that the game runs correctly under Wine. Fix your Windows code to be Wine friendly.
Long answers:
I don't have the knowledge or the time to handle a Linux port, myself.
If you're not willing to commit time or resources, then I guess you won't care if it ends up being a shitty port.
What's the best way to arrange for a commercial port of games software to the Linux platform?
The best way is to have the same team that built the Windows version make the Linux version at the same time as the Windows one.
They should try and get the game working on each target platform from as early in the development cycle as possible - ideally from day 1. At least one developer should be working on each platform full-time as their main development workstation. And they should do at least one full build and brief play test per week - to ensure the different platforms don't get out of sync - AND they should check code in often so that cross-platform issues are caught as early as possible.
At the start of the project, abstract the platform-specific code to the edge of the codebase. Once the platform-specific code is solid, the developers should transition to building the game on top of the platform code - each being focused on game features, but fixing platform-specific issues as they arise. As you go, you'll probably build up a core library of cross-platform functions that are needed when dealing with multiple platforms and compilers.
And that, IMHO, is the best way to ship a multiplatform game with a limited team.
Is it worth talking to lone enthusiastic hackers about collaborating?
No. I personally would avoid this from the administrative issues alone. Besides trusting them with your codebase + assets. Then there are legal / non-disclosure issues, plus whatever "creative urges" they have to differ from what you were expecting them to be doing.
Would I save myself a lot of hassle by selling the porting rights to an established Linux games company?
No. As has happened with other game ports - the porting company would then produce a separate product. Users would then have to purchase it separately from the Windows version - meaning that existing customers would have to buy the game multple times if they were expecting to be able to run the game on another platform. As both a gamer and developer, I think that's unfair.
And the autobooting Linux CD (with a Windows launcher) is just about the dumbest idea ever - if there's a Windows version, users are going to want to run that - not the Linux version. It changes the focus from the product (the game), to Linux (an OS). Good for Linux zealots, bad for commerce.