Standard Ubuntu Gaming Platform: Sink Or Swim?

This post has nothing to do with Canonical, just one of my own hair-brained ideas.

I was traveling into San Francisco the other day, and I had an idea I wanted to share. This is very much just an idea, and given I don’t have the time to work on it, I just wanted to share it so if someone else wants to run with it, they can.

Every Wednesday at 11am Pacific / 2pm Eastern, I do a live Ubuntu Q+A videocast. In pretty much every show someone always asks me about gaming on Ubuntu, and if it is going to be a focus for us. I think gaming is really important for Ubuntu and something we should certainly focus on more in the future. My idea is linked to the importance of gaming, but with a slightly different tack.

Not that type of gaming.

One of the wonderful elements of games consoles is that the experience is predictable every time. You pop in a disc or download a game, and you know you will get the same experience that everyone else gets. In addition to this, the development platform is consistent – game devs can share the same knowledge, techniques and approaches in building their games. This is the very definition of a platform; a predictable, definable target so that the developer can deliver a quality experience for all users.

Back in the late nineties and at the birth of the CD-ROM revolution, a new marketing standard evolved called the MPC specification. In it it defined a minimum hardware and software specification to ensure that software titles branded as MPC compatible would always run great.

As an example MPC Level 1 from 1991 was the following:

  • 16 MHz 386SX CPU
  • 2 MB RAM
  • 30 MB hard disk
  • 256-color, 640×480 VGA video card
  • 1x (single speed) CD-ROM drive using no more than 40% of CPU to read, with < 1 second seek time
  • Sound card outputting 22 kHz, 8-bit sound; and inputting 11 kHz, 8-bit sound
  • Windows 3.0 with Multimedia Extensions.

Essentially, the Playstation 3, Nintendo Wii, and XBox 360 are basically the same thing; a standard piece of hardware (and peripherals), and a standard Operating System and set of capabilities.

A child playing Duke Nukem Forever on a MPC Level 1 computer.

Now, the MPC programme didn’t really take off, and there are various reasons for that, but I am curious to see if the concept of a standardized platform still has merit. Thus, the idea…

The Idea

In a nutshell:

Define a hardware and software specification that would be branded as a gaming platform, putting Ubuntu at the heart of the story.

It could be interesting to decide on a hardware specification that provides a certain set of functionality that developers could target and profile their code on, and a defined set of software components that a given game could expect. Thus, if you find a computer with that hardware specification, and you package the software pieces up on a ubuntu-gaming-platform package, you are good to run all games designed for the platform.

There are a few interesting outcomes that could happen here:

  • For the hardware hackers among you, you could buy the hardware components and build custom set-top boxes that act as consoles for the platform. Also, hardware vendors could sell pre-built machines that consumers could run games on. The openness of the hardware platform would encourage competition and deliver low-cost hardware for the Ubuntu Gaming Platform.
  • Developers could have a standard tool-chain and set of facilities to build games, and existing Open Source games could be ported to the platform.
  • Developers would also have a consistent set of tools to share best practice and documentation about. We could build community around this platform.
  • These games could be exposed easily from the Ubuntu Software Center and if someone has the suitable hardware, they are only a click away from a set of titles that will run great on your system.
  • We could even set up an open governance board that certifies games that conform to the platform (in the same way Sony certifies and approves games for the Playstation platforms).
  • I think such a platform could also potentially attract commercial game developers’ interest too. A predictable, definable platform with many different hardware implementations that are cost effective

The end-user experience would be a set of games that they know will work well on hardware that they either buy as a console from a vendor or a box that they build themselves.

To do this we would need to standardize the hardware and software platform, brand it, and build a standard set of tools and resources to encourage developer adoption.

With the right people working on this idea, I think it could work. Thoughts?

  • Anonymous

    Jono, this sounds like a very interesting idea. I wonder if this is a chicken or egg scenario.

    Should an Ubuntu gaming platform come before or after more games coming to Ubuntu? Which would benefit? Games that work solidly first in Ubuntu, possibly making it easier to develop the platform in the future, or would developing the platform help games come to Ubuntu?

  • Callum Saunders

    this is great.

  • Nomnom

    Gnome first needs an IDE comparable to VS or XCode if it wants to bring game developers over. None of them are going to spend time learning Vi or Emacs.

    (I know there are plenty IDEs on Linux, but they all suck. The only one I know anyone would consider using is Qt Creator, but that needs to be less coupled to Qt development before any serious developers consider using it.)

  • Anonymous

    I am not sure an IDE as much as a fully integrated platform is needed, of which an IDE pulls together some of the pieces.

  • Neil Oosthuizen

    My initial thoughts right after reading the post:

    My interest was initially pricked as I love to game, and for that very reason I still use Windows on my desktop.  However, the farther I read the more disappointed I became.

    What I get from the article is basically the ideas for an “Ubuntu Console”.  Fixed (also read limited hardware), specific API and games linked to work on it. 

    One of the things that made PC’s so awesome was the possibilities to mix and match components, and this also made it a pain for game developers because you had to cater for an ever increasing and rapidly changing hardware base… And this challenge is what makes it so difficult for Linux to get into the mainstream as far as games are concerned as it now even added another layer of complexity by being a whole new infrastructure that had to be catered for.

    Now imagine if we fragment the little Linux gaming eco-system even farther by having an even smaller sub set of Linux users able to game using Linux?!

    If it is going to be gaming on a PC using Ubuntu then it can’t be to rigid in its hardware requirements, if it is gaming on hardware using Ubuntu then just call it a console, and be prepared to face off VS the big three… X-Box, Playstation and Nintendo :/


    PS – I have touched on so many different thoughts and feelings in such a limited space I suspect that very few will follow my train of thought… OK, the fact that it is 3am isn’t helping the cause either :p

  • Nomnom

    I say IDE because In terms of libraries I think it’s already pretty well known in the game dev community what’s needed to develop for Linux.

    I do think something like the average minimum spec of the community would be useful for people thinking to port or develop for Linux though. They could target the highest number of users…. maybe I’m going off in a different tangent here.

  • sepidev

    I agree with Nomnom, One of the biggest missing component for developer in Linux  is a comprehensive Integrated Development Environment. On the library side we don’t have any major shortcoming. 

    An IDEAL IDE could be something like this:     Supports langs like C/C++/Vala/Python.     Multiple compiler support (GCC, Borland, etc.)     Supports Android SDK and ARM arch     Supports modern build system (Premake, CMake, etc.)     Multiplatform (other OS user would like it, XCode, and MSVS lack this)     Memory debugger     Easy code watching, breakpoint, etc.     Class creator and navigator.     Code profiler.     Simple, customizable and responsive UI. (most important feature IMHO)     UI creator (Gtk+/Qt).     Automatic code completion for any arbitrary libraries.     Code folding.     Supports bzr, git, etc.          None of the existing Linux IDEs have all this feature together. 

  • Caio Alonso

    As a game developer programming on Ubuntu, I love this idea!

  • Anonymous

    I am not suggesting we lock out people, but I am suggesting that we identify a certain specification of performance with a range of hardware options that we can define as part of the platform.

    In my initial thinking, as an example, graphics performance would be delivered by a range of different cards that meet the Ubuntu Gaming Platform requirement for a graphics card. People could then pick whichever card works best or is cheapest for them.

    My point here is more about identifying ways to deliver predictability in the hardware and software platform; it will need some hard choices, but not necessarily lock people out.

  • Anonymous

    Cool. Which game(s) do you work on, and what do you look for in a platform?

  • Neil Oosthuizen

    The predictability that made Windows gaming take of was the DirectX API (if memory serves it was DirectX 5 where it really started to blossom)…

    It was up to the developers to decide what hardware requirements they would need depending on the game.

    It is still this way and very successful.  Now if I could grab a copy of a game for which I have the required hardware and not need to worry if I am running openSUSE 11.3 or Ubuntu 11.04 because this will only work with Kernel 2.3.4535-432556-rc2 and it needs pulse audio and a package which isn’t compatible with the version of Gimp I am currently using… Now when that day comes I think we will see some progress…

    tl;dnr – Focus on making a standard for GNU/Linux and not the hardware :)

  • Caio Alonso

    I’m currently working on an online Bomberman-like game. I’m writing it in C++ using the SDL framework. I intend to release it on Linux, Mac and Windows.

    Aside from the elefant in the room that has always existed in game development for Linux that is the small userbase, the next things I would improve on Ubuntu are: 1. the availability and quality of graphical and development tools; 2. the documentation and easiness to begin developing games on Ubuntu; 3. video drivers; 4. I haven’t yet learned much about this, but the easiness to create a .deb/PPA is key in the release process. The software center is already great to get applications, but maybe the process of creating the .debs could improve.

    Independent game development is growing a lot, Ubuntu should aim to be the best platform for indie devs to develop and release their games. Give them a good reason to not just compile a half-good version for Linux, but to use Linux as the platform to create games.

  • AdamW

    “One of the wonderful elements of games consoles is that the experience is predictable every time. You pop in a disc or download a game, and you know you will get the same experience that everyone else gets.”

    Well…sort of. Now consoles got wind of the whole ‘updateable firmware’ wheeze, not so much any more.

    “Define a hardware and software specification that would be branded as a gaming platform, putting Ubuntu at the heart of the story.”

    I think the problem with that is it’s fundamentally quite difficult to put an operating system at the heart of a gaming story. The console angle is an important one here: what OS does the Playstation 3 run? XBox 360? Do you know? I don’t. Does anyone care? Probably not. The heart of a gaming story is the games, not the operating system they’re running on.

    It would be awesome if Ubuntu could somehow emerge as a popular gaming platform, but I’m not sure it’s likely. I think what’s likelier is The Web emerging as a viable gaming platform – this has already started, with Quake Live and HTML5 Angry Birds (try it!) – and it’ll do an end run around the platform wars at some point sooner or later.

  • Daniel Bo

    Exactly. I’ve been saying since 10.04’s Alpha that Canonical needs to bless a language, toolkit, IDE, and publishing method, and put out real documentation stressing a core set of components. It looked like that was happening with Quickly, GTK+, GEdit + plugins, and Mission Control for a little while, but the shine on that seems to have dropped off. In essence, Canonical needs an answer to VS+C#+.NET and XCode+ObjC+Core*.

    I think I’ve even posted on your blog about this.

    Of course, the gaming platform can be worked into this (give SDL some real love!), and devs can easily guarantee software compatibility by setting ubuntu-gaming-platform as a dependency. Make publishing via USC easy, and you’ve got something

  • Daniel Bo

    Agreed 1) Canonical need to have a  default and kick-ass IDE 2) Canonical needs to decide on a language and toolkit, then make development in the IDE as simple as possible by creating tons of tutorials for this set. 3) This is coming with AMD and Intel. I think NVidia is actually getting left behind here. 4) There needs to be simple publishing to a PPA and an application process for the USC.

  • Anonymous

    It strikes me that in terms of IDEs we could do much of this with Anjuta or Eclipse. I know, Eclipse is not much fun, but lots of people use it in professional environments.

  • Anonymous

    “Well…sort of. Now consoles got wind of the whole ‘updateable firmware’ wheeze, not so much any more”.

    I am not sure what upgradeable firmware as to do with a predictable experience. Irrespective of your views on upgradeable firmware from people such as Sony, the PS3 is still a predictable platform – I know any game I buy will work as the developer expected.

    “I think the problem with that is it’s fundamentally quite difficult to put an operating system at the heart of a gaming story. The console angle is an important one here: what OS does the Playstation 3 run? XBox 360? Do you know? I don’t. Does anyone care? Probably not. The heart of a gaming story is the games, not the operating system they’re running on”.

    Agreed; but I am talking about a weird-crossover-world in which we merge together the concepts of consoles and the concept of an OS; essentially building a console platform at the heart of Ubuntu.

    “It would be awesome if Ubuntu could somehow emerge as a popular gaming platform, but I’m not sure it’s likely. I think what’s likelier is The Web emerging as a viable gaming platform – this has already started, with Quake Live and HTML5 Angry Birds (try it!) – and it’ll do an end run around the platform wars at some point sooner or later”.

    Agreed – it is a tough challenge and the web is compelling, but there is no reason why web games couldn’t work on this platform too. :-)

  • mickey lyle

    Driversdriversdrivers… The nvidia closed driver is decent, but otherwise we are in a miserable state. The open ATI driver is coming along nicely, but ubuntu users only see the improvements every 6 months, and that’s miserable! r600g announced a huge improvement today, but we won’t see it until November? Possibly not until next April?

    John Carmack even notes drivers as a major sticking point for Linux game development. If Ubuntu wants to help improving gaming, improving drivers and getting them to end users is where help is needed.

  • dubdub

    If you discard some of the more irrelevant things like Gtk+, Vala and bzr KDevelop is almost there. Spend aprox. 100 dev days and Ubuntu would have “his” IDE. As usual the last 10% are missing.

  • David Bogas

    I love the idea! I’m not a developer nor a gamer, but I think gaming world is becoming so huge today, and it will be great for the Ubuntu community to compete at this area. I will share this post at Blender forums so maybe independent game developers will become interested. It would be great to make this real! PS: Sorry if my english is not good… Hehe!

  • Laryllan

    Its a shame you don’t have time for this, cause gamers are the driving force behind innovation and Adoption. Take a look at who buys the newest hardware, who is willing to pay for good software and who uses the most recent software…

    It’s the gamers you have to convince if you want to achieve wide spread adoption of Ubuntu as a platform that has to be taken seriously.

  • Anonymous

    Ive been thinking about this idea myself for about 4 releases. We have all the ingredients of something like steam its just linking them together and putting examples onto to show them how to make them work in their games.

  • AdamW

    well, there’ve been problems where some games were broken with firmware X and others with firmware X+1, which gave you a bit of a problem. Rare, but not unheard of.

  • AdamW

    “The predictability that made Windows gaming take of was the DirectX API (if memory serves it was DirectX 5 where it really started to blossom)…”

    I don’t really think that’s accurate. PC gaming was popular long before DirectX existed and there have been enough games written that aren’t in DirectX.

    Oddly enough, I have a story open in another tab right now:

    “Between just 1998 and 2006 console software sales more than doubled, from $2.5 billion to $6.7 billion, while PC game sales dropped from $1.8 billion to $970 million.”

    Sounds like PC gaming in the Windows era isn’t actually a huge success story…(though I hope those numbers count Steam).

  • Dennis MH

    Too few games and people don’t buy consoles exactly because they don’t like those “buy this hardware and that’s it for the next years”. The Linux gaming scene which doesn’t really exist yet will be completely led by Valve’s Steam upon it’s official announcement in late 2011, like it is for Windows gamers already.

  • dylan-m

    I think one reason we don’t have a big, de-facto IDE is that the surrounding tools fit together very neatly already. They’re already integrated. Conversely, that makes life difficult for an IDE because if it doesn’t integrate with the existing tools lots of people won’t be able to use it and it’ll die of loneliness. The one big thing a solid IDE provides that we don’t have elsewhere is a simple yet powerful build system. With a bit of care and attention we could give a tool like gyp or BuilDj enough of a following, and then that’s taken care of; we can have a common build description format shared between IDEs and everything else.

    At any rate, it sounds like you want QtCreator :)

    My favourite thing QtCreator provides is a sense of certainty. You run it and it has all the Qt documentation, piles of examples, nothing that says “I don’t work yet;” it’s all just there. I think that does wonders for encouraging people.

  • Chris Hardee

    I agree with a few others, I think this is a really good idea and I’d be the first to help contribute to this. Games like Amnesia: DD would be a good target application to get running well, along with all the humble indie bundle games.

    That being said, I think this is a bit of a solution in search of a problem. I don’t believe system compatibility is a large barrier for game developing or porting. The issues involved with games on Linux are still present: drivers, support, commercial incentives, etc. I think huge strides are being made but many still remain and I think Canonical should start throwing it’s commercial weight around to attract games and solve these problems. Much like Redmond did during the 90s with directx.

    What I think would really help is develop a set of libraries or applications to make porting to Ubuntu dead simple. So simple that it would be trivial to release a Linux binary. Unity 3d, now allows compiling a Linux binary easily. I’d like to see a way to port 3d android games to the software center with one click.

    I’d also like to see a general Ubuntu games group that does more than package, we would also connect with developers and help them port games, fixes bugs related to games, provide support to gamers, etc.

    Just some ideas in addition to yours. I’m glad this is being discussed. :)

  • Neil Oosthuizen

    Hi… like I said “Windows gaming…” and also, if the Internet is to be believed the end of gaming on PC’s is coming this year (like all of the previous years) :)

  • Nomnom

    From my experience Eclipse is too slow and Anjuta is incomplete.

    I’m only pointing this out because I develop games and the thing I’m constantly hearing from Windows and Mac developers is they don’t want to spend the time bulding for a system if the don’t have something as good as XCode, VS. To them it’s just seen as an inconvenience, and an unnecessary one at that.

    For me this isn’t an so much of an issue. I just thrown up QtCreator and remove the Qt dependences in the build system… but I don’t think every person is willing to do this.

    I might be totally wrong though. I think you should forward this discussion on to someone like Ryan C. Gordan. He’s extremely passionate about bringing games to Linux and he’s had more experience then nearly anyone in the community.

  • Tim Blokdijk

    Jono, let me quote you:

    “I think gaming is really important for Ubuntu and something we should certainly focus on more in the future.”

    That’s the solution to your problem. I think that with a little more focus from Ubuntu/Canonical you can help the current open source games in the repository shine. All it takes is someone that understands game development and the Ubuntu platform. Just make sure this person keeps his focuses on the end user (the gamer), playerbase is gold. Second is game content creation. It’s not code, let me repeat, code is not the bottleneck! Creative people working together creating a coherent game product via the internet in their free time is the big challenge.

    And if your more into proprietary software, the big game studio’s would also require a one on one contact with someone that understands game development and the target platform (Ubuntu).

    Something you yourself can do is provide more exposure to the open source game projects that are available. There are a few really nice games around that just need someone like yourself to push out in the limelight.

  • Anonymous

    Exactly! Reward those few developers that choose to support Linux, show to the others that investing in Ubuntu and the Linux Ecosystem is a good choice.

    I also completely agree we need better tools to handle images, video and audio.

    And also, supporting the free game frameworks like SDL and Allegro would certainly help the game dev on Linux. Improving their code and documentation will make things a lot easier for anyone that wants to create a game on Ubuntu.

  • Anonymous

    There is one. KDevelop. Enough said.

  • Nomnom

    KDevelop is great! No so great on gnome though :)

  • Inge Wallin

    In exactly which ways? 

  • Nomnom

    Well from standard install you an error message ever time you close. I assume I’m missing some packages, but the fact that the standard package has some bugs is an issue.

    There’s were some other issues I came across, which I obviously don’t have written down. Either way I don’t think it really makes sense to use a tool which doesn’t visually fit the environment you’re using.

  • Cameron Hart

    This depends on what you mean by gaming, but I’m going to assume that it is commercial games that currently target Windows, anything from Super Meat Boy to Battlefield 3.

    I’ll prefix this with I’ve worked in the games (console and some PC) industry for 6 years.

    The biggest hurdle in getting games to Linux is money. That is, the number of desktop users who are interested in buying games. If you fix bug #1 then people will be making games for your platform no matter what the state of IDEs or drivers is because they can make money out of it. We’re starting to see this happen for MacOS more and more because its install base has grown. Indies like the Humble Indie Bundle have been quite successful selling games on Linux. It’s a great start, however indie budgets are smaller than AAA so they don’t need to sell as many units to cover development costs and make a profit.  If the number of users (potential customers) increases, so will the number of games targeting Linux.

    The idea of a dedicated hardware platform for to bring gaming to Linux to me just makes things worse. If anything it splits the potential customer base. You would need to sell millions of them before it would be attractive to game developers and publishers. Console manufacturers spend a lot of money marketing their console and making high quality exclusive content to attract people to their platform. The hardware is a means to an end, they make most of their money out of software sales on their platform. The size of their user base is key.

    Also if it’s a dedicated gaming platform who cares what OS it runs? Most of the time is spent gaming, the OS is invisible.

    Other than increasing user base to make Linux more economically attractive as a gaming platform Ubuntu and Linux in general should focus on making it easier (and thus cheaper) to develop and debug on. This means better video drivers, getting X out of the way, better profiling and debugging tools (things like gDebugger – which is available for Linux). Making sure companies like Nvidia and AMD offer the same SDK and tool support for Linux as the do for Windows. IDE wise QtCreator is a fine C++ IDE on Linux.

  • Ryan Sharp

    You’re like one of those idiots who wants his favourite project to be re-implemented in his favourite language but has absolutely no idea about software engineering.

    Clearly you don’t know enough to make this request a reality. If you actually tried to do it, by the time you were competent enough, you would realise why it’s a f*cking pointless exercise.

    Coding centers entirely around manipulating text files. People do it in vim/emacs because that’s all anyone really needs. Using a huge, bloated graphical interface for editing flat text files is an absolute farce.

    The reason you won’t find any elaborate IDEs on Linux is because no one has the incentive to put much work into it. Visual Studio and XCode are the products of 2 companies trying to establish an ecosystem of amateur, wannabe developers, so they can then proceed to sell them various related crap products.

  • Ryan Sharp

    There’s this really great and ubiquitous interface called a command line. It allows you to quickly execute and chain commands together. It reads from stdin and writes to stdout. It’s the interface that the authors of most of the tools you listed above had in mind when they developed them. When you master it, you’ll wonder how you were ever retarded enough to ask for an IDE.

  • Ryan Sharp

    Absolutely nothing of any value would come of this besides maybe an egg timer and a fart generator.

  • Anonymous

    Please stop being an ass.

  • Anonymous

    Please stop being an ass.

  • Ryan Sharp

    Oh dear. You’re an offended Visual Studio moron aren’t you?

  • Anonymous

    Please keep your discussion here respectful, Ryan.

  • John Pugh

    We are working on #4, Caio. If you need some help packaging, we can help, just ask!