Last October, I began porting my NERD Engine to non-Windows platforms, using You Have to Win the Game as a test case. This involved rewriting all my rendering code to use OpenGL instead of Direct3D, which in turn required a solution for converting HLSL effect files to both GLSL and a proprietary format that would specify sampler and render state information. Input code and audio code that depended on DirectInput, XInput, Raw Input, and DirectSound had to be rewritten using SDL2 and a custom audio renderer. After three weeks of intensive work, I had a nearly 100% accurate Windows build of You Have to Win the Game that did not utilize any DirectX APIs.
That was only the tip of the iceberg. The next step was to begin compiling on other platforms, which would require the removal of all remaining Windows platform APIs as well as dealing with any unexpected compiler- or platform-specific issues. I spent a very frustrating day or two excising code wholesale and eventually wound up with a build that would at least compile on Linux. Of course, it segfaulted immediately on launch, due in part to 64-bit portability issues that I knew I would have to address someday but which hadn’t yet become an issue. In the interest of preserving my sanity, I abandoned the ports at that time, deciding that I could return to them once my next game were finished and on its way to recouping development costs.
Fast-forward to last week when I attended Steam Dev Days. Much of the first day’s material was focused on why and how developers should be targeting Linux. I hoped there would be a magic bullet. There wasn’t. In truth, there was very little I hadn’t already figured out for myself or with the help of my brother, who had just recently ported Eldritch to other platforms. What is clear is that Steam’s future is placing a tremendous importance on Linux development. I wish that there were a less painful solution, and maybe someday there will be, but we’re not there yet. Right now we are in a place in which developers are compelled to give up the comfort and familiarity of battle-tested tools if we are to target these platforms.
As a mostly-solo developer, that’s scary. As someone who has little or no immediate income because he left his job to focus on indie development not too long ago, it’s even scarier. And when I consider that my goal in the short term is to bring a free game to other, smaller platforms, it makes me question its worth.
You Have to Win the Game is free. It always has been, and it always will be. Being on Steam would not change that. I’ve even promised that if it were Greenlit, I would develop a new remixed campaign which would also be free. But considering the time investment involved in the porting effort and the hardware investment that will eventually be necessary once I turn my attention to Mac, I begin to question whether those costs, both in terms of time and money, are enough to put myself and my company at risk.
Of course, much of the work involved in porting You Have to Win the Game would translate directly to future projects, and in that regard, it’s conceivable that it would eventually pay for itself. Furthermore, I believe that doing this work upfront and targeting a finished game would allow me to better validate the results and hopefully catch some of the corner cases that might be more difficult to find if I were to attempt this process on an in-development title. That means easier development in the future and an increased likelihood of being able to sim-ship future titles on multiple platforms at once. So that’s cool. But I’m still burning money at a constant rate. The longer I spend on these tasks now, the longer it will be before I can ship another game, and the longer it will be before I can start recouping costs.
The worst case scenario is that I once again put the porting effort on hold and focus on shipping my next game on Windows first. But that’s not my preference, and I think it would be a small misstep for the company. So I’m looking for feedback on the situation. I would love to be able to make this game available for free on more platforms, but I also want to feel financially secure in my ability to do so. Without coloring the discussion too much, I feel like a donation or pay-what-you-want model could be a possible solution, or perhaps a crowdfunding campaign for development with the game released for free on completion. There’s no right answer, and I can’t make everyone happy, but I’m curious to see where y’alls’ heads are at.