Three posts in one day, after such a long dry spell? Say it ain’t so!
Well, not really. After reading my last post, I thought I’d put together something that highlights some of the great free tools out there for making games. Since modern PC games are much more complex than their ancestral counterparts, many more tools, and arguably people, are needed to bring them to live. Doubly so if you’re looking to make a 3D game.
But fear not, because at least the free/open source world has got you covered when it comes to tools to help you accomplish this. For the most part, I’ll be focusing on Windows-based tools, although many of them have ports to Linux and Mac OS X.
Programming Environments/Languages
There are tons of programming languages out there to make a game. In reality, it doesn’t matter which one you use, as long as it meets your requirements.
Code::Blocks – A free C/C++ IDE for Windows, Linux (32- and 64-bit) and OS X. Very nicely built, intuitive, and easy to get around in. I used this to make Perils of Pothril and Star Merchant, so I’m not just talking out my ear when I say it’s worth looking at. A hassle-free compiler setup is something that everyone should have. C has been around since the early days of computing, and I don’t see it going away anytime soon.
Python – What can I say, except that I’ve developed a fondness for this language. The fact that it’s ubiquitous across the big 3 platforms, has fast runtime execution/interpretation, and you can make GUI apps from it make it another great language and environment. And while it does have its own built-in editor, there are a slew of them out there to make your life even easier. Personally, since I have to switch between multiple languages, Notepad++ does the job for me (also free.)
Audio Tools
Audio in games has become a beast unto its own now. Instead of driving a sound chip on a board to produce bleeps and bloops like the gaming systems of yesteryear, now you have full-on 5.1 Surround Sound with full digital playback of music and sound effects.
Audacity – I’m a few revisions behind with this, but it’s still a great multi-track recorder and editor. Add in VST plugin capabilities with multiple format outputs including MP3 and OGG, and you’ve got a real contender here. Not to be overlooked.
Oggdrop Vorbis – Not many people give the OGG format the credit it deserves. Yet I still see it pop up here and there on even some of the major studio games. It’s a venerable workhorse that isn’t encumbered by patents like MP3, has better sound quality and compression, and is just darned easy to work with. Oggdrop is a simplified interface to convert your files to OGG format, quickly and painlessly.
Graphics
I usually get flamed from “serious” artists because I shunned Photoshop years ago. Graphics work may be hard, but do you want to tie yourself to a specific (and expensive) tool in order to get the job done? What happens when you don’t have it available, or a specific job requires you to use something different?
Enter The GIMP. Pound-for-pound, it matches Photoshop in just about every feature. And if it isn’t there out of the box, you can write your own plugin in a variety of languages of your choosing, such as Python, or check out the rather large repository of GIMP plugins already made.
GIMP is great for handling 2D graphics, but for 3D there’s Blender. Takes a little getting used to the interface, but once you’ve got it down, you can crank out some great models in no time.
Libraries/Engines
There are many game programming libraries out there, too numerous to mention all of them in this post. Some only provide very low-level functionality, while others give you the kitchen sink with the faucets and pipes installed. I’ll cover some of the better ones out there right now.
SDL – Simple DirectMedia Layer. This sucker has been ported to just about every piece of hardware and operating system out there. It earns the Simple in its name by providing some low-level functionality, but also by not changing its API across any platform. And if you’re looking to use OpenGL with SDL, the library also includes special functions for doing so in conjunction with its native features.
PyGame – A Python wrapper for SDL. If you want to use SDL but don’t want to use C, then this is a good alternative for you. I’ve found that it makes SDL even easier to use, if that’s possible. And given Python’s own portability across platforms, coupled with PyGame you get a nice, multiplatform game out of the deal. Some very interesting independent games have been made with PyGame.
Allegro – This one has been around for a long time. Its longevity should speak to its strengths. I remember bashing around in Turbo C++ with Allegro in DOS, trying to get to that elusive Mode 13. Things have gotten a lot easier since then, and so has Allegro. Works in DOS, Windows, OS X, Linux, and other various flavors of UNIX.
Panda 3D – First developed by Disney and now under the stewardship of Carnegie Mellon University, this system gives you almost everything you need to make a modern 3D game. I call it a system because it’s more than just a library of routines. It’s a cross-platform set of tools, including Python, used to develop a 3D game in all of its aspects, including mesh manipulation, lighting, sound, the whole nine yards. And it is fast. Don’t let the fact that you can use a scripting language like Python fool you; the parts that need optimizing the most are written in C++ but kept thankfully shielded away from the Python programmer.
wxPython – While technically not a game programming library, it is a cross-platform windowing toolkit that is both lightweight and easy-to-use. Again, if you’re a Pythonite, you might be tempted to hit up pyGTK or even TCL/Tk something else for your GUI needs, but this one definitely is worth a look at.
The Future
Anybody who has the desire to make a game can do so without spending a lot of money. That much has been proven time and time again. Heck, I’ve seen people write whole screenplays on their T-Mobile phones. If you’ve got the drive to do it, you can use whatever you need to get the job done.
At this point, I’ve decided that Chromasphere will be built using Python, Panda3D, Blender, and a few of the other tools listed above. This isn’t really a formal announcement or anything. I’ve seen the power that these tools bring to the table, and I’d be a fool not to work with them.
There’s also a certain principle I’d like to prove with this, that a good, solid, high-quality 3D game can be made using nothing but F/OSS tools and good old-fashioned know-how. It may take a long time since I’m doing it myself, but it will get done.