Today I Announce what I'll be doing for the senior project at my college. I am going going to make a multiplayer action video game called “Prism War”. It will work first for GNU/Linux operating systems and then later ported to other systems when convenient.
The game's graphics are vector graphics that will be composed as SVG files and will be drawn with Cairo. The music will be composed as “extended modules” with MilkyTracker. The reason I'm using MilkyTracker is that it's Free/Libre Software, I like it, and it works for all major operating systems. Everything else, including joystick support, will most likely be taken care of by SDL and its many add-ons. SDL works good enough for a Cairo context. The game engine will be released as free software under the terms of the GNU GPL. Development will start on September 1st.
The “Excuse Plot” is you are part of a rebel alliance and you do whatever it necessary. You have a laser blade, bullet reflecting force fields, and a device that materializes cubes from thin air.
Now since the graphics system is vector graphics, why should I not just do it in Flash? After all it's supposedly “industry standard”.
The first problem with this was I would have to work in an environment made entirely of proprietary software, and I'm clearly not use to it. I know from experience that whatever resources I will put into the flash files will be extremely hard to take out to use for other purposes. The resulting game would have no other interpreter other than the Flash Reader from Adobe. That interpreter isn't concerned at all about your freedom, The only thing “free” about it is that you can download this package of unlearnable magic from the internet for no money.
Gnash, a free software interpreter for Flash files, is in the works. It works pretty well, but it isn't complete enough to understand the newest flash games.
Java is a legitimate choice. In 2006 Sun released the Java framework as free software under the GNU GPL. There's no portability problems either as Java works on all major operating systems including completely free ones. The only reason why I'm using the combination I am is because at this moment I want to help the developers of Cairo by providing a benchmark for which they can improve their work (kind of like demos from the Demoscene improving graphic cards). Otherwise Java would be fine.
Browsers that understand HTML5, as far as I know, don't have easily portable means for using stable interactive audio. Besides, the canvas element on Firefox depends on Cairo anyway. I'll just cut out the large middleware and just use Cairo.
There is a unique problem with Microsoft's .Net framework. Even though there's a mature and free implementation of that framework called Mono, Microsoft claimed patent rights over the language and components of the .Net framework, and that their somewhat hazy promise not to assert their “necessary claims” isn't very reassuring. Besides that, Cairo is used for the drawing backend for Mono anyway.
So will the other things I mention. I know more about how to code in a Unix-like environment and dealing with C libraries then those other frameworks, and I've learned quite a bit about Cairo while I worked with GTK+ earlier this year.
Cairo is the main drawing utility for GTK+, GNOME, and Firefox. A lot of current free software projects are migrating to use Cairo as well. Eventuality Cairo will be hardware accelerated via OpenGL making it perfect for Free Software video games.