Project Overview

The goal of this project is to develop a class hierarchy that represents the overall interacts of a game and allows a programmer to do the least work possible in developing a new game. The idea outcome would be a game programming interface which allows game developers to describe their game idea to the computer in a simple manner and have all of the implementation details taken care of automatically. Obviously this ideal is out of reach, but we can try to get as close as possible while keeping this idea in mind as the holy grail of game library development.

Since a game programming interface is no good unless there is some underlying framework to handle the graphics, sound, input, network, and other implementation details, and since developing such an engine in beyond the scope of this current project (besides there are plenty of excellent engines out there already that can be used for free!) I have decided to pick a library for use in testing the GPI as it develops.

At this point I am leaning heavily toward ClanLib since it works under multiple platforms and APIs and is free. This choice is by no means set in stone. The purpose of this project is to develop a class system that allows games to be easily implemented, it is not suppose to be a library for graphics or other programming elements. For this reason, it should be relatively easy for anyone to port the GPI framework to use a different underlying library or even develop a new library that has been specially optimized to work with the GPI framework.

The most important element to this project will be the development of actual games! As the GPI evolves, I would like it to be used as much as possible in a wide range of game development environments so that it can be thoroughly tested out. For this reason, I will strongly encourage individuals or teams to undertake projects with the developing engine. I will post the finished games (along with source code if that's ok...) so that everyone can see what's possible.

The final element of the project will be the feedback from the development of these games. By finding out what is working and what is not in the earlier versions of the GPI it will be much easier to correct design flaws before they get out of control.


Method

A general purpose GPI as described above is quite a lofty goal and much too much to try to create in one fell swoop. For this reason I have developed the following plan of attack. The GPI will evolve along the same lines as the games described in the How Do I Make Games?: A Path to Game Development article by Geoff Howland over on the GameDev website. It is an excellent article and I plan on following the path it suggests pretty closely.

The first objective for the project is to develop as general a framework as possible for a Tetris clone type "Falling Blocks" game. From this basic framework I will be developing a game and I hope that I can get other people to do the same. This development portion of the process will be very important since it will display the strengths and weaknesses of the current system. As games are completed I will post them (or links to them) on this site and use the feedback from developers to revise the GPI engine.

Next, the GPI framework will be extended to deal with a Breakout style game and the development and revision process will be repeated as above. The process will continue through Pac-Man style games, platform scrollers, and then beyond (tile engine, 3D, etc... the possibilities are endless)

At each step the engine will become more generalized and powerful as it approaches that Holy Grail of game developers which removes all unneeded programming and allows faster development times and higher quality games to be produced! :)

On to the design!