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?"
if your not looking to make money off of it, or dont mind other people using your code, the best way may just be to open source it
"However you do it, you'd do well to distribute the game as a boot cd."
I can't speak for anybody else, but I'm unlikely to play a game I have to reboot my computer for.
"Derp de derp."
Something tells me they've just got free advertisement...
You are more than the sum of what you consume. Desire is not an occupation.
(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.
"Unless this person is Bill Kendrick, who is an excellent coder besides his lack of creativity in the art department, the code skills follow the effort in the art."
Dude, no offense, but I hope you do realize that artistic talent and coding talent are _completely_ unrelated skills. Most coders I know, myself included, are awful at drawing anything, and viceversa people who have a love and skill for arts, tend to be less interested in coding or Linux.
Like any skill that takes not only natural talent, but also lots of practice, _very_ few people are interested equally in both and spend equal time pracing both. There are only so many hours in a day, and someone interested in coding will spend those coding, not drawing.
So judging someone's coding skill by how well they draw is just bogus. It's like judging someone's ability to drive by their skill at poker, or viceversa. It's simply unrelated skills.
So, yes, a lot of freeware or OSS games have sucky art, because that's the best that a coder could whip up. Coder nerds are many, artists interested in working for free to stick it to MS or to make a statement about how evil IP is, are very very few. Unless you're willing to pay someone, and as a lone coder making a freeware game you probably don't want to pay for it, yeah, you're stuck with whatever sucky graphics you can whip-up in Gimp.
A polar bear is a cartesian bear after a coordinate transform.
I'd like to speak in your defense against the slightly-inflammatory responses you are getting.
If you stop and think about it, why do we have operating systems? Simply put, every machine is different, and the same code cannot power two unique devices.
Bootable games is a great idea, but the first problem you hit is this: "What is the program going to tell the hardware?" If the hardware is not the same on every device, it won't know what to say! If you try to tackle this program yourself, you'll have written an operating system before you know it. Your operating system will veritably do less hardware support and fewer features than, say, linux. :-)
Game consoles can handle bootable games because they are designed to make everyone's life easy; every unit is usually identical and almost always compatible. We PC users don't have the luxury.
It's not that you have a horrible idea. You have a good idea, but just not a realistic one.