Skip to: site menu | section menu | main content
In order for little old me to create a little old game, complete with spiffy graphics, there are lots of other programs and tools that come into play.
The discussion of the software is intentionally basic, not because you are ignorant, but because somebody, perhaps somebody similar to the person I was only a few years ago, might wonder how to make their own game. It is also for the person who says, Hey! I could make a game at least as good as this chump!
This is my little way of saying Thank You to all the people involved in making the software below, and making it free. Yes, all of the software mentioned on this page is free.
In order to get any development done at all, one has to have a computer that can run development software - compilers, interpreters, source management, source editing - you name it. Yes, Linux is free, and if you have the time and motivation, you can get it installed and learn how to use it. There are many distributions (distros) out there, and while they share the same core functionality, Slackware proved to be the easiest one to get running on my machine. Other common distros are RedHat, Debian and Suse, which all have a strong following.
Once you have a machine to play with, you need a language to program in. Having lived through the trials of C (handle with care), C++ (still dangerous), Java (garbage collecting, but verbose), Perl (3-second script writing), and other more esoteric languages (scheme, Lisp), I settled on python for game development mostly because I wanted to give it a try and it had a ready-made game library. It turned out to be a good choice for small-scale games, because you can be as well-behaved as you want to be, or rough-and-dirty, if the whole planning thing is not for you.
For the geeks out there, python has the garbage collection of Java, built-in datatype goodness of Perl and inheritance of C++ without the manual allocation crap. Like Java, it was built to be interpreted on many platforms, but unlike Java, simple programs are actually simple and there is much less code bondage involved, except for the indentation rule.
With python comes lots of good libraries, the most important to game development being pygame. It allows for easy management of graphics and placement of those graphics on the screen via sprite classes. It doesn't do everything, but it does the basics. It is not hard to extend, in order to create reusable game objects that have realistic physics.

Once you have a language and can do basic things in a game, graphics are needed. There are several options here, but a good, free, SVG (scalable vector graphics) program is Inkscape. Freehand is an example of a commercial program of this kind.
Inkscape allows you to create graphics that are based on specifying curves and simple shapes. A surprising number of nice looking graphics can be made, even by people that aren't graphics designers. The Inkscape logo is a good example of SVG, as is the quince in the background.

The GIMP (GNU image manipulation program) is the free program similar in spirit to photoshop. This is an industrial strength pixel manipulation program, with tons of filters, scripts and a large user base. The GIMP has been around a long time, and chances are it will run on your machine with no problem. The GIMP is used mainly for editing photographs, such as in my Republican Invasion! game.

Blender is an editor, animator and renderer of 3D graphics. Don't let the million-button interface deter you - it is not as difficult as it looks. A free piece of software that accomplishes many of the tasks that Maya does, it is a startling thing to be able to create a 3D world, even if it is a very simple one. I used it to create the graphics in Circuitz.
Once the game and the graphics have been created, it needs to be packaged in a way that makes it easy for Windows and Mac folks. Not everybody has python on their computers (Mac people do, by default) and even fewer have pygame installed. These two programs will create a binary executable (py2exe for Windows, py2app for Mac) by precompiling your source and including standard python library files.
On Windows, it is nicer to distribute a installer / setup program than a zip file filled with the zillions of files created by py2exe. Inno Setup is a free setup creator program that makes localized, nice looking installers for your program. It uses a simple scripting language to specify all of the variables - from destination directories and Start menu options, to shortcuts and icons.
Once the games are made, you need a decent looking web site to help promote them. Nvu ("enn-view") is a free WYSIWYG web page editor based on the Mozilla composer. It seems to be more stable and easier to use then the Mozilla version. It isn't perfect, but the price is right.
Web development purists might poo-poo a WYSIWYG editor, but it is very handy for those of us who just want to make simple web pages with static content.
And finally, when the website is being put together, you might need some nice looking icons to represent some of the applications that you used. Inkscape, the GIMP and Blender icons are all from the Open Clip Art Library.