2005-07-23

Open Source and Commericial Videogames

As development costs continue to rise the question raises of how do we cope with it? Some have suggested raising retail prices and letting gamers pay for the increases. Others want to outsource portions of their games to small countries where workers are paid much less. I believe the true answer lies in open source.

If you're not familiar with what open source is, then this isn't really the place to learn about it, but to put it briefly... With open source software, all users of the software are given the complete source code and are allowed to tweak it how they need to and even redistribute it depending on what the licensing conditions are. By having the source code open to the public, it encourages a community to build around it. This promotes two things, it give users the freedom to alter their software as where most EULA type agreements strictly prohibit it. And it allows developers to reuse code instead of recreating the wheel. Another thing it allows is for software longevity that a single company would not be able to provide traditionally. By companies who use this software contributing back code to the project or even just monetary donations these communities can thrive on less money than it would normally cost to either buy software or create your own tools. One more great benefit is that because there are so many programmers examining the code, bugs and filtered out at a very rapid rate while development of new features is usually much faster than traditional methods as well. But do keep in mind that not all open source software is free of charge.

Now lets look at how this can benefit you and your games... This will probably be the most helpful to independent developers, but it can be beneficial to just about any company really. There are two portions to this argument. The first is the most obvious, use open source content creation tools. Almost every tool we use to create our games has a free, open source alternative to it. I'm not going to be naive here and tell you they can directly replace your current tools, but many of them are reaching a level of maturity where they're ready for you to start migrating now. A few of the better free projects out there are:

Programming:
Anjuta (General IDE for Linux)
Dev C++ (C/C++ IDE for Windows)
GCC (Command line compiler)

Graphics:
Blender (3D modeller/animator)
The GIMP (2D raster image editor)
Inkscape (2D vector image tool)

Audio:
Audacity (Audio editor, multitrack)
Rosegarden (Music sequencer, synthesizer, and composition tool)

There are also numerous open libraries you can use for your game. I'm sure you've heard of OpenGL before. Well there is also OpenAL for audio. And if you're looking for something similar to Microsoft's Direct X, SDL is a very nice package. If you don't want to pay for a license to use MP3s in your game you can use an open format like Ogg Vorbis. In fact with vorbis you can even encode your audio in 5.1. There are numerous video formats too. Xvid and Ogg Theora are probably the best ones though.

At this point you may be thinking...that's great for development tools, but it's not feasible for my actual game...We need to get paid! Which brings me to my second point. What is a videogame? What makes each one unique from the others? I don't think anyone could honestly say the graphics engine. What about the physics engine? Nope...those are starting to become a dime a dozen these days too. The entire game engine? Not really...the Quake 3 engine has been used for many different games, some of which aren't even shooters. It's the content that matters. It's the levels, the characters, the story, the music, etc... That's what's really valuable in your game, the game engine is merely a platform on which to build your game.

Why not make your game engine open source? Unless you think you'll be able to come up with a better engine than Epic's Unreal 3 engine or Carmack's next creation, then there's really no point in keeping it to yourself. If you're not comfortable releasing your entire engine to the public then at least consider releasing portions. Release just the rendering engine, or just the audio engine. By releasing them to the public you have much more to gain than lose. If any other developers use this engine and you have released your code under a LGPL style license, they will be required to release any changes they make to it. You couldn't quite get your normal mapping looking right? Oh, well these guys over here did, and now you're free to use it too. It may be hard to swallow, but the technology behind your game does not make it special, and if we all work on it together we all benefit and you can spend more time tuning your levels and timings. Your complete game can be released under a more restricive licence that prevents people from legally distributing your entire game of course, but the engine(s) are released under a different license. Also as I said before, this give your users a much higher longevity as when they switch to a new/different operating system, they're free to port it over themselves and can allow them to play their game for decades rather than the regular 5 year span. Most DOS or even some Windows 95 games are a royal pain to get running under Windows XP, and now the community of players can work together to bring your game up to date, free of charge.

There are a few good open source engines already out there and ready for you to use. Ogre's probably the best one I've seen so far, and Crystal Space is pretty nice as well. Need a physics engine? Try OPAL which is built upon ODE. If your looking to build a MMORPG the guys at Nevrax have released their engine from Saga of Ryzom too. Oh, by the way all of ID Software's engines, Quake 3 and older, are open sourced now too. There are tons of options already out there, but if you still want to make your own engine from scratch...releasing it as open source can benefit both you and the community down the road.

What are the drawbacks to this method of development? Well one major concern to some is that players will be able to hack and cheat easier, but has traditional closed source licensing prevented this either? Hacking and cheating are problems no matter which way you go. Luckily many resourceful security experts have had to deal with similar issues in the past on other open projects. You end up just having to be smarter than the hackers. Through clever algorithms and standard encryption and authentication methods you can make your public code even harder to crack than the normal hidden code.

Once the engines and development tools of games become more standardized and open we will all be free to explore more new types of games. Your development time will be cut dramatically and you can focus more on perfecting your games. The price and gamble of developing risky titles can drop greatly, especially when combined with my alternative funding/payment ideas.

No comments: