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
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.
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!