With the announcement, and subsequent release, of the Steam for Linux Beta, Valve Software have taken a hefty stand on the subject of cross-platform PC gaming. Their forays into developing their Source engine for the Linux ecosystem (specifically the Debian-based Ubuntu variant) has yielded surprisingly good results, as mentioned by the Valve Linux blog, and they have been working closely with nVidia to improve gaming on Linux for everyone.
It’s not very long ago that Valve Software released a Mac OSX port of their Steam software and the availability of Mac software as well as the adoption rate of Mac users has steadily grown since then, broadening the amount of gamers overall. Valve software has clearly decided that it wants to unify the PC platform into a single entity, spanning across various operating systems and bridging the gap between users, something I think is just peachy.
The schism that exists between computer users, based solely on their choice of operating system, is detrimental to the growth of the PC games industry, especially now that Mac computers have exploded in popularity. Whether you want a high-end laptop, build your own rig with multiple graphics cards or demand that all your software be open-source, we should all be able to get along and stop the pointless bickering on what visual interface we prefer to stare at all day. We should rather be focusing our energy on the real enemy: the filthy casual console players*.
Developing games takes a staggering amount of time and money and I have nothing but respect for those who endeavour to entertain us, doubly so if you take upon yourself the task without the backing of a publisher or established studio. However, despite this respect I am adamant that the indie games scene needs to move away from the idea that Windows is the only platform to develop for. The amount of times I’ve found an interesting game on IndieDB only to be disappointed at the lack of a Mac download is often enough to discourage any real exploration of the offerings from “garage-developers”. I choose to use a Mac for a myriad of purposes and the end result is that I feel rejected (and downright mocked) by gamers and game developers for that choice. I understand that Windows being the established gaming platform is a strong incentive to go Windows-only for your game project, but it is in our best interest to detach PC gaming from being Windows-exclusive.
Considering the extreme reactions to Microsoft’s latest operating system and the dangers, not to mention frustrations, that arise from giving a single company control over a medium, I believe that the future in PC gaming lies in true platform-agnosticism, where the choice of OS isn’t decided by the availability of a whole type of software but is instead based on the strengths of the system and his/her own priorities. Before you take a stand against this utopian idea by claiming that gaming is best on Windows, I ask you to consider what Microsoft has done to improve or embrace gaming on their operating system contra any of the other available options. Games for Windows – Live was probably the most abysmal and half-hearted insult to gamers that I have ever had the misfortune of experiencing and was probably done to entice developers to adopt Microsoft’s XNA tools by allowing Xbox 360 features (achievements, save game encryption and DLC) to be used in PC ports. Also, I cannot remember Microsoft ever toting their major games marketshare in any advertisement or as one of the strengths of their operating systems, it is simply a status quo that has arisen despite no encouragement or assistance from Microsoft themselves. Seeing as the creators of the operating system don’t particularly care about maintaining a strong grip on the PC games market, which is arguably contra to their interests considering their interest in moving gamers (and non-gamers) towards the Xbox platform, there is no reason why gamers themselves should work at maintaining this exclusive hold on their interests.
This complain and call to action wouldn’t be of any use if I couldn’t pose any solutions to the problem. The easiest way to ensure cross-platform-development is to use one of the many tools out there who will do a large chunk of the work for you. There are many cross-platform game engines out there, each with its own strengths and demographics, so it is only a matter of deciding to support all PC platforms from the get-go and making your choice of game engine based on that. To that end I will describe a few of the engines I have discovered in my time as a novice game developer, ones that deserve the attention for what they offer indie developers.
Unity, which recently released a new version of its editor, is one of the better engines I have experienced and deserves recognition for that fact. It’s built around game objects which consist of visual components and scripts that dictate how it behaves, a concept which is surprisingly easy to wrap your head around and results in building modular projects consisting of your own assets or ones purchased from the integrated Asset Store. The most impressive thing about the engine isn’t just it’s ease of use, but the plethora of platforms that you can export your game to, including smartphones and consoles as well as all the major desktop operating systems. Unity is poised to be the best choice for indie developers who want a powerful and flexible game engine that runs just about everywhere.
Be advised that I was involved in the development of LÖVE at its early stages, so my recommendation may be a tad biased. Also, one of the examples was built by me.
LÖVE is a programmers engine, in which I mean that there is no visual editor and virtually no built-in features. Instead, the engine is comprised mostly of a very basic API which does the heavy lifting for you, but requires you to build everything else (like the GUI system and game entities) yourself. Thankfully, the “lövers” (as the forum members are referred to) have build a large amount of libraries that help you accomplish a lot of the menial tasks that are necessary when building a game. LÖVE is a very bare-bones engine, but it makes up for its shortcomings by being very versatile and fast, and if you’re willing to work through the difficulty curve you can accomplish a lot of crazy things.
OpenGL/C++ (2D, 3D)
If you insist on building your own engine, you can’t go wrong with OpenGL and C++. Almost every platform built since the 70s has been able to run some variant of C and C++ has become the language of choice for most low-level development. Most game engines are build using C++ and the ones that are cross-platform are built to handle OpenGL, which is supported on all desktop operating systems and, to a certain degree on smartphones with the OpenGL ES subset.
Notable examples: pretty much everything ever
Hopefully I’ve made a valid point to the indie developers (or would-be indie developers) out there to embrace platform agnosticism as a means to reach as many gamers as possible. This argument makes a lot of sense to me, being a Mac user who also likes games, but I'd love to hear any counter arguments that I haven't thought of.
* Note: I own an Xbox 360, PS3, Wii and MacBook Pro – I do not seriously endorse hate or any form of gaming-related-snobbery